User Interface First

June 26, 2006 commentary 4 min read

This morning I listened to the Web 2.0 Show podcast with Jason Fried from January 16, 2006. I've heard Jason Fried talk before and I think he has some great things to say. One interesting point that Jason makes is that 37signals always designs the user interface of applications first. This is a problem that we have struggled with at Collective Idea.

Jason points out that designing the user interface up front gives the customer the experience for 90% of the project, instead of just at the end. As Darrel Rhea talks about, products aren't successful simply because they're functional, but because they are meaningful. Functionality is part of that meaning, but unfortunately only a small part. Much more of that meaning is derived from the experience. This is something that Apple understands.

We recently finished the first iteration of a project and showed a functioning but un-styled back-end of an app to the client. The client didn't say much during the demo. We then talked about what was going to happen in the second and third iteration. After mentioning that the design would come in during the third iteration, the client spoke up and said that he was glad there was going to be a design. This made me realize that even though we had a fully-functioning back-end, what we failed to provide was an experience. While the back-end is important, that's not what clients pay for. The meaning for the clients is derived from the interface. The interface is what makes them want to take money out of their wallet and put it in your pocket.

We usually avoid doing the user interface design first, simply because we outsource most of our design. If the interface is designed up front, it's almost guaranteed to change as our understanding of the product changes. Since we outsource the design, we saw this as a bad thing because we have to pay more for the design. But Jason makes a great point: by doing the interface first, it forces you to focus on the interface for the entire project, instead of having to force it in at the end.

"You can't click a piece of paper."
- Jason Fried

Programmers often look at systems from the lowest level up. We think about the data, and the relationships, and the system as a whole, and from that derive an interface. But this is exactly opposite of what we need to be doing. We need to look at the system from the clients perspective. And the best way to do that is to create an interface that both you and the client can interact with. It's a lot easier to talk about features when you have something tangible. The interface then becomes the driving force for the back-end, instead of the other way around. This also allows you to focus on the epicenter of your product.

Jason also points out that by designing the interface first, your product will look like a version 2 or version 3 by the time the project finishes, simply because the interface will have already gone through several revisions. So what we have failed to realize at Collective Idea is that the extra design costs will pay off in the quality of the product and the satisfaction of the client with their experience.

This content is open source. Suggest Improvements.


avatar of Brandon Keepers I am Brandon Keepers, and I work at GitHub on making Open Source more approachable, effective, and ubiquitous. I tend to think like an engineer, work like an artist, dream like an astronaut, love like a human, and sleep like a baby.