New post, kind of weirdly personal-feeling one. I don't know if it'll land with you, but I hope it at least gives you something to consider.
New post, kind of weirdly personal-feeling one. I don't know if it'll land with you, but I hope it at least gives you something to consider.
@collinsworth I've been writing CSS / front-of-the-frontend for 25 years or so.
It's something I've battled over the years. I don't think this is anything new though, or that it's necessarily gotten any worse. I think the rise of libraries since Bootstrap forced a lot of people to not actually learn CSS, and it feels there are less practitioners (especially in Design).
Some positivity. Outside of some Python folks, no one else can say their primary programming lang is the same as 25 years ago.
@collinsworth The conversations I get into advocating the beauty of HTML & CSS! When implementing them myself.
Really comes to a head in the arguments over Tailwind I find...
@collinsworth Excellent post, and I've certainly felt this devaluation as well.
Ironically since most of what I do is #JavaScript tooling ("back of the frontend") I can sometimes feel a little overvalued compared to the UX/a11y/design work ("front of the frontend") that others do. I see how much more effective they and the impact they have, yet others don't consistently see the quality difference they can produce.
Want me to set up a reproducible build system and bundler toolchain for your web project? No problem!
Want me to make your site accessible to a screen reader? I'm gonna need some help, I only know enough to know that I don't know enough.
Yet people don't think of those roles as a separate, independently valuable skillset. They think one person should be able to do all of this, quality be damned.
This feels like a very similar dichotomy between the "front of the frontend" and "back of the frontend" (albeit less severe than backend vs frontend).
@collinsworth your post definitely resonated with me.
I've been a software developer for 20+ yrs and have put in my time in pretty much every part of the "the stack." But no matter where I work, I almost always end up being the only one (or one of the few) who enjoys spending time working on the front end. And I do enjoy it quite a bit.
Gradually, I've seen JS accepted as a "real language", but HTML, CSS, a11y. An afterthought. "Pixel pushing".
@collinsworth That’s a really good piece. The only thing I’d disagree with is “CSS is the only language that gets blamed when the author is bad”. You are in an unenviable gang with PHP (and back in the day, Visual Basic). Languages lots of people know how to do badly but not enough people take the time and effort to do well.
I speak as someone who has always done CSS badly.
@xurble @collinsworth I find that in CSS consistency goes a long way.
If you do CSS "badly" but always in the same ways, I bet I could dive into your codebase and get to work right away.
In contrast, it's almost impossible for me to determine a good way to write CSS.
@collinsworth I think the boring parts of frontend work have gotten too complicated. Every site needs buttons, cards, and menus, but the reusable options out there are still too hard to integrate with the rest of what we’re building (or are too hard to theme). We spend too much time reinventing the wheel, so we don’t have the energy left for the art.
Sure, css is amazing now, but it’s really hard to integrate all that new stuff with react (which is a React problem, not a css problem)
@ianwremmel @collinsworth part of that complexity in my view is design systems themself. Effectively, you are working a waterfall project while pretending to be agile. I mean, before build the 'designer' crafts every button instance, state, size, colour. Which is mad.
Build a button. Make it work. Then add the style layer as required - CSS is extensible for god's sake.
Add most importantly, devs and designers. Talk to each other, all the time. Find the gaps in each others knowledge.
@ianwremmel @collinsworth I agree, and two causes come to mind:
1. The global nature of the presentation layer has traditionally made it difficult to share discrete components (ESM, Web Components, and more recently scoped CSS and declarative shadow DOM will help)
2. The failure of Web Components, which I blame on a combination of the spec not being ready combined with Google's overzealous pushing of it. Web Components felt more like a Google side project than a proper W3 standard.
@collinsworth Bang on.
People complain about CSS yet spend hours abstracting CSS variables into design tokens, then assigning absolute values to them. Huh?
The 'i could do that' urge is strong.
@lukechannings @collinsworth my point - badly made - is that people may subconsciously think 'I could do that', yet assign absolute values like padding and margin in Figma which shows right out of the traps they can't. Or, derive colour values programmatically that create contrast problems across a design.
Both examples I have experienced, repeatedly. Hence, collaboration and communication is really what needs to be valued.
@muddymoles @collinsworth I get you. CSS is collaborative and social in a way that most other languages aren't.
Because everything is global, inexperienced or lazy UI devs will hack their thing until it works, and if any shared styles are involved it can quickly become whack-a-mole of !important and z-index++.
shudders
Probably the rise of tools that offer easy drag and drop for anyone to use, thinking that the point of a website is just to look nice on the first glance.
@collinsworth I enjoyed this a lot. As a backendie™, I see similar pressures to “just get it done”, which comes out in the endless cycles about technical debt, and so on. I don’t think our $$$ overlords see quality, anywhere, as a source of competitive advantage.
Thanks for posting!
@collinsworth Fantastic post, and I couldn’t agree more.
In my last role I was one of only two Principal FE devs compared to 19 Principal BE devs.
When layoffs hit in December we were shown the 11 roles that would be remaining for the 21 principals and it was immediately clear leadership had completely forgotten about the front-end discipline when planning these roles as there was no mention at all of FE at any point. Design system, FE tooling, all forgotten about.
While leadership did half-heartedly backtrack on this when we pointed this out to them, the writing was on the wall.
Myself and the other FE principal took voluntary redundancy and left of our own volition since it was clear that FE was undervalued (barely valued?) within the organisation.
I’ve never seen anyone state it as explicitly as you did in this post, but I agree that this bias does exist within the industry.
> But when did speed become the main concern? And why?
And ironically the frontend built with speed doesn't even run fast XD
@collinsworth In my experience, I see a lot of BS hitting us frontend developers.
The point about visual/art things being devalued is totally true. My previous job had a higher-up who was unable to write complex frontend code, but was able to do trivial stuff and that was enough to convince themself of how easy we have it and how lazy we were.
I also find that places without proper bug triage processes start by blaming frontend, because that's who wrote <H1>Server Error</H1>
@collinsworth I've seen this a lot but I also know I do the same thing to back end folks, "just pull this from the database and put it in this shape for me, how hard can that be?"
Humans tend to think that whatever we're focusing on is the important part. Sometimes turning the tables in a cheeky way can actually increase mutual understanding.