Why I write software code as a part of my design work

A closeup of hand-written code in a notebook

Now that the whole designers-coding-stuff thing has died down a little (or maybe it hasn’t?), I thought I’d share some thoughts on why I code on my own design projects. There are a couple of main reasons why I engage in this activity.

First, I believe that it’s important for me as a designer to have a solid understanding of the medium for which I’m designing. Being able to code helps me better understand the things that matter to developers on a software product team, and it enables me to communicate more effectively with them.

Second, creating prototypes is a part of the design process for me. Prototypes, in various levels of fidelity, help me think through what the interaction should be for a particular design solution. Obviously prototypes have other uses; they are great for communicating a design to product team members and, of course, they are central in the testing of a product design with users.

There are many tools available for creating product prototypes. As it turns out, though, because I’ve been coding with html/css/js for so many years now, I can actually work fairly quickly to create a code-based prototype that I can iterate on and refine efficiently. I’m able to create realistic interactions and behaviours that are a big challenge with other approaches. I can start with something crude and wireframe-ish and iterate to something more polished. I like to call late-stage, high fidelity, code-based prototypes “real software with fake functionality”! It might be best to avoid ray guns, though…