
Lost at Sea
This month marks fifteen years since I designed my first website, and through the course of the last decade and a half I’ve noticed a lot of change. Aside from the fact that my hairline is a lot less where it should be than when I started on this journey, I’ve seen myself evolve from hobbyist, through a relatively successful freelance career, into busy agency life. I’ve also seen a marked transition in my career path—from designer to developer.
I started my journey, as did so many of my generation, adding hacky CSS overrides to my MySpace page to create a custom theme. I made them for myself, for friends, and before long I was taking commissions from strangers. As a 14-year-old kid it was a pretty nice earner, but mostly it opened my mind to the speed at which something intangible could be turned into something real through code.
I was never interested in dragging and dropping irresponsive elements in a graphics program. It just felt too abstract, too optimistic and naïve to the realities of a browser environment. Designing directly in HTML and CSS always felt like a much more streamlined process. The moment the design looked right, it was done, there was no next step to turn it into a website. That continued as I embarked into freelance design, where I had the freedom to rapidly prototype and iterate on design ideas in a real browser. My designs were useable and interactive, in a way that, at the time, just wasn’t possible any other way.
I really wasn’t prepared for my freelance career to come to an end. My last client had been a big one. A huge, long-term project that would secure my future when finished. When they missed a few invoices I let it slide and focused on the work, convinced that my big payday was coming. Then suddenly, without warning, the company ceased trading. My savings had already been spent supporting my family in the months leading up to that point, and instantly, the money I was owed evaporated.
Suddenly, I found myself with a young family to support, no work, and no money. Panic, however, didn’t set in immediately. I was confident in my work, and my abilities, and set about trying to find my next design role. I interviewed for countless agencies and in-house design teams. Every single one of them said pretty much the same thing—“we love your work, but if you don’t know Photoshop we can’t fit you in”.
The six months I spent in this endless cycle were completely heartbreaking. I was a designer, a good one, and yet I was being told that I couldn’t do the job I loved because of my choice of tools. HTML and CSS were what I knew, and they have always remained my medium of choice. While I wrote a lot of code, enjoyed it, and took pride in it, it was all in service of the design; nothing more than a tool to make a reality out of an image in my head.
I began to question my entire career. Had I just been doing everything wrong? Had my previous successes been little more than a fluke? With these questions hanging over my head, and a growing sense of desperation, I took the coding knowledge I’d gained over the years and stumbled into a role as a front end developer.
It took me a long time to find my stride as a developer. At first, I struggled to take off my designer hat. I found myself critiquing the designs I was given instead of building them. I’d make unsanctioned changes where I thought I knew better. I was second-guessing design decisions without the context that those who had made them were privy to. There was a huge amount of arrogance in that, I see that now, but I think subconsciously I just felt like a fish out of water. In my head I was a designer masquerading as a developer in order to pay the bills.
There was no light-bulb moment, no single event that changed my perception of my position. I grew more and more frustrated at being unable to impart my design knowledge on the websites I was building. Since I couldn’t design the “what”, I instead focused on designing the “how”.
How can this function be made easier to understand and use?
How can this process be automated?
How can I package this to make it reusable?
Over the next couple of years, I became obsessed with one thing—to make the interface of the code I was writing as intuitive and assistive as possible. I approached code the same way I once approached design—by focusing on clarity, consistency, and structure. I started to see a kind of beauty in clean architecture, the same way I once admired the elegance of a well-balanced layout. I took pride in reducing complexity.
I poured that energy into building utilities and abstractions that helped me—and others—move faster. I spent evenings and weekends creating open source tools and working on side projects. Nearly a decade later, I still use many of those same tools in production.
That change in mindset—from seeing code as a tool, to using it to make tools—was what finally helped me to recognise my value as a developer. I stopped thinking of myself as a designer faking it, and started owning the idea that I was a developer with a designer’s instinct—and that that combination was killer.
The more time I spend in this industry, the less I care about tools and job titles. I’m more interested in whether you can build something that works; that helps someone; that you’re proud of. I’ve seen people with no formal training outperform entire teams. I’ve seen designers out-code developers. The end product is all that matters.
I no longer feel like I have to prove I’m a designer, or a developer, or anything else. I just build things. I contribute. I support the people around me. But most of all, I stay curious. That mindset has taken me further than any one tool ever could.