The answer you'll likely find to the post title will be something along the lines of “Someone proficient in HTML-CSS-JS, who can convert PSD files to pixel perfect websites”. Unfortunately, while this is a decent description, we are severely undermining how big and great JavaScript has gotten.
That big that it’s everywhere. A front-end developer utilizing a stack of
React
, Styled-components
, Next.js
, Prisma
, serverless
can ship an MVP in no time. The JavaScript tools we have available are just too good. And they are getting better! That's a fantastic time to be a developer, but I can’t help to feel that we lost something along the way.
During my career, I was expected to build apps with React
, Redux
, Express
, Webpack
, and then go build websites with responsive typography and smooth animations. Release React Native
apps, and then spin off landing pages with accessible and semantic markup.
I struggled a lot, feeling that I can’t keep up. The more I focused on the “back-end” of the front-end, the more I felt out of touch with CSS. The more I wanted to master app architecture & performance optimization, the more I distanced myself from creating kick-ass animations.
I felt that I was the one at fault until I realized that it’s impossible to cover everything. We are shoe-horning many aspects of web development into a single job title, that's it’s impossible to ever feel that you master front-end.
The confusion
Client-side !== Front-end
We mistakenly label anything that runs in the browser (client-side) as "Front-end". Some years ago, that would be true, as the code in the browser would only:
- Account for how the page looks & feels
- Handle the user interactions
But technology evolves and we rightly demand more from our applications. Eventually, we delegated part of our business logic that would traditionally live in the "Back-end" (server-side), to browser-code.
We started introducing state-management libraries (Redux
, MobX
, Zustand
), solutions to optimize the data flow (Apollo Client
, React-Query
), and got creative with our CSS (Styled components
, Fela
). Add TypeScript
, RxJS
, Webpack
, Docker
to the mix too. The front-end tool-chain got quite big.
This meant that the modern front-end developer should also be skilled in data structures, algorithms, and scalable architecture. Oh and functional programming.
This created a huge confusion for people who didn’t have a solid programming background, and only cared about HTML, CSS, design & animations. They got side-lined by essentially back-end developers whose primary programming language was JavaScript.
The problem
The modern Front-end Developer title is a jack of all trades, or even better a JavaScript Engineer. I feel blessed working across the stack, being part of an ecosystem that is always looking to disrupt. But this has some shortcomings:
- Junior developers have no idea where to start. We expect too much.
- Accessibility becomes an afterthought if considered at all.
- Excellent professionals feel impostor syndrome due to the overwhelming context.
- Subpar front-end experiences. Consider serving a website holding critical info during emergencies with a 2MB JavaScript bundle.
With JavaScript taking over, we, unfortunately, have succumbed to mediocrity. We miss proper craftsmanship. For the modern front-end developer writing CSS & HTML is a necessary evil. Something easy.
This became more apparent to me while reviewing candidate assignments. People know React and can reason about the state management options, but fail hard in CSS. Algorithmic skills matter more than proper templating.
And eventually:
- Those who don’t like JavaScript, are forced to adapt and follow along producing poor code.
- While those who love JavaScript, assume what they know in the HTML/CSS-sphere is good enough, producing yet again poor code.
Quoting from The Great Divide:
Quote“Two “front-end web developers” can be standing right next to each other and have little, if any, skill sets in common. That’s downright bizarre to me for a job title so specific and ubiquitous. I’m sure that’s already the case with a job title like designer, but front-end web developer is a niche within a niche already.”
Should we keep calling ourselves Front-end Developers?
I believe no. Having UX Developers & JavaScript Engineers rings more true to my ears. Companies that operate on a large scale, have already some sort of distinction like that. Medium-sized start-ups not so much, they won’t hire a specialist.
But again this isn’t about what title to slap on your LinkedIn profile. We need to understand that just because JavaScript can be written everywhere now, that doesn’t make someone a front-end developer.
That "good enough" is almost always bad. Before no-code takes all of our jobs, let’s stop the gatekeeping, and accept that the mythical Front-end developer ninja died a long time ago.