I couldn’t agree more to what Dave wrote in his recent blog post about the increasing demands of the front-end web: the job of a front-end developer is getting ever more complex. From writing well-structured, semantic HTML to the latest (fantastic) new CSS features, to accessibility, performance, animation, data handling, components, frameworks, and so many more things – it almost seems impossible to become an expert at everything a developer is expected to know today. Therefore, we need to find ways to split the responsibilities. We need new roles at the intersections.
At the same time, I see more and more designers struggling to get an idea of what is possible even with the most basic materials we all build with: HTML, CSS, and JavaScript. Just take all the new CSS layout features as an example: CSS Grid, Flexbox, multi-column layout, fluid layouts with clamp(), min(), and max(), and so on. Browsers are more capable today than ever before and layout on the Web isn’t a hack anymore. Yet in my experience, and from asking designers in my workshops, I know that most designers (unless they write CSS themselves) have no idea that the very fundamentals of how we do layout on the web have changed unlike ever before. How are they going to make the best use of what’s possible and design materially honest solutions when they don’t even know those features exist let alone have an idea how they work?
So yes, our jobs as builders for the front-end web have become mind-bogglingly complex and inventing new roles will help to release some of the pressure we all feel. But there is still the need to learn from each other across disciplines, as well. Designers need to know what is possible in the front end. Front-end developers have to get a better understanding of design basics to fill the gaps in a design, for example, between breakpoints.
Adding roles at the intersections could provide the knowledge needed to close those gaps. Because instead of fiddling around with something you don’t fully understand or don’t feel comfortable with yet, especially when working under a tight deadline, imagine having someone who can actually show you the most important bits and provide the necessary context. What would that leave you with? The knowledge and understanding of why and how to do it on your own next time. And: more time to do what you are best at doing.
At the same time, it is important to not shift all the responsibility upon the person filling a new role like “Design Engineer”, “CSS Engineer“, or “Front-end Designer”. Building for the Web is a team sport and it is crucial that we never stop to talk to each other and learn from each other frequently, openly, and with a beginner’s mind, regardless of each other’s roles and responsibilities. Learning from each other happens gradually and sometimes slowly, but it is one of the superpowers of cross-functional teams. And yet again, roles at the intersections can help with this, because they increase the surface area for collaboration.
Just like Dave, “I don’t have answers, only questions”. Adding bridge roles is a good thing and something that does happen already. In fact, I am working in a design engineering role in many of my projects these days. But what else can we do about the growing complexity of the Web? Do we need to eliminate 80 % of the work? Do we need to improve education? Do we need to become more open and supportive as a community? Do we need to talk more, write more, teach more, prototype more, and share more best practices? Or, do we maybe need less? Do we need to focus on the essentials?
A while ago, I wrote about Dieter Rams’ principle of “less but better”. What could “less but better” look like for the front-end web?
~