Flashback five years back in time; it is a warm sunny afternoon; phase one of the project has been done and rolled out a couple of weeks ago. I find myself sitting in a meeting where ideas for version-two of the product are being thrown on a white board.
Something keeps biting me deep down inside.
The deployment script; which we said we will come back to later; stands quietly at the bottom of the things-to-do list.
No one seems to be talking about it.
We are moving to version-two; with an implicit; unspoken understanding that the deployment script can wait.
There is one simple fact that we are missing out on; the fact that when your team works on a software; what they are doing is really very similar to participating in a car race.
You race against stupidity; you race against time; you race against a whole lot of other things; but you do not forget the cardinal rule - which is that you do not accelerate on curves and steep turns.
You slow down.
The couple of days that follow a sprint push are usually these slow-down times.
You let your sprints settle down; let them soak; let them stabilize and let each sprint sit there without any new features for a couple of days.
With increase in velocity; no time to slow down and stabilize; all you are doing is moving towards what the folks at 37Signals would call half-assed-mediocrity with a lot of features. In their book; getting real; they explain:
Build half a product, not a half-ass product.
Beware of the "everything but the kitchen sink" approach to web app development. Throw in every decent idea that comes along and you'll just wind up with a half-assed version of your product. What you really want to do is build half a product that kicks ass.
Stick to what's truly essential. Good ideas can be tabled. Take whatever you think your product should be and cut it in half. Pare features down until you're left with only the most essential ones. Then do it again.
With Basecamp, we started with just the messages section. We knew that was the heart of the app so we ignored milestones, to-do lists, and other items for the time being. That let us base future decisions on real world usage instead of hunches.
Start off with a lean, smart app and let it gain traction. Then you can start to add to the solid foundation you've built.
With every product sprint that you roll out; give it some soak time to stabilize. Do the housekeeping tasks. Fix your broken windows; give your team time to move away from any diversions they may have taken and get on the right track again.
I wish you good luck.