Why did I learn to code as a designer?

Perhaps the debate ended when software started eating the world, but many developers, designers, and product people seem to argue back and forth whether designers, as defined in the classic sense, should learn to code. I never really thought about the cons of splitting my skill set early in my career, but I do know that I’m naturally attracted to how the web is built. To me the debate is silly. 

I learned to code because it interested me. I like to experiment with tech. I learned digital photography for similar reasons, yet I rarely hear an issue learning this highly specialized and artistic skill set. Likewise, when I was working as an architect, we were told we need to be generalist just to get entry level work. In the real world, buildings require many skills to produce, and it benefits architects to at least understand the nature of the work, with an angle to provide better plans. But with coding, a lot of folks get irritated when it is brought up. 

Open

For designers, it’s seen as either a welcome tool in the toolbox, or the job of a specialist. Frequently it’s seen as an attempt to make more mythical unicorns. This is the same critique you may hear from developers whom for a while have been fighting the stigma of being focused on front-end or back-end vs. the generalist full-stacker.

I used to call myself a “full-stack” designer, a term that didn’t catch on, describing a designer that develops aspects of a user interface. But now I see that there is room for UX and UI designers to become part of the UI engineering team. So I just stick to calling myself a designer. But I usually opt for roles where developing web interfaces is part of the job. As the job pertains to the web I feel comfortable now calling myself an expert in front-end technologies like CSS, HTML, and interface Javascript.

Being self taught in this field, I always have a feeling of imposter syndrome. But as I continued to work with many Web Developer teams, my skillset improved to the point where I can help steer the right approaches to development and design.

What can I actually do?

A designer that is able to ship production-ready code is valuable, if that designer can play ball with modern development practices. I have built a skillset with heavy emphasis on the core web fundamentals. HTML, CSS, and JS. Building on these technologies I supplement these skills with a bit of framework knowledge and techniques.

I can scaffold web apps, produce fully annotated and opinionated stylesheets, develop websites, host, test, and run deployments using the latest tools. This has allowed me to fit a wide variety of design jobs where a developer wasn’t on hand to wrap up the user interface of web apps, and allows me to produce realistic prototypes, sometimes wired-up with real data.

Because I have a research background as well, I can usually audit existing web sites, mobile apps, and desktop apps for accessibility concerns and technology issues. And because I have dealt with the way developers work and expect to work, you can expect my filed bugs, user stories, and acceptance criteria, to not miss out on things like the component lifecycle, managing state, and the differences between touch and mouse.

Lately I’ve been jumping into full front-end developer mode and shipping production code for complex apps. Sometimes it’s easier for a trusted designer to implement changes.

What can’t I do yet?

Many things. I’ve seen developers like Chris Coyle, Wes Bos, Adam Wathan, and Jack McDade, and see that they are developers that design great interfaces and equally compelling apps. That ability to bootstrap my own product, as solo developer, is a long term goal. To sit down, and build JS or PHP full stack apps that work out of the box would be ultimate long term goal.

Because I’m not there yet, don’t hire me as a Full Stack Developer. I’m not good with database management, or building API’s (At least without guardrails). Don’t make me the enterprise architect of your app.

My knowledge with Javascript is good enough to read and write functional javascript for interfaces without a framework. However, it may not be pretty. I learned ES6/7 and attempt to stick with it. As a caution, my experience with Vue, React, and Angular depends on the project I’m on, so my muscle memory with these frameworks is still early in developing.

What I don’t want to do?

I’m not going to learn backend development without the frontend stack. My core work keeps pushing me away from this specialty, so I find it hard to start learning it. I’m definitely not that interested in learning C++ or Swift yet.

And I don’t want to just be a css jockey. I want to actually be able to create functional interfaces.

How do I approach web development problems?

Humbly. It’s hard to be a solo dev in the world of web makers. When I need to solve a problem, or fix a bug, I start by looking for help. Whether that help is found searching stack overflow, or from looking at other peoples code, or talking to those that solved the problem before, I look for patterns to follow. After years of creating custom stylesheets and rewriting my css to align to best practices, I jumped onto the Atomic CSS bandwagon and use utility first approaches to my work. My approach is to aim for performance first.

My approach centers on what works, what is easy to maintain, and I change my designs to support this. My designs must be simple and effective, and take into account the development overhead need to produce it.

Latest Ideas, Notes, and Articles