Programmers are generally bad at user interface design?

nadeem.shabir | | Tuesday, December 5th, 2006

Was intrigued when I read James O’ Coplien latest blog entry: The interface is the Program, and it ain’t Agile. Coplien discusses, quite correctly I believe, the fact that historically developers have tended to be very bad at building good user interfaces. Coplien discusses this in the context of Agile development groups and how usability is rarely captured as a story because stories in themselves are generally short-term goals that you want to achieve in the space of an iteration or even a sprint. Therefore because Agile teams are rapidly making changes to their application its hard to be able to do the focussed studies and analysis that is required in order to gain an understanding of how useable the application your building is. Fundementally programmers are not User Interface designers - Coplien attributes this to several reasons, which include the fact that university courses on software engineering have often done little more than pay lip service to HCI or User Interface Design, its often a topic that undergraduates are only ever given the most basic of introductions to.

I want to expand a little on what Coplien has covered so well …

I’ve been fortunate enough to have worked closely with Alan Dix and Russell Beale, the authors of Human Computer Interaction. I do class myself as a developer but I have had a strong interest in HCI, and user interface design and its an area I’ve been interested in and reading around for the best part of a decade. In that time I’ve often had to work in teams where its apparent that other developers dont either understand the need for HCI, or even how to begin to think about it.

In my own experience this comes from the fact that programmers tend to focus on the mechanics of building an interface, getting the right framework, and then designing around the limitations of the toolset they have picked. Invariably they tend to spend tonnes of time just focusing on getting the UI to work and this UI is designed from the perspective of satisfying the flows defined in requirements documents or design docs like Use Cases. You can contrast this with people trying to use the user interface, who dont care how it was built, or what the limitations in the underlying technologies were, these people just want something they can use. To me its this emphasis that seperates a working interface from a “good” user interface. Good User Interface are designed around the user, unfortunatly most user interfaces tend to be designed around building something that satisfies a series of discrete requirements.

I dont think it’s fair to simply say that programmers arent capable and can’t do good UI design, the truth is that on most software projects, and in most teams, it just isnt their emphasis.

In order to improve things developers need to be taught the importance of user interface design. Our development group at Talis is a great example of this. As a team we know we need get better at understanding how to build user interfaces. One of the activities we undertook recently was to get everyone to read Spolsky’s User Interface Design for Programmers as part of our geek book club. It’s an excellent text that introduces programmers to key concepts in user interface design.

However as more and more applications are being delivered over the web developers should take the time to read Jakob Nielsen’s seminal text Designing Web Usability - The practice of Simplicity. Bruce Tognazzini’s TOG on Interface, might be a little dated but its still an incredibly good text and has a great section on conceptual models.

Most importantly though: one of the things our group has realised is that User Interface Design and User Interaction Design are specialised skills, and whilst its important that developers should be encouraged to learn more about this area, its vitally important that organisations recruit people with these specialised skills into their teams. To that end Talis is openly recruiting for individuals who specialise in HCI/User Interface Design, so if you think you fit the bill and its an area your passionate about, and you’d like to work for an organisation that takes this very seriously then check out the job spec here and send your CV along with a covering letter to team.talent@talis.com.

, ,

4 Comments »

  1. [...] Over on slashdot theres an excellent little article and debate around the issue of why software sucks. The slashdot article points to this news story on the Fox News Network. that discusses the book by David Platt entitled “Why software sucks …. and what you can do about it“. I haven’t read the book yet but I’ve added it to my things to read list. The debate on slashdot though is actually quite interesting and worth reading in its own right. What interests me is how some of the sentiments echoed in the articles and discussions resonate around my earlier views that programmers arent usability experts, and until we start developing software centred around the user … software will continue to suck. [...]

    Pingback by VirtualChaos - Nadeem’s blog » Why software sucks — January 5, 2007 @ 9:07 pm

  2. I agree that the main reason projects fail to build good interfaces is because the underlying processes don’t emphasize that aspect of development, so the issue doesn’t as easily come to the surface. But I personally found that I also needed quite a bit of education to be able to design good interfaces. Last, I found that GUI-builders often got in my wayand made it impossible to build humane systems. So, in short, you need three things: the support of the boss; knowledge of the interface area; and an environment that lets you lovingly hand-craft a productive interface.

    Comment by Jim Coplien — January 31, 2007 @ 11:27 am

  3. [...] On the face of it this sounds reasonable - a picture speaks a thousand words. How we present information to our users has to be the most important question software designers should be asking themselves. So why don’t they? Well I wrote a piece offering my views on that question a while ago: programmers are generally bad at user interface design. So as you might imagine I find myself agreeing with what Bret writes here: Compared to excellent ink-and-paper designs, most current software communicates deplorably. This is a problem of surface, but not a superficial problem. The main cause, I believe, is that many software designers feel they are designing a machine. Their foremost concern is behavior—what the software does. They start by asking: What functions must the software perform? What commands must it accept? What parameters can be adjusted? (In the case of websites: What pages must there be? How are they linked together? What are the dynamic features?) These designers start by specifying functionality, but the essence of information software is the presentation. [...]

    Pingback by VirtualChaos - Nadeem’s blog » Information Software and the Graphical Interface — April 6, 2007 @ 12:36 pm

  4. [...] Nadeem Shabir is making making really good points about why generally “we think” that programmers are bad at user interface designers. Basically I share with him one point, that I explained on my previous post: Is not that [...]

    Pingback by Programmers are generally bad at user interface design? | Juan Carlos Pontaza — March 30, 2008 @ 7:04 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment

Powered by WordPress | Theme by Roy Tanck