Developers do design — but we’re not taught it
In many companies, most of the days we developers end up doing design choices. Whether it’s graphic or service design, by the virtue of building things we make design decisions. But most developers are not taught design, not even the very basics.
Everyday design decisions #
Not all of us have a privilege of working with amazing designers for every feature we build but nothing is done without a design. Maybe someone gave you a sketch about a feature with a single state and you end up making decisions on what the other states look like — you make a design decision. Or maybe you’re given a spec of what needs to be done but not how — you make a design decision.
Most recently, I got a feature request for a data visualization. It contained a screenshot from Excel giving me a basic idea of what they were looking for. At that point, my brain should have lit up and said, wait a second, how about X, Y and Z. How about the empty state? What if this category of data doesn’t exist? How are these calculations affected if there are null values?
As the person requesting it ended up being on a holiday the moment I realized these things, I ended up creating the initial draft. I know the weight these initial decisions have: unless it’s horrible, it will most likely pass. But I ended up making an ad-hoc design decision.
Nobody’s teaching that #
And these things happen every day. There are lots of ways to implement certain features and if we don’t think about the design: user experience, workflow, etc, we’ll end up making bad decisions.
The problem is, nobody is teaching us this stuff at school*. Or even telling us that these things exist. I often hear people (devs and non-devs) refer to many of these designs as engineer-designed. Basically meaning that it functions as it should but without the touch of a designer. Function over form and usability.
We were taught software design but almost exclusively from technical point of view. We drew UML and ER diagrams and thought about how different parts of the software should interact with each other. But not with people.
I’m glad that I spent two years organizing workshops on design for startup entrepreneurs. I learned so much about usability, service design, user experience, business goals and all the other factors that we should think about when we implement new features or even fix bugs.
That has made me a much better developer and I spend more time outside my code editor and with the users, other stakeholders and my notebook.
This is based on my experience of the Finnish universities. Your mileage might vary. If your school teaches design for developers as mandatory studies, please let me know, that sounds awesome.