.comment-link {margin-left:.6em;}

Uncommon Sense (for Software)

This blog has been moved to www.UncommonSenseForSoftware.com.

Thursday, February 16, 2006

Design a couple versions at a time

Every day in the software world, you run into people that rather neatly fall into 2 camps:
  1. Design snobs

  2. Those that think design is icing on the cake

I personally am in the design snob category. I believe that design (or lack of) makes or breaks a product. A lot of times, I'm talking just about user interface design, but the truth is, anything said about user interface design can typically be applied equally well to technical design. The technical equivalent of user interface design, for a coder, is the design of their public interfaces - the methods and properties you can call on their class library.

In both cases, there is always a tension for designer between "what would make it easier to implement" and "what would make it easier for the end-user". This is equally true whether the end user is someone clicking a button on the user interface, or another developer trying to use your API. Either way, the designer's #1 job is to empathise with the end-user. The biggest danger a designer faces (interface or technical) is to start thinking too much about implementation too early. Design is an expression of the end-goal. Start with "here's what we want to get to". Even if you aren't able to get there in a single release, or have to make some tradeoffs along the way, start with the best design you can come up with, and work backwards to what is feasible given your constraints. That way, with your user interface or your technical architecture, you'll be able to come back later to fit things in that didn't make it in the first go-round.

If you design only what you think you can accomplish right now, you're going to have to bend and twist your design in unnatural ways in the next iteration, to account for things that you didn't account for in the original design. In short, over-design up front - do a couple versions at once. This thinking might throw a few folks into a panic because we've all heard from our ancestors that back-in-the-day large software systems experienced "paralysis by analysis", meaning, they never got off the drawing-board. That was before the 'Net. Given how easy it is to publish and distribute an application nowadays, people are slapping them together and shoveling them out the door with comparably little design (not to mention testing). Don't worry about over-designing.

If you spend about twice as much time designing as the next guy, you're probably spending just the right amount of time and your product will show it.

Plan for a couple of iterations, so you know where you're headed. Then you can break up the implementation of that design over a couple of iterations or releases. Since ripping up a design document is way easier than ripping out a chunk of code, it's better to design a few iterations at a time, so that if in iteration #2 you realize something in iteration #1 was going to create a conflict, you've caught it before it was actually implemented. The more we design a couple iterations at a time, the less products come out looking like Frankenstein later.

And just for the heck of it, here's a link to some great "importance of design" quotes I stumbled across, at LUKEW Interface Designs.

A couple of my favorites:

[Users] make their credibility-based decisions about the people or organization behind the site based upon the site's overall visual appeal.
- Stanford Persuasive Technology Lab, 2002

Design is not just what it looks like and feels like. Design is how it works.
- Steve Jobs, 2003

Visual appearance is one of the most effective variables for quickly differentiating one application from another.
- Bob Baxley, 2003

If a site is perfectly usable but it lacks an elegant and appropriate design style, it will fail.
- Curt Cloninger, 2001

The details are not the details. They make the design.
- Charles Eames

Problems with visual design can turn users off so quickly that they never discover all the smart choices you made with navigation or interaction design.
- Jesse James Garrett, 2002

Good design is the most important way to differentiate ourselves from our competitors.
- Samsung CEO Yun Jong Yong, 2004

Design is the easiest way to reenergize a product.
- Fast Company, 2005

Your products run for election every day and good design is critical to winning the campaign.
- Procter & Gamble CEO A.G. Lafley, 2005

You can't just ask customers what they want and then try to give that to them. By the time you get it built, they'll want something new.
- Steve Jobs, 2005


  • I just discovered your blog from a link over at jaded pixel. Wow, some incredible stuff in here. Time to hole up with a cup of coffee and do some reading. I'm a Program Manager myself, so much of this really hits home.

    By Anonymous Geof Harries, at February 20, 2006 7:07 PM  

  • Hi Geof,

    Welcome. Glad you liked what you read. Always good to meet a kindred spirit.


    By Blogger Craig Fitzpatrick, at February 20, 2006 8:18 PM  

Post a Comment

Links to this post:

Create a Link

<< Home