Adrià Fontcuberta

Are you a frontend developer or a frontend developer?

The current big topic in the frontend community is not… new. However, CSS Tricks spiced everything up with their last post, called The Great Divide.

In short, over the years, a lot of responsibilities moved from the backend to the frontend. This completely changed the required skills for the folks working on it. Whether we like it or not is beyond the scope. It is what it is.

Some years ago, Frontend was in charge of adequately displaying layouts, by making them useful, accessible, pretty. That was it. It used HTML, CSS, some backend language (mostly PHP), and a little JavaScript.

Then, JavaScript at it all. It opened a whole new world which was only dreamt during the jQuery era.

Nowadays, UI engineering has become an entangled field with tons of different visions, names, roles, and responsibilities.

Dan Abramov’s post The Elements of UI engineering names a few of them.

Does the UI of Google Photos look simple? Yeah, it does. But it isn’t.

“Oh, you do CSS? Then you must suck at JS”

And the other way around. This is a reality. Not that CSS people suck as JS, but that the feeling exists. We (as an industry) tend to assume that people working with CSS will suck at JS and that JS-focused engineers have no fucking clue about CSS or accessibility.

I believe this is due to the growth I mentioned before. Requirements grew and expanded, and so did the platform and the tools we use on it. Nowadays, our field is so vast that a single label doesn’t cover it all.

Job offers (and people writing them) should bear this in mind. If you ask for a “Frontend developer”, will you feel comfortable with a CSS-focused candidate, or vice-versa?

We put JavaScript in the JavaScript so we can JavaScript while JavaScripting

One of the trends in the industry is to JavaScript all the things.

We are adding steps between the code we write and what happens in the browser. JavaScript is pushing us away from reality. For instance, CSS-in-JS solutions allow developers to write JS and get CSS in return.

I understand it might become a gatekeeping situation. You are no longer working with the “simple” stack of HTML, CSS, and some JS because now almost everything is JavaScript. It’s not only the language, but the whole ecosystem of tools, and building steps.

People “only” knowing HTML and CSS well might feel the imposter syndrome, as they don’t know enough to be called Frontend developers. Even if they are.

On the other hand, some Frontend engineers I know can configure a whole babel+webpack+eslint+prettier+jest environment, but can’t vertically center a <div>.

Are both cases OK? Of course. I guess so.

Would they benefit from learning the reality of the overlapping tools of their daily job? Absolutely! As everyone else would.

JavaScript looks hard and makes you look cool. We love complex things because we feel special working with them. We use complexity to convince people they cannot do our job.

HTML and CSS look simpler next to it, even though they are not. I’ve seen some developers feel superior to their peers because they can JS. It is weird and plain wrong.

My take

We are entering the era of the “T-shaped Frontend Engineer”. You can’t be amazing at everything. Our field is too large, now. You can know your shit quite well, and be aware of everything else. Know your circle of competence, and try to expand it.

Again, whether you like it or not is not the point. You can fight the status quo (that’s good), but reality tends to be stubborn.

You should specialize in the field you enjoy the most. Or, put the way cool kids talk nowadays: you should specialize in the area that sparks joy (Thank you, Marie Kondo. You already ruined 2019).

Want to focus on JS? Please, by all means. But don’t forget the accessibility issues you might run into if you don’t pay attention to your output. And bear in mind that CSS is inevitable. And please, please: Watch out the performance issues you might run into. And avoid overengineering at all costs.

Want to focus on CSS and HTML? Please, by all means. But don’t forget that most websites and applications require a level of interaction and complexity that can only be achieved with JS. And understand that JS frameworks are in a unique position to create a path of success for apps and developers. The starting point may seem daunting. But there are tons of good practices backed in them. It would be foolish to ignore them just because “it was simpler 10 years ago”. Also, accessibility should be a concern.

We share the same goal: to create useful and accessible User Interfaces for our products.

JS is not at odds with HTML and CSS. They work together, so we should be able to understand them all, and get the better of each world. Learn as much as you can. It has never hurt anybody, huh?

And don’t even get me started on the Full-stack engineer stuff. “Full-stack” usually becomes the short version of “I’m a backend, and I think HTML and CSS are simpler and inferior, so I can easily write them. But then I’ll com crying saying the CSS is broken”. So don’t get me started.