Trying to Do Less

Posted by james on Nov. 8, 2009

I've been reading Jason Fried's blog at 37Signals lately, and one of his guidelines is to do less. I've been trying to follow it lately.

Programmers like me are cursed with too much imagination. When we see a problem, we don't think of a good solution - we think of the "best" solution. But I've always thought that an engineer's task is to create the most appropriate solution for the given situation, not some overall "best" solution.

When I work on a new feature, I'm always tempted to create a robust, scalable, fancy solution. Instead I try to do less. Steve Jobs used to write "Real artists deliver". Getting caught up creating a very fancy solution that does more than what you need just ties you up and burns hours (and money).

Why spend all that time making a really good but really complicated feature? Just do what's needed and move on. You can always go back and add the parts you really need. But most likely you wont end up adding those extra features, at least not for a while. The simpler solution will work just fine, and you can move on to what's really needed.

So instead of burning hours on an overly complicated feature and waiting forever in the process, in the same time you can just do what's need and deliver the product. Most of the time it's not a matter of not having enough time for your requirements... it's a matter of giving up on creating the "best", and going with "just enough". This becomes a lot more important when I'm working on my own projects. With no guidelines, I can spend tons of time on a very interesting problem and finally come up with a clever solution... only to realize after that I could have done something much simpler and just gotten it done.