thew.me ←

Developers Should Design

The demand for competent, professional, and clear design work in the software industry has exploded in recent years. This is good. Design is important, it can make people’s lives better, and at times, it has been relegated to niches and fringes of software development.

Today, designer-founders are beating off venture capitalists with their Helvetica mugs. And many of them seem to be dabbling in writing software. At the very least, writing markup and style sheets. Many more are learning to write “front-end” code, which overwhelming means JavaScript, CoffeeSript, or some-other-kind-of-script.

There is a full blown movement to teach designers to write code. This is great! Writing code is a skill set that I firmly believe should be required in public schools, so expecting it, on some level of competency, by people who design software for a living does not seem overreaching.

Programming is problem solving. Design is problem solving. The problems and tools may be different, but they are pursuits cut from the same cloth.

I want to talk about the slightly-less-discussed side to this coin: that people who write software should learn to design it. Software is all around us and as the demand for people who write it continues to grow, shouldn’t we be bridging that gap in the other direction? Shouldn’t developers be learning to design?

I believe there is great value in each of our professions taking an occasional step toward the other.

There is value in being able to write software while being legitimately concerned with the end user’s ability to use it. My software is not all the better for having being written in basement full of O’Reilly books, elitist coffee brewing equipment, and contempt for people in other professions. Yours isn’t either.

Writing great code can positively influence the end user, but more often, code quality is of greater interest to people within our own profession. It can become a closed loop. We are tempted to scratch only our own backs.

Programmer, hacker, and developer alike, it is your job to adapt to your trade. Today, our trade still means great code. It still means classes and methods. And proper scope. It still means understanding algorithms, and efficiency, and elegance. It still means comments, comments, comments. But, it also means writing markup. It means writing CSS. It means, occasionally, exporting a proper PNG from some Adobe product without fudging the transparency. It means knowing what kerning is, if only enough to ask a question or to appreciate it.

We need to understand that design is consistency in user interface as much as it’s consistency in method names. Design is every layer, even ones near the surface.

I am not advocating that we should be professional designers. But, I am arguing that we should be competent.

I write software for a living and I consider myself a professional. That implies both a competency and some level of expertise born from of hours of work.

I do not, in any way, consider myself a professional designer. It is not my day job, and so, my hours are constrained. But, I strive to be competent. Being competent does not require years of experience, it mostly just requires that I care. And that I respect the craft enough to learn as much as I can about it, even if that’s on my own time.


filed under: