CSS dismissal is about exclusion, not technology
It's that time again.
Regular like clockwork, it seems to happen each September.
Something happens, and suddenly webdev twitter is taken over with a battle royale over the value of CSS.
Time for half the front-end development world to dismiss the value of the other half.
I checked, it was exactly 1 year ago I was inspired to publish CSS in JS is like replacing a broken screwdriver with your favorite hammer.
Certainly provocative. Met with strong opinions on both sides. And completely ineffective in changing anyone's mind.
There have since been better snarky takes on the argument. Better technical explanations of the value of CSS. Better implementations that take the best of both CSS and CSS-in-JS into account.
But nothing has changed in the discussion.
Last week the trigger was a simple poll on CSS specificity - and the responses to said poll.
Responses like this were common:
FWIW: mentally parsing CSS specificity rules is a skill I don’t want my employees and coworkers to have. Please fill that brain space with more useful material! :) https://t.co/6eOJx0Gvfh
— son of ja (@rhodesjason) September 8, 2018
Snarky responses abounded throughout both sides of the debate, with exchanges like this common:
Ok so our job as React developers is not to become _this_ when someone creates a better way of doing something. https://t.co/8Tq8gXNjLl
— Josh Comeau (@JoshWComeau) September 9, 2018
While both tweeters in that discussion quickly walked back the tone of their arguments, it's time we had a discussion about what's really going on here:
This isn't about technology
If it were about technology, we'd see more acknowledgement of the context dependencies.
There are clear situations in which CSS in JavaScript is a necessary solution. Large teams, very large projects.
There are also example after example where not understanding the fundamentals of CSS shoots developers in the foot.
General contractors don't dismiss the value of hammers because they have power tools. They acknowledge that different tools are important in different situations
So what is it about?
It's become increasingly clear that the "debate" about CSS is not about technology. It's about gender privilege and exclusion.
As a community, we love to talk about meritocracy while perpetuating privilege.
This is playing out in full force in the front-end development community today.
Front-end development is a part of the field that has historically been at least slightly more accessible to women.
Shockingly, (not!) this also led to a salary and prestige gap, with back-end developers making on average almost $30,000 more than front-end.
Changing importance of frontend
These days this value and prestige gap is starting to close. Businesses are increasingly realizing the importance of the front-end for success.
Increasing value has led to increasing numbers of jobs, with JavaScript being the top-desired software skill in 2018.
We've seen this before: Rising Importance Leads To A Takeover Attempt
This increase in importance has led to a rush by traditionally priviledged groups to take over the "ownership" of front-end development.
We've seen this play before.
When programming originally arose as a profession, it was dominated by women and considered a low privilege job.
As the importance of programming rose, men deliberately pushed women out by pushing "aptitude tests" including personality profiles that systematically excluded them.
"Real programmers" were antisocial, geeky, and only cared about computing. If you didn't fit the profile you didn't belong.
The parallels are striking
With the growth of the importance of front-end development, we're seeing the story play out again.
The systematic devaluation of CSS, and more, the people who use CSS.
The constant "mansplaining" of CSS features to women who literally are the reason it exists.
Conference speakers asked questions about whether "there is any value in people who cannot write JavaScript?".
All of this at a time when CSS is improving faster than ever and enabling dramatic changes in web design.
This isn't about better technology, it's about exclusion.
It's time to stop pretending
An honest discussion of the technologies involved would highlight the importance of context to deciding which tools to use.
The medium of the web is HTML, CSS, and JavaScript. Each has important roles to play. There are tradeoffs to each.
The power of JavaScript is that we *can* embed everything else in it. And occasionally, that will be the right answer.
But the incredible success of the web is based on an architecture of least power, taking advantage of how many more machine optimizations can be made around the less powerful languages of HTML and CSS.
All have their parts to play. Engineering, after all, is the art of managing tradeoffs.
That's not what we're seeing here.
We're seeing a power play, trying to once again push people out of the industry by pushing a particular approach (and an opaque one at that) as the only "real, valuable" approach to front-end development.
Let's call a spade a spade.