'No Estimates' in Action: 5 Ways to Rethink Software Projects
The idea behind the #NoEstimates approach to software development isn't to eliminate estimates but, rather, to explore other ways to solve problems without specifically asking, 'How long will it take?' Here are five real-world examples of teams that are doing just that.
Tue, November 05, 2013
CIO — My coverage of the panel discussion on how to get beyond project estimates at Agile2013 Nashville garnered a great deal of positive feedback. There was one recurring question, though — Where do we start? — and another common refrain — "My boss would never go for that.
This article will answer the question and provide at least a few hints for conquering the boss' lament.
NoEstimates Means Estimates Aren't Bad, Just Not Essential
Woody Zuill, a development manager at Hunter Industries, introduced the #NoEstimates Twitter hashtag and addressed the concept in blog posts such as If you found estimates have no value, what would you do? Zuill is quick to point out that, while he has experienced some success with the ideas at Hunter, they represent his own opinion. That might be wise, considering the large public pushback on the idea.
That pushback may be due to a misunderstanding. Zuill didn't claim that estimates are "bad" in all cases; rather, they're not always essential to the software development process. Alternative decision-making approaches are possible. In other words, while estimates solve a problem, what problem do they solve, exactly? What other ways are there to solve the problem? That's the discussion Zuill wanted to start.
Instead of arguing can/cannot, let's define estimates and look at some examples of where #NoEstimates is working, in the field, right now.
For the purpose of this article, an estimate is "a length of time it will take to develop software, determined by human judgment and based on experience." There are many ways to do this. You can break the work down into chunks and add it up, you can look at a variety of similar projects to compare, or you can stick your finger in the air and guess. All of those are estimation techniques.
We'll define #NoEstimates as running a software project without any human estimation process. If customers asks, "How long will it take?" that's estimating. If they never have to ask, that's #NoEstimates.
Notice that this means we can still estimate the budget for the department, or the rate of customer adoption to do financial projects. The term #NoEstimates is specifically tied to humans using their judgment to predict development effort for a solution that have not yet fully developed.
Here are five ways to do just that.
1. Make Starting Amount of Money Small; Deliver Working Software Often
J.B. Rainsberger, the author of jUnit Recipes, points out that his first solo software project was just like this. Rainsberger made no promises up front, offering instead to show working software every two weeks — and also allowing the client to fire him with as little as two weeks' notice.