A while back I read The Great Divide by Chris Coyier and the ideas expressed in the piece have been stuck in my head since then. I have been thinking a lot about the divided that Chris describes between “Javascript Engineers” and “UX/UI engineers”. Frankly most of the rest of this post will not make sense if you don’t read “The Great Divide” first, so please read it. It’s okay I’ll wait… Done? Great! Wasn’t it an interesting read? Did it get you thinking about what being a front-end engineer means?
The undervalued skills
Let me start by establishing some common ground with Chris here since I don’t fully agree with him on everything.
As an industry and discipline we have kind of forgotten the importance of HTML, CSS, accessibility, UX, semantic markup etc. As described in the post we value Javascript knowledge and skill disproportionally. When this happened is a bit unclear, but with it came big frameworks like React and complex build pipelines like Webpack.
With the rise of Javascript ideas like progressive enhancement and performance have also been relegated to the backseat.
Another interesting read on this topic is HTML is the Web by Peter Lambert, it describes how knowledge of semantic HTML, HTML in general and CSS is declining with the rise of frameworks like React and Vue. Knowing div
and span
is seen as enough because you are not writing a HTML document you are building a React app.
A walk on the native side
An idea that is repeated in “The Great Divide” is that we should embrace the divide and create specific roles for the different skill-sets. Here I disagree and the reason I disagree is because I am a full-stack developer.
One of my immediate thoughts after reading “The Great Divide” that has been stuck in my head since is: As an iOS engineering you have to care and be good at all of it. General purpose programming, UX, networking, UI, accessibility, layout, testing etc.
As an iOS engineering you have to care and be good at all of it. General purpose programming, UX, networking, UI, accessibility, layout, testing etc.
I have worked as an iOS engineer for significant chunks of my career and on iOS there has never been a divide because to be a great iOS engineer you have to know it all. I believe this is down to the history of iOS and other native platforms which all have and always had an turing complete programming language at the core. You couldn’t be an iOS developer who focused solely on layout, UI, and UX because it always required knowing Objective-C and programming in general.
The great embrace
This all leads me to believe that the conclusion is that we need to embrace the change that has happened to the front-end role. If iOS engineers can do it, why not web front-end engineers?
Not to say that you should not have people who are specialized within your team. For example my team has varying levels of accessibility knowledge with some members being the team’s experts.
In conclusion the role of a front-end engineer has grown and being a good programmer is now also a requirement, but crucially being a good programmer is not enough you should know HTML, CSS, accessibility, and ideally have an eye for good design too.