What is front-end development?
Front-end development plays a key role in the production of any website or app. But as the role has evolved, there’s very little consensus around what a front-end developer actually does.
The current confusion around this role seems to stem from the trend of conflating front-end development with JavaScript development. This implies that front-end development is now only about writing JavaScript—and while that may be true for some front-end developers, it’s definitely not true for all.
A possible definition
Front-end development is an exciting melting pot of opportunities for problem solving. It’s not just about writing JavaScript using the latest cool framework, and neither is it just about being great at HTML and CSS.
I believe that the role is about understanding a diverse set of requirements (including user experience, usability, accessibility and performance) and working out how best to meet them. Doing so involves much more than just writing code.
I think a good front-end developer requires a broad range of knowledge and skills:
- Understand user behaviour to inform the development of interfaces that are intuitive, robust and delightful
- Build fully functioning user interfaces and prototypes (in collaboration with Designers and UX colleagues), including translating designs from provided visuals
- Fully understand the HTML and CSS specifications (and keep up to date with the recommendations)
- Write semantic HTML documents that follow accepted standards, including document outlines and accessibility requirements
- Understand progressive enhancement and graceful degradation and know when to use either methodology
- Understand how to provide usable experiences across a range of devices, screen sizes and legacy browsers
- Improve UI performance through appropriate optimisations for any given situation (desktop, mobile, low bandwidth, etc.)
- Be involved in user-testing and analysing test data to inform improvements as part of an iterative development process
- Be detail and quality focused and always be learning
Many front-end developers also have a good eye for layout, typography, grid systems, colour and general good design. While that’s not essential it can help considerably when building a consistent experience that matches the designer’s vision.
Tools and techniques
But what about coding languages, tools or techniques? Of course it’s absolutely vital that you understand the technologies required to do your job, but that’s really a minimum expectation. Learn what you need, but don’t mistake your technical ability as being the most important part of the role: it usually isn’t.
As an industry we get so hung up on tools and techniques that we often forget about the end goal: to produce work of purpose and value. And how do we do that? By applying our skills in critical thinking and problem solving. Those are the primary skills required: the tools and techniques you use to get there are secondary.
A meaningless title
I believe the Front-end Developer title has become too broad to be useful. Some FEDs might do all the things listed above, while others might specialise: some focus on writing hardcore JavaScript apps; others focus on writing highly semantic HTML and cutting-edge CSS; others work more with design teams to solve complex interaction problems through iterative prototyping. The list goes on.
Using a broad title can cause problems for recruitment too. The variety of jobs being described as front-end development is astounding. Most of these job adverts are laundry lists of technical skills, and include requirements as diverse as “Five years experience writing commercial PHP” or “Angular.js Ninja” with barely a mention of the broader skills that I would consider a core requirement.
The biggest offenders are adverts seeking JavaScript developers. A good JavaScript developer is more likely to have a deeper understanding of the language that goes beyond what a typical front-end developer is likely to know. A good FED may be a great JS developer, and vice versa, but I think it’s misleading to conflate these two skill-sets. I mused about it on Twitter and received some interesting feedback:
I think the web industry should stop advertising “Front End Developer” roles when they’re really looking for hardcore JavaScript devs.
If you’re looking specifically for a top-rated JavaScript developer, you might find better candidates using a job title like “Senior JavaScript Developer”. This will also help broad-skilled FEDs to stop wasting time looking at the wrong roles.
Is there a better title?
I’ve come across a number of job titles that seem a more appropriate match to my understanding of the front-end Developer title:
- Front-end Designer
- Front-end Experience Designer
- User Interface Designer / Developer
- User Interface Engineer
These titles focus more on design/experience but they don’t quite communicate the variety of disciplines encompassed by the modern front-end developer. But I think these titles may be better than what we have. I think that the focus on design and UX is more appropriate than the focus on development because the FED role is about much more than just coding.
I hope that in future we’ll start to see a more appropriate job-title which will help to remove the confusion from the industry. For now though we should remember that front-end developers can have a broad set of skills and shouldn’t be seen as only ‘writing code’. Let’s make sure that we understand each individual’s own strengths and interests and the unique value that each of us can bring to the development process.
NOTE: I originally published a different version of this article on Medium on 4th July 2014. This new version has a clearer introduction and a number of semantic and grammar adjustments.