“Developers can’t do UI”

Despite making a dramatic shift from front-end development to back-end stuff since I started at Mozilla a few months ago, I’ve still had occasion to have to do a fair bit of user-facing code, even if an audience of other developers is a bit more limited than what I’ve been used to. Since my mission is to make the rest of Mozilla more productive, it’s worth putting a bit of time and intention into the user interface for my stuff. If I can reduce learning curves or streamline day-to-day workflows, that’s a win for everyone since they can spend that much more time rocking at their jobs (whether that be release engineering, platform work, or whatever). This brings up a point that I’ve had in the back of my mind for a while:

Despite conventional wisdom, developers can design half-decent user interfaces (if they try)!

I used to be certain that a project really needed graphic designers and/or usability experts to provide guidance on UI issues, but my experience over the last few years with iOS/web development has made me reconsider. Sure, pixel pushing and vector art is never going to be a programmer’s strong suit (and there’s certain high-level techniques that take years of study to acquire/understand), but the basic principles behind good UI design are accessible to anyone. There’s really only three core skills:

* An ability to put yourself in the shoes of the user. Who are you designing for, and what are they trying to accomplish? How can I streamline my UI to help them quickly solve the task at hand? This is one of the reasons why I find user stories so helpful.

* An understanding of common vocabulary for describing/designing applications and knowing what is “good”. Unfortunately I haven’t found anything like this for the web, but Apple’s human interface guidelines have some good general advice on this (just ignore the stuff specific to phones/tablet apps if that’s not what you’re doing).

* A willingness to iterate. The best ideas usually aren’t apparent immediately, and may only come out of a back forth. It’s been my experience that the more constructive dialog there is between people actively involved in the project on user experience issues, the better the end result is likely to be.

For example, one of the things that release engineering has found most useful in the GoFaster Dashboard has been the build charts. Believe it or not, the idea for that view started out as this useless piece of junk (I can say that because I created it). It was only after a good half hour back and forth on irc between myself, jgriffin, and jmaher (all of us backend/tool developers) that we came up with the view that inspired so much good analysis on the project.

All this is not to say that usability experts and graphic designers don’t have special skills that are worthy of respect. Indeed, if you’re a designer and would like to get involved with our work, please join us, we’d love your help. My only point is that on a project where a design resource isn’t available, thinking explicitly about usability is still worthwhile. And even where you have a UX expert on staff, programmers can have useful feedback too. Good UI is everyone’s responsibility!

5 thoughts on ““Developers can’t do UI””

  1. I like the point on iteration –very important!

    My problem is….I can do good UI/UX….for me. I know what I like. Conversely, I know when a UI is unusable (including those designed by UI/UX pros in some cases). Then there’s the other UIs that I like or don’t like.

    I want things to be fast. I want to click as little as possible. I want things to be obvious in how to do them. While these are all UX goals, they are not the sole basis for UX. When you start asking me CSS questions — how big should the margins be? What should the color scheme look like? Is this pretty? Etc. My answer may be different from the “typical user”. I guess that’s not surprising as there is no typical user. But look at my website if you want to see what I mean (and feel free to volunteer CSS fixes while you’re there :P)

  2. Agreed. I consider myself very capable at UX development in general but I never quite put the time and effort in and the results are often poor. That’s the nature of the constraints I’m given, as a developer. If I have adequate time and impetus, the work is of a far higher quality.

  3. I’m glad to see someone with readers finally saying this. I was beginning to feel that I was the only person who sat in that odd spot where you’re neither a low-level programmer nor a graphic designer but, when you’ve got the time, you pour it into refining UI usability.

    (I only started having time recently, so I’m still catching up most of my creations, but I think you can understand what that’s like)

  4. @Jeff: You’re basically describing one of the reasons why iOS has been so successful. :) Apple defined a toolkit and a set of good conventions that put a lot of stupid issues to rest (where should the margins be? how should I switch between modes in my application? what control should I use in response to this action?) so you can focus on the more interesting questions/value that your application might provide.

    HTML/CSS operates at a much lower level than that and provides very little in the way of answers as to how things should behave. “Mechanism, not policy” as the saying goes. My suspicion is that for web applications, people are eventually going to eventually consolidate on a set of toolkits/best practices. Unfortunately at the present moment most of the efforts in that direction have gone towards emulating existing mobile/native user interfaces, with rather irritating results in my opinion.

  5. It’s not that developers can’t do UI – it’s that doing good UI requires a certain set of skills that we associate with graphical designers and UI experts.

    But there’s no reason a developer can’t have those skills, and many do. Most small IT companies can’t afford specialists, so a developer who can supply the same skills is a valuable person indeed.

Comments are closed.