Skip to content

Gatekeeping and framing in web development

The web development world is filled with posts and hot takes that don’t seem rooted in much truth. Hot takes get clicks and shares, and they seem to really help people in this industry gain traction and fame. Often at the cost of undermining others. This is very much the case in the endless debate surrounding vanilla CSS and Tailwind.

What is going on?

In case you’ve missed it - and I sincerely wish this wasn’t the case - the frontend world can be roughly divided into two camps: people that write websites with either vanilla CSS, and people that create websites using Tailwind. In both cases you leverage CSS to style a website, but there’s a matter of preference regarding where you want logic to be applied within your website.

The reason for this division seems to come from the language the Tailwind team uses in their marketing. They often portray CSS negatively, suggesting it is something to be avoided. Completely disregarding the fact that there’s a lot of people making their living writing CSS. It’s been around for over 27 years and is constantly being improved upon by very smart people.

I think it is a good thing that these concerns get voiced. It would probably help if the Tailwind team didn’t completely ignore them. They should stop doubling down on the anti-CSS culture they’re feeding. I think a great start would be to diversify their team so that more backgrounds, genders and cultures get a root in their company.

In response to their marketing, it became fashionable to bash and joke about Tailwind and their users. Their users often get generalised as well.

Why I use Tailwind

I’ve been in frontend development over twenty years, and a couple of years ago, after initial resistance, I made the switch to use Tailwind for my websites. As with any software, using Tailwind has pro’s and cons. The advantages became clear to me quickly. It made me a faster developer, without sacrificing quality. I find it a lot easier to go back to old projects do maintenance and updates. The coupling of styling and logic in single component files makes a lot of sense to me, and it enables me to spend less time on coming up with class names and creating and linking files. On top of that, Tailwind gives me an easy to grasp design system that I can customize for whatever a project needs.

There are a lot of tools out there that solve problems you don’t actually have. Tailwind might indeed be one of those tools for you. This is fine. And it should not be a reason for me to assume you create bad projects. You just have a different approach to get to similarly great results.

The problem

In response to Tailwind’s marketing and some religious defenders within their user base, there’s people constantly trying to prove why Tailwind is a bad idea and why it shouldn’t be used. There are articles and posts out there that don’t shy away from nasty words, insults and a generalisation of their users. I don’t want to name and shame people here, but comments I often read boil down to sentiments like this:

  • Tailwind is great for users who don’t understand or want to learn CSS.

  • Tailwind users are bad and lazy developers.

  • Tailwind users don’t care about accessibility.

  • Tailwind users don’t care about web standards.

  • Using Tailwind is not craftsmanship.

You would never hear me say something that generalising about vanilla CSS users.

There’s a lot of articles and website out there dedicated to bash on Tailwind and their users. I have over a decade of experience in writing vanilla CSS and I love CSS. I always was very proficient in it, but I started using atomic CSS with great results. This very often goes unsaid by the semantic CSS proponents. I still write CSS but with an abstraction layer on top that really helps me. The websites I built have a low carbon footprint, they are performant, accessible, look good and do well in search engines. I take pride in my craftsmanship.

One common complaint about Tailwind’s marketing is that it uses false examples to argue why regular CSS is inferior and Tailwind is superior. I don’t like this. It’s lazy and uniformed, and I think the Tailwind team should just focus their marketing on what makes Tailwind great. However, the reverse is very much true as well. Only recently an article got shared that compares Tailwind with vanilla CSS, but unfortunately it turns out to be an unfair comparison. However, this article got as religiously shared by people within the vanilla CSS community. Just as some Tailwind devotees defend their tool on social media.

It’s easy to just look at the HTML that Tailwind produces and draw conclusions based on that. What a lot of the critique doesn’t seem to understand is that it’s not about what comes out, it’s about what goes in. In my process of coding websites I simply move the abstraction layer from CSS to template logic. This creates very isolated components that combine styling and logic within a single file, making them easy to grasp. There is still systematic thinking, the logic is just moved somewhere else and not immediately visible in the CSS. Apart from that, there’s nothing stopping you to embrace the cascade in parts where this makes sense to you.

You can do all this with CSS, yes of course. It just turns out I’m faster and more productive using a this different methodology. And I enjoy it more.

In conclusion

My wish for this whole debate is for it to go away. And I hope people can stop framing Tailwind users in a negative way. If you continuously get riled up about Tailwind users defending the framework to death on Twitter, why take it upon your responsibility to constantly talk it down, and with that gatekeep “real” web development? This hurts our industry just as much as Tailwind framing CSS to be a bad thing. Let’s just accept that with both methodologies, people can create beautiful, well functioning, adapting, fluid, accessible and performant websites? I wish for both communities to just focus on the strengths of their own toolsets.

Photo by Peter Herrmann op Unsplash

Stack utilities to space page builder blocks

  • Statamic
  • Peak
  • Tailwind CSS
  • CSS