Why incremental development is a good thing
Posted on February 3rd, 2007 in Judy's Book, Product, Technology |
The Washington Post Online has an article by Scott Rosenberg about why it took Microsoft so long to release Vista. The article talks about the dangerous temptation to create grand visions of the future in software when what users really want are incremental improvements that address their most pressing problems.
Without that discipline, too often, software teams get lost in what are known in the field as “boil-the-ocean” projects — vast schemes to improve everything at once. That can be inspiring, but in the end we might prefer that they hunker down and make incremental improvements to rescue us from bugs and viruses and make our computers easier to use. Idealistic software developers love to dream about world-changing innovations; meanwhile, we wait and wait for all the potholes to be fixed.
I think Scott is right on the money. Although I am very aware that rebuilding Windows is a vastly different problem than building a consumer website, some of Scott’s points definitely hit close to home. At Judy’s Book, in our past, we undertook two ambitious projects (two too many) which although they were well intentioned, ended up slowing us down, taking too long and in general under-delivering. We were heading towards starting another one of these recently, but fortunately, were able to step back and restructure the project into a series of incremental efforts. (It pays to listen to your development team - go figure.) Initially, you feel disappointment when you realize that your scope is limited, but that’s quickly overshadowed by relief when you realize that you’re biting off achievable chunks that get your ideas into the hands of real users faster.
There’s an argument that says you’ll never radically change your user’s life if all you do is make tiny little improvements to where you started. There’s some truth to this, but I believe you’re more likely to succeed in delivering something radical if you break it up into small pieces. I think a lot of tiny improvements can add up to make a dramatic improvement in a user’s experience. Also, if your grand vision proves too complex to deliver, you’re nowhere.
Incremental development also lets you change course earlier if you’re wrong. You never really know if it’s going to work unless you put it out there and see. Anything that lets you get to that point in less time is the right way forward in my book.