While on my way in to work this morning on the bus, I was trying to get a few extra minutes work done on my laptop and found myself contemplating software design. We've all seen examples of good design - things that work really well and solve problems simply and completely. Have you ever stopped to think what made those designs good?

One example of a good design is my Logitech V220 mouse. I love this mouse because:

  1. It just works every time in every environment. I've had laptops that hated other mice that I've owned. Often they would fail to recognize the mouse receiver when I would plug them into the laptops USB ports. Sometimes it would take 3 or 4 tries and often I would have to try 2 or 3 different USB ports to make them work. I had one mouse that would refuse to work on those cheap plastic Costco fold up tables - not sure why. The tables weren't even shiny. It's a good thing I didn't have to use those mice to dial 911.
  2. It has all the features that I want in a mouse. Those features include two mouse buttons, a scroll wheel and rubberized sides so I can keep a good grip on it and that's about it. I know there those who see feature richness as a good thing, and in many circumstances, features are good. After all, it is often the number of features that allow us to solve a wide range of problems but in my experience, feature richness does not necessarily correlate to greatness. If you don't believe me, consider Google's user interface.
  3. It strikes the right balance between portability and usability. I've had portable mice and they are either too small and cause my hand to cramp or too large and weigh as much as my laptop. I know there are other solutions to portability such as my laptop's built in track pad but I've but never got the hang of track pad drag and drop even after using the track pad exclusively for more than a year.
  4. It solves 2 common cordless mouse problems really well: loss of the mini wireless receiver and dead mouse batteries. The clever Logitech engineers came up with a slot in the bottom of the mouse to attach the receiver to. When I remove the receiver, it turns the mouse on and when I store the receiver, it turns the mouse off. The mouse and receiver are never separated in storage. Simple solution. Nice!
  5. It's durable. I see all sorts of dents and suspicious marks all over it from where it has been dropped out of my bag but it keeps on working despite the abuse.
  6. It's a reasonable price. At $30. It's a bargain.

I think there are important parallel lessons in software design that can be learned from my mouse. I often wonder if sometimes we spend too much effort trying to pack features into our software products rather than trying to make the software work well and solve fundamental problems. Maybe we should take that extra time and really consider what it is our users are really trying to accomplish and work on solutions to those problems. It would also be interesting to know if one designer designed the mouse or a committee. I suspect that the design of the V220 was from the mind of a single talented industrial engineer.

Just some thoughts