The new power in computing: design-centric development

I’ve been mulling over the insights from Microsoft’s Remix 08 conference in Brighton, and in particular Bill Buxton’s contention that it was a focus on design that saved Apple, and that a focus on design is the only thing that can save Microsoft.

It is all very well to nod heads and agree that design is a critical matter; but we are generally not good at integrating design into the software development process. One of the problems is that most development methodologies that I have seen do not address this matter well. In fact, one of the problems is that we do not know how to talk about design or even what it is. When Martin Fowler wrote Is Design Dead he meant something different from what Buxton is talking about. Design is fuzzy and hard to measure.

The best I can come up with at the moment is that design is about user interaction. If software is about input –> processing –> output, then design is about how you do the input and get the output. Design is not about appearance; but it includes appearance. Design is not engineering; but design problems can sometimes be solved by engineering and vice versa. Design is not functionality; but doing the right thing at the right time is within the scope of design.

One of Buxton’s themes is the importance of transitions. How you get there is as important as what you get. This could mean visual effects, or what you have to press or click or move to get from one place to another. Think of the way Vista users get annoyed by having to go via a Network and Sharing Center to get to what they want, the Network Connections dialog; that is a design failure. Or all that discussion around Vista’s shutdown options provoked by Joel Spolsky’s somewhat unfair article. Design issues, of which there are many other examples

Design is ascendant for several reasons. One is that increased computing performance has given designers more freedom, though that also means there are more ways to get it wrong. Another aspect is that falling prices have made adequately powerful personal computers (or for that matter MP3 players) a commodity, and design is now key to differentiation. Third, the Web has focused minds on the minutiae of design, as sites compete for user attention. Macromedia’s (now Adobe’s) work with Flash has been a big influence, especially after the company joined the dots back in 2002, and started to promote Flash as a means of improving the user experience in applications.

If I reflect for a moment on the last 30 years or so of software development, it is easy to pick out ideas that have really made a difference. Object orientation. The graphical user interface. Test-driven development, and another big insight of the Agile movement, participation between all stake holders.

I suggest we should add design-centric development to that list, even though at this stage we are not sure how to do it. There’s been a lot of discussion about designer/developer workflow, and a few tools and ideas from Adobe and Microsoft that help to enable it, but this is only scratching the surface. Further, with their focus on graphics and graphical effects, they make it hard to distinguish between design and decoration.

So how do we do design-centric development? Learn from Apple and Google is one answer. Have developers and designers in the same room, or appoint more designers to the board, could be another. I think this topic is one that deserves, and will get, lots of attention in the next few years.