Designing with Code: The Most Important Career Decision I Made

In 2004, I finished an Industrial Design degree and immediately started looking for work in graphic design. I’d recently moved countries, had no professional network and needed some way to get my work in front of people. At the time, that meant building myself a website.

It sounds like a fairly minor task now. Back then, putting a portfolio online usually meant paying somebody to build it or learning enough HTML and CSS, or Flash, to make one yourself. Webflow didn’t exist, there was no Squarespace as we know it today, and WordPress was still in its infancy. I opened Dreamweaver and started figuring it out. I had no particular ambition to become a developer. I just needed a job and a website seemed like a necessary part of finding one.

Most of what I learned came from pulling apart other people’s work. I viewed source code constantly, copied things, changed them, broke them and tried to work out why they had broken. Gradually I understood enough to get something online that looked vaguely professional.

Looking back, teaching myself to code was probably the most important professional decision I made. I didn’t end up becoming an engineer, and that was never really the point. What changed was the way I thought about design. Industrial design had already taught me to consider how people actually interact with things. Materials, manufacturing, ergonomics, cost and behaviour all affect what you can design and how somebody experiences it. Graphic design added communication, hierarchy, typography and visual storytelling. Working on the web brought interaction into that mix in a much more immediate way.

As I became more comfortable in the browser, the boundary between designing something and making it started to feel less useful. I often stopped using Photoshop altogether and worked directly in HTML and CSS. It was faster, but more importantly, it was honest. I could see straight away whether a layout actually worked at different screen sizes rather than designing a picture of how I hoped it would work.

That had a lasting effect on how I understood digital design. We still talk about design surprisingly often as though the job is to produce screens, when a screen is really only a moment in an experience. The thing someone actually uses has to respond to them. It moves between states, loads, fails, changes size, deals with unexpected input and carries people from one action to another. Working in the browser meant confronting those things while I was designing, instead of leaving them for somebody else to solve later.

It changed the way I worked with other people too. Conversations with developers became easier because I had some understanding of the constraints they were dealing with. I could prototype ideas myself, so there was less waiting for an implementation cycle just to find out whether something worked. Stakeholders could react to something functional rather than trying to imagine behaviour from a static visual. Over time, that way of working took me into broader product, systems and strategic work because moving between an idea, an interaction and its implementation became quite natural.

Twenty years later, I still think designers can put too much distance between themselves and the material they are designing with. Digital products are ultimately realised through code, whether the designer engages with it or hands the work over to someone else. I don’t think every designer should become an engineer, and specialist disciplines exist for good reasons. But there is a difference between being a specialist and being disconnected from the medium in which your work eventually has to function.

That feels particularly relevant now. Design systems increasingly exist as much in code as they do in design files, and AI can already produce competent front-end scaffolding in seconds. Producing polished static artefacts is becoming a smaller part of where a designer can add real value. Understanding behaviour, structure, decisions and the quality of the experience becomes much more important when the act of producing an interface is getting easier.

Learning to code brought me closer to how digital products actually get made. It changed what I paid attention to and what I considered part of the design problem. I suspect I would have eventually found my way towards much of the work I do now anyway, but I would have arrived with a very different understanding of the medium. For me, learning how the thing was made turned out to be part of learning how to design it.