Sympathy for the Developer

How being a developer can make you a better designer.

Pleased to meet you
Hope you guess my name
'Cause what's confusing you is just the
Nature of my game
-The Rolling Stones "Sympathy For The Devil"

In University, as I entered my second year I had a choice to make. What modules to choose? There seemed to be an obvious fork in the road. Choose the more "Designer" modules such as graphic design and 3D modelling, or take the more "Developer" road and take modules on programming.

My career trajectory ever since has been leading me down a developer path, but my degree was still routed in design and it's been a sometimes painful journey, especially when I compare myself with colleagues with backgrounds in Computer Science or Software Development. Programming is hard. At least, it certainly is for me. I don't believe anyone who say's isn't. Lately it's becoming clear to me that design and development are not as mutually exclusive as i previously thought. It's not one or the other, at least if you want to be a good designer.

Learning to code can make you a better designer.

It's all about breaking down large and difficult problems into small, simple, manageable tasks. Taking on any project can seem a daunting task, and you can get overwhelmed very easily - but programming teaches you how to break this seemingly insurmountable task into bite-sized components. When creating a wireframe, rather than thinking of the design purely as a whole, think how a developer would approach building it. Break the design into its individual components as the projects building blocks.

Having some knowledge on the actual technologies the product will be built on can help so much. You don't need to know exactly how to build it yourself, but having a decent knowledge of HTML, CSS, JavaScript, or whatever it's built with means you can think about how a developer would need to go about it. The developer decides how something is built, but the designer decides what is built. An architect needs to have knowledge of physics and engineering to build a bridge, the builder doesn't need to know this - they can just follow the plans. Developers don't tend to read up on best UX practices, they don't keep up to date on the latest design trends or blogs. They spend their time browsing documentation, reading StackOverflow posts, and watching videos explaining concepts. These tutorials are aimed at explaining concepts and that something "works". These guides never consider real life or the end user's experience. That's where you as a designer needs to take charge.

Knowing what a developer may encounter can present many eventualities you'd never have thought of purely from a design perspective. Awesome FalseHood is a fantastic curated list of assumptions programmers make including dates, emails, names, addresses, and geography.

Falsehoods programmers believe about names

  • People's names do not change
  • People’s names have an order to them
  • My system will never have to deal with names from China
  • I can safely assume that this dictionary of bad words contains no people’s names in it
  • People have names

Thinking about your design from a developers perspective will not only help your design from the get-go, but once the design eventually lands on your developers desk it will streamline their job, and maybe you can be just a little less confused about the nature of their game.