Recently I’ve been reflecting on what we front-end developers do in the modern era. Working on a design system in 2022, I feel now more than ever that my job represents a convergence of a range of interesting disciplines, goals, skills and experiences. These include UX knowledge and usability testing, a degree of design savvy, systems and atomic thinking, accessibility knowledge and strong skills with the core web standards. That’s my understanding of front-end development.
Yet not long ago a colleague recalled the time a teammate teased him that front-end developers “put the froth on the cappuccino”. While this gave us all a laugh, I imagine it also reflects one common misunderstanding and undervaluing of our role.
Meanwhile there’s another image of front-end development that’s very engineering rather than user experience oriented. This focuses on JavaScript and tooling and arose in the era of NPM and JavaScript frameworks. In this definition, front-end developers spend their time wrangling JavaScript, configuring build tools and manipulating API data.
I’m conscious of the great divide and while my career has straddled that divide, I’ll freely admit that at heart I’m a front of the front-ender.
Here’s a description of a “Design System engineer” that I recently compiled during while my team were recruiting for a software engineer:
- Very strong knowledge and understanding of the core web standards: HTML, CSS and JavaScript
- Strong appreciation of the need for appropriate HTML semantics to achieve resilience and accessibility
- Understands component-based architecture and delivery including concepts like atomic design, composition, variants and versioning
- Advanced understanding of web accessibility including how to create accessible interactive components
- Excellent attention to detail in implementing designs in code
- Strong appreciation of responsive / multi-device considerations
- Comfortable in modern CSS including BEM-like methodologies, ITCSS architecture, and modern approaches such as Flexbox, CSS Grid, custom properties
- Some experience in testing JavaScript and/or server-side components
- Comfortable with Git - Committed to constantly learning and improving technical knowledge and skills
Something else I remember noting down was that:
User interfaces should be user-centric, purpose-driven, appropriate, accessible and consistent (not arbitrary).
I guess my point there was that good front-end developers build user interfaces in a very considered manner.
Areas of interest
Here are some of the key areas I find myself thinking about or working on regularly.
Accessibility
I list this first not due to alphabetical order, but because it’s arguably the cornerstone of our job. That’s for two reasons. Firstly, because the web was designed to be accessible to all therefore it’s incumbent on us to uphold that. (Of course it’s not just our job, however we tend to be both the primary evangelists and last line of defence). Secondly, so many other aspects of front-end development can only be done well when you start from an accessible foundation. This is something that becomes clearer and clearer the longer you do this job.
Resilience
I might add more about this later.
Performance
I might add more about this later.
UX
I might add more about this later.
Documentation
I might add more about this later.
Adaptability
I might add more about this later.
Design System considerations
- Componentization
- Creating component APIs
- Composition
- Documentation
Scalability
At scale, you can’t just write new code for everything. You have to focus on creating reusable things.
Maintainability and sustainability
I might add more about this later.
Integration into the company’s language framework
This can be challenging. I might add more about this later.
Adding interactivity
I might add more about this later.
Adherence to designs, and making things look good.
I might add more about this later.