Is the title Front End Developer obsolete?
Edit: Since writing this, Brad Frost (of Atomic Design fame) published a fantastic article on this topic. He says it better than I ever could.
I recently had an interviewer ask me a question about authorisation security with an application I had worked on. I described it something like so:
- JWT auth token is requested using the users credentials to the back end.
- The Angular Authentication Service checks the token.
- If a valid token isn't returned we don't let the user in.
- If the token is valid, we let them in.
The interviewer didn't seem content and pressed me for more detail about how the Auth service works "under the hood". I replied simply, "I don't really know how it works under the hood, I don't need to as long as it works." Was it the wisest answer in an interview? Probably not, but my point stands. I could have gone into more detail about RxJS Subjects and Observables storing the user object and notifying components or how the token is checked.
I'm not arguing that a good fundamental knowledge isn't important. I think you should learn the basics of JavaScript before you diving straight into a framework like React or Angular. However the frameworks are there for a reason. They abstract away a lot of complicated, repeatable issues developers encounter.
The fact is I personally don't need to know how it works under the hood. The engineers at Google who wrote it are going to have a much greater understanding of it than I ever will, I frankly I'm not that interested in how it works. I'd rather implement it as Angular recommends, and go back to more interesting tasks.
There has been an increasing issue where "Front End" just means anything to do with the browser or web. The shear amount of knowledge a Front End Developer apparently needed to know is so vast as to be impossible. Off the top of my head I can list:
- Semantic markup
- CSS
- CSS preprocessors
- JavaScript
- Cross browser support
- APIs
- Whatever JS framework is the current flavour of the month
- Content Managment
- Redux/Reactive Programming
- Responsive Design
- Accessibility
- Internationalisation and localisation
- Git
- Unit Testing
- E2E testing
- Performance
- Templating
- HTML Canvas
- Animation
- SVG
Front End Development spans two very different types of work - Design and Software Engineering. Chris Coyier of CSS Tricks speaks about this in his excellent article The Great Divide.
The divide is between people who self-identify as a (or have the job title of) front-end developer, yet have divergent skill sets.
On one side, an army of developers whose interests, responsibilities, and skill sets are heavily revolved around JavaScript.
On the other, an army of developers whose interests, responsibilities, and skill sets are focused on other areas of the front end, like HTML, CSS, design, interaction, patterns, accessibility, etc.
He raises the point that the term "Front End Developer" is so broad as to be useless.
In a comment on a different post on the topic, the user Steven David commented
Most people are not amazing at both JavaScript and CSS. Let UX Engineers work closely with UX/Design to create great designs, interactions, prototypes, etc. and let JavaScript Engineers handle all the data parts.
So sick of being great at CSS but being forced into JavaScript. I’m not a programmer!
Likewise, there are many developers who coming from a more Computer Science background, who are very comfortable in JavaScript, but would struggle with the most basic of CSS - instead relying on computationally expensive JavaScript. Or important issues like responsiveness, speed, and accessibility never being a consideration.
Many developers don't want to touch databases directly, which is fine, so we separate that out to Database Architects. As JavaScript becomes ever more popular, we have Front End developers needing to understand and practice architectural principles that were traditionally in the domain of back-end developers, such as API design and data modelling. This isn't even getting into the stress that is keeping up with new technologies and frameworks under the fear of your skillset getting stale.
So why do we group all this under one title?
A few companies are starting to recognise this issue. Google now has a UI Engineer role which sits closer with designers, earlier in the process.
This harks back to my point in my first ever blog post where I raised the point that having someone with developer experience can help catch or solve issues much earlier in the design process, which is a lot cheaper than waiting until it lands on a engineers desk in the middle of a sprint.
Maybe it's time we look at the term "Front End Developer" and have a think about what that really means.