by Caleb Jaffa

Archive for January, 2008

Design the Interface First

I’ve spent many years developing websites. The most successful projects have always had a good foundation design done before the coding started. 37 Signals talks about this in their book Getting Real in chapter 9 Interface First. The interface gives you something concrete to think about and to work towards.

Recently I had a small project come my way, that was basically a simple feed reader. I started by sketching out my interface. The target was simplicity and not a lot of development time. Unfortunately I neglected one vital part of the application in the interface design phase, the requirement that the user be able to sort the feeds.

I dove into the code, setting up the Ruby on Rails project. I found a gem that would simplify reading in all the different feed types and letting me treat them the same. I got the interface in and about 90% of the project coded within an hour and a half. Then my poor interface planning skills hit trying to implement the sort. There were certainly easier and more elegant ways to tackle the problem, but not in the interface I had designed.

The decision became to bolt on the sorting requirement or to rethink my interface. I was already hovering around the expected amount of effort put in. I spent some time toying with some different interface ideas, but nothing came that solved the problem without requiring significant work and making the application more than it was intended to be. So I bent the framework to my purposes and called it version 0.1.

I temporarily had it running on this server. As a coding exercise I might do more with this project and expand it out with a better interface. The interface is definitely the thing that needs to be overhauled and the next would be reworking the tests that are mostly untouched from their generated state.