Thoughts on the great frontend divide

28th February 2019

In the last few years there has been some interesting discussion in the frontend community over what it really means to work in frontend. Recently, Chris Coyier aptly coined this as The Great Divide.

In it, he primarily discusses things from the perspective of traditional frontend developers and designers and how it has become harder for them to make heads or tails of the industry when the focus has primarily shifted toward programming. Having plied their trade working on sites written with (mostly) HTML and CSS, a lot of modern web development feels alien and incredibly daunting.

The rise of the frontend programmer

Clearly, one of the main issues is that JavaScript has exploded in popularity over the last 4-5 years and this has meant an influx of programmers into the frontend (many whom will have come from the backend).

As a result, we have seen an explosion of new frameworks, libraries and tooling. These abstractions pave over many of the rough edges of the frontend, but unfortunately introduce additional complexity that many designers can't understand.

From a programmer's perspective, frontend development has shifted from being something akin to the Wild West, to a saner and controlled environment. This has generally been a great success for programmers but where does it leave the designers and the traditional frontend developers?

Many certainly seem to yearn for the days of being able to be productive without needing to know the basics of a JavaScript framework. I can't really blame them.

We have created fairly complex abstractions, potentially reaching their zenith with the new CSS-in-JS trend. Personally, it feels like a confusing state of affairs when you need to know JavaScript to even start writing CSS (I'm still hesitant to jump on that bandwagon).

Raising barriers to entry

Unfortunately, we would be naïve to believe the shift towards JavaScript only affects the old guard. Rachel Andrews argues that we are also creating new barriers to entry in her post on HTML, CSS and our vanishing industry entry points.

She points out that the shift towards JavaScript-first solutions has also made programming skills a prerequisite for many newcomers. This potentially excludes people that would have found an entry point into the industry through working with just HTML and CSS.

Alongside this, we have also seen a general devaluing of HTML/CSS. JavaScript is often made the priority in development bootcamps and courses, meaning that many newcomers end up starting their careers with crucial gaps in their knowledge. Having started my career as a (mostly) backend developer and having written plenty of crap HTML/CSS, I can empathise with this.

It has only been in the last few years (and with a healthy interest in the frontend) that I've started to understand what good HTML/CSS looks like. A large part of that is from working on a team where people value that aspect of the frontend. Being able to have healthy discussions on topics like design, semantic markup and accessibility has helped me become a better frontend developer.

I think there is a lot of value in cross-disciplinary conversations and we all potentially stand to suffer if we lose this diversity of voices from the frontend discussion.

Design vs programming

Having read around the discussion a little further, I've noticed that people don't seem to really talk about the elephant in the room. We still unfortunately treat programmers and designers as very distinct and (almost) opposing roles.

Programmers are generally considered to be the people that solve the abstract implementation details. They don't prioritise the presentation or user experience of the solution and are usually happy as long as it works correctly. I would say that programmers are generally bad at considering the big picture - for example, how the entire product will be perceived by end-users.

On the other hand, designers are considered to be the opposite of this. They focus their creativity into crafting beautiful, usable and accessible products and the end-user's experience is more highly considered. Conversely to the programmers, designers are bad at considering the little picture and generally care little for the programmer's implementation details.

I think these stereotypes really frame the discussion on the divide as they imply that both roles, and their work, are fundamentally incompatible with one another. Frontend development was originally framed as a designer's area of responsibility, so it's not surprising that they feel uncomfortable with the groundswell of frontend programmers. It begs questions like - what are my responsibilities? Should I be coding? Why are programmers making things so complicated? Why is everything different?

Personally, I don't believe it is clear cut where you stop being a designer and become a programmer and vice-versa. To me, designers are already programmers through their HTML and CSS and the design languages they create. Programmers are designers through the code they write and the systems they design.

By trying to categorise people as designers or programmers, we create a self-fulfilling prophecy that there should be a divide.

Thinking about the future

If we want to start bridging the frontend divide, we need to try and move the discussion away from being about programmers and designers. We should encourage anyone working in frontend to gain a better understanding of all its aspects and intricacies, be it design, programming and everything in between.

I think it would be great if designers had enough programming skills so that new frameworks and tooling weren't seen as impenetrable abstractions. Ideally designers would even be involved in helping to build these tools rather than letting programmers dictate their direction.

Inversely, if programmers had better design skills, they could appreciate more the work that goes into designing great user experiences. With this kind of understanding, programmers could build more ergonomic tools that designers can understand and enable them be more productive.

This could be asking for quite a lot, but it would be great if we could work towards this and help our peers to reach this mindset. In the process, we would hopefully create a more collaborative environment where we empower each other to make the frontend the best it can be.

The future should be shaped by everyone and not just people sat on one side of a fence. I hope that one day we won't need to discuss the divide anymore as we will just identify ourselves as frontend developers.