Monday, June 2, 2008

Designing from the Outside In

Traditionally here is how a database driven application is built.
1- Talk to customers.
2- Draw an Entity-Relationship diagram
3- Design your database
4- Use some wizard driven software to create quick UI.
5- Call the designer to make it all look pretty.
6- Throw it to the user.
7- Iterate based on user feedback.

I own a small IT company where tracking down the hours spent per customer is crucial for cashflow. I was sick of employees recording their hours in spreadsheets and scraps of paper which then had to be entered in another spreadsheet and so on. So I decided to write my own billing and timesheet management software. I fired up VS 2005, designed by data base and data layer. And bascially followed the design process outlined above. I thought I got a great little app done and sent it over to my employees expecting them to be amazed by my coding prowess. Well.. things did not turn out as I expected. After a few days I noticed that nobody was using the TimeSheet software. Perplexed I finally asked one of my employees why he was not using it. He got up the courage and told me that it sucked. He was wasting more time entering data in my cumbersome software than ever before. So he swtiched back to paper and pencil.

I probed deeper and decided that the goal of my software should be accuracy and fast data entry. I had to do better than paper and pencil. I decided to design from the outside in. So the design process went as follows:

1- Talk to customer and observe how they worked with alternatives such as paper and spreadsheet.
2- I drew mockups on paper on what an input forms would look like. One employee said that the goals of the software could be achieved if the input form behaved like a spreadsheet but stored data like database. Bingo! We had a breakthrough interface. Easy and familiar to use but better than paper once I added auto-complete and a built-in timer for quickly recording time.
3- Built a mock UI in VS 2005 and let the users try it out. Got even better feedback.
4- Finally re-designed Views and UI to match the user feedback.
5- Connected it back to the data-models with some modifications. I had to add UI centric data tables in addition to the accounting data I had to capture.
6- Success. Users loved it. Improved billings by 25%.

I learned a big lesson. Designing from the outside in means:
1- Pay attention to the goals of the user. What makes their job easier. What makes using your software a less of a drudgery. Make your software fun to use.
2- Pay attention to the details to achieve 1. They really do matter.
3- Connect the user goals with the business goals. In the event of the timesheet software it was fun and easy data entry with accurate capture of billing data.
4- Plan for lots of iterations and feedback.
5- Work with the data model in parallel not in sequence.

So what does this mean for you the product manager? The answer is that design of your product is crucial. Be a leader and drive the design from the outside in.

No comments: