A possible definition
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
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.
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.