Is Estimating A Wasteful Practice?
Well-known agilist J.B. Rainsberger started an interesting discussion on the XP Yahoo Group that challenges the notion of doing estimation on agile software projects. J.B. recounted a conversation he had with Arlo Belshee, one of the two 2008 Gordon Pask Award winners, about the topic:
[Arlo] told me about some research and practice he has completed regarding cost estimates--notably, not making them. He argued, or so I managed to discern, that the energy that goes in to making and managing cost estimates outweighs the benefit of having them.Mike Hill chimed into the discussion noting how the folks at Industrial Logic have moved in this direction internally for development of their Agile eLearning products:
For our own work we're finding that a pure 'pull' model works just fine. We 'pull' stories off the top of our customer-sorted stack and implement them. Planning meetings have gotten smaller and focus now on what is most important.In his "Estimating Considered Wasteful" talk at Agile 2008, Industrial Logic founder Josh Kerievsky had gone into more detail on this. He explained how they were finding success by delivering in smaller, more frequent "micro-releases", enabling them to operate just as effectively using "gut feel" as they had previously with "points & velocity", but without having to spend time putting numbers on cards and doing math.
Not long ago, Amit Rathore had touched on similar ideas. Rathore describes a process where the next most important stories are broken down to a point where they are all of about equal size (a couple days) and pulled into the upcoming iteration in priority order:
Here’s the trick - each story should not be more than 1-3 days of work to implement. Pick the next requirement and do the same thing, keep going until your two weeks seems full.Rathore explains how this approach not only reduces "muda" (waste), but adds value in many other ways as well:
The fact that this saves time and effort is actually just a good side-effect. The real value comes from being able to truly stay in control of the development process. Tiny stories allow you to change them when required, pull them from the backlog when needed, or to add new ones whenever business demands it. It also lets you move faster because it’s easier to write code in small incremental chunks, testing is easier, and pushing small releases out to users is easier.David Anderson made similar remarks quite some time ago, and has been very active in the "Kanban for software" movement since, an initiative with a very strong tie-in to the ideas being discussed by Belshee, Kerievsky, and Rathore.
And finally, by imposing the discipline that each story be small, it ensures that people think about the requirement deeply enough before coding begins. It also forces the team to break down requirements into incremental pieces and totally avoids never-ending stories that always have a little bit left to complete.
One might look at each of perspectives and ask "are there really 'no estimates'?", as J.B. had thought of it; Kerievsky and Anderson both say something akin to "gut feel", Rathore says "equal size". Probably not, but is that good or bad? Should the question really be "no estimates?", or should it be "no numbers?" Something else?
Who else has experience running agile projects without estimates? Whether you do or don't, take a moment to join the discussion here and/or on the XP Yahoo Group.
T-Shirt Size
by
Deborah Hartmann
Re: T-Shirt Size
by
Deborah Hartmann
Stories of equal sizes
by
Stefan Roock
Re: T-Shirt Size
by
Christian Gruber
Seriously, though, I'm liking Amit's approach to regularizing the size of items in the backlog (to the extent possible), as it makes forecasting (which is what most people want from estimates) a much simpler process. And it's substantially in line with the queueing theory notion that the more regular the units in a queue, and the smaller those units are, relative to the width of the queue, the less slack you need for optimal throughput. (ie, the more efficient the queue is.) In my experience it works for plumbing, highways, but also software teams.
Is it really 'estimation-less'
by
Amit Rathore
It is in the same spirit as pair-programming - this practices eliminates the need for code-reviews. In a rather zen-like manner, it does this by doing more of it - a pair of developers constantly review code, all the time.
Breaking stories down into small chunks is a Good Thing (queueing theory). If nearly all stories can be broken down to this level, then many other benefits follow (as mentioned on the various blog posts above). And there's the gotcha - to achieve that homogeneity - one has to constantly estimate.
It is just that the focus is different - improving throughput, as opposed to meaningless prediction - and this is a simple way of getting there.
Semantics?
by
Deborah Hartmann
Others do it with "same sized" stories. Who gets to estimate that? How long does that conversation take, to get stories to uniform sizes? I'm not sure this variant eliminates estimation.
Estimation fallacy
by
rob bowley
Just a few days ago I posted a response to Jeff Atwood(Coding Horror)'s post arguing developers need to write exhaustive lists of everything they need to do and that is the only way to get reliable estimates. My argument is the same as above.
Jeff's post
www.codinghorror.com/blog/archives/001161.html
My response
blog.robbowley.net/2008/8/11/lists
Its a bit of an obsession of mine at the moment, I have a few more posts up my sleave around the issue and would be very grateful for feedback you have on my thoughts.
Re: Estimation fallacy
by
Christian Gruber
So how do we provide that customer with confidence that they're going to get value for their money... and how much value for how much money, so they can know how much to allocate? These are all questions that, even if estimation is total crapolla, we still have to answer this basic problem in another way. Just "not estimating" and assuming it'll all work out only works inside of a very high-trust context, and how do we handle questions of allocation during the trust-building phase with a customer?
Riddle me this...
by
Kurt Christensen
You call up a contractor, and she says that she won't give you any estimates, but she will show clear progress on a weekly basis, and you're free to kill the contract at the end of any given week if you're not satisfied.
So you begin work. They blast out the back wall, frame up the new rooms, and they're beginning work on the kitchen expansion, when you begin to realize that you're burning through your savings faster than you expected, and you're not sure if you'll be able to complete the job as you'd like. In fact, you're beginning to worry if you'll be able to get the thing completed in any useful way at all. At this point, you ask the contractor for an estimate of the work remaining to be done, and she gleefully responds, "I don't give estimates, but you can cancel at any time!"
So what do you do? (And if your response is that this is nothing like a software project, then I would tell you that you've either not had much experience with remodeling projects, or software projects, or both.)
Re: Estimation fallacy
by
Karl Scotland
Rather than making commitments through estimation and prediction, the same commitment and reliability can be achieved through measuring performance of throughput and cycle time of features, and using that information to make forecasts.
This technique requires either using the technique descried by Amit to same-size work items, or by classifying work items into similar sized categories (e.g. T-shirt sizing)
Re: Riddle me this...
by
Jim Arnold
Aside from the whole "software development is like building a house" fallacy - the kind of software projects being discussed here don't just show progress, they deliver working software, and quickly. If your project requires several iterations (however long they may be) before it delivers any kind of value, it's usually time to take a critical look at the practises being used.
I see your home improvement plan as being equivalent to spending X amount of time on requirements gathering, followed by X amount of time in development, followed by X amount of time testing, etc. Of course if you cancel such a project halfway through you end up with bugger all.
Jim
Re: Riddle me this...
by
Bruce Rennie
Run your scenario again, but this time have the contractor give you a super precise estimate up front.
What's the difference? Aren't you still screwed? Wasn't the error allowing the contractor to have too much work in process such that you weren't actually able to take advantage of the "cancel at any time" clause?
Honest questions.
Re: Riddle me this...
by
Kevin Puscas
Re: Riddle me this...
by
Mike Bria
They are more about changing the way we as go about doing our forecasting.
I was working with a company a few months ago operating on a 2 month release cycle. As you'd expect, they wanted to have at least some idea of what was coming out of the other end of the 2 months. We successfully used a "numbers"-less estimation approach to achieve that; "successfully" in that we were able to give a good enough idea, then go about using "pull-based" iterations to continually grow a product over the 2 months that everyone was happy with. Of course, the end result was different than the original projection, but it was better.
Either way, the key still is focusing on *really* delivering running/tested features (WORKING SOFTWARE) each step of the way. If you release as you go, every iteration, great. If you have more long-term release cycles (assuming they're no longer than a few months), great too.
The point is to be less mathematical about how you go about deciding what you sign up for.
Not "whether" but "where"..
by
Javid Jamae
Funding is one of the main indicators of whether a software environment would be able to adopt this model. If your funding machine can be recalibrated to work in a negotiable scope or or time & matieral fashion, then there is no reason that "micro-iterations" shouldn't work. But convincing people to pay for software in this fashion is not always easy.
Expert-level Practice
by
Dave Rooney
Seeing as all the Industrial Logic folks are experts at (I)XP, wouldn't this be considered an expert-level practice?
If a team is in the Shu or Ha stages of learning, I'm not convinced that they're good enough at breaking down the work into small enough stories to use a pure pull process. In IL's case, Josh was the Customer, n'est-çe pas? How many teams have someone that advanced in that position?
Dave Rooney
Mayford Technologies
Implicit Estimates
by
Gavin Terrill
Re: Implicit Estimates
by
Mike Bria
You're statement highlights a key concept: the idea of "Bargain Hunting" (as Josh K likes to say). Basically, at the heart of successful agile is a die-hard mentality amidst the team to constantly ask and answer the question "how can we deliver the most value in the shortest time". At its best, what this looks like is a team that's constantly trimming the "Feature Fat" off each and every story (another Josh K term) so that it can get the important stuff quick, or at least first.
This may sound odd and counter-intuitive, but I've had experiences where putting numbers (estimates) on the cards actually acted as an inhibitor to this "bargain hunting" culture; rather than looking at a story and always building the "simplest thing that could work" (ie, as "fat-free" as possible), they'd just build a "5", or a "3" or "8". One of the downsides to the number - the "crutch-factor".
All, I'd like to thank everyone for the fabulous discussion around this topic - advancing our craft lies in these debates, please keep it up! Also, remember, the topic is also running on the XP Yahoo Group, jump in there too.
Re: Riddle me this...
by
Andrew Goddard
Here here Bruce!!
I think this is the best answer I've heard to the argument presented by Kurt.
I guess at least with the super precise estimate up-front the home-owner can later sue the contractor, spend a lot of money on lawyers and time in court (more wasted productivity) and then eventually settle and therefore only get a portion of their investment back and be jaded with any future contractors.
The analogy made would work better if I was going to build this addition, I might start with the kitchen remodel, but I would keep in mind that I would have a second floor going in and consider having some underlying architectural (evolving architecture) support in my kitchen, but I wouldn't rip everything down and have a gapping hole. Of course I may not put the pipes in for the bathroom that run through the kitchen, so I may have to go back and refactor that, but it's a trade-off.
Keep in mind Kurt that the goal is to have something "potentially shippable" at the end of each week not something that has to wait until the finished product (Jim makes this point too). The idea is that I can walk away at that point because I do have value and something I can use. For example, I added the new island and sink in the kitchen. Next week I may prioritize the removing the old sink and counters and replacing them with the new counters and cabinetry. I think "gut feel" the contractor could tell me if it's doable (commitment) and then give me some warning if not (manage client expectations). I can also see progress during the week and give my input if needed.
Regards.
Re: Riddle me this...
by
Kurt Christensen
Anyway, to your first point, I might be screwed in that I wouldn't have my remodeling work done, but at least I wouldn't be out of money with a house half torn apart.
Your second point resonates more strongly with me - I would indeed be in better shape if I could work more closely with the contractor, so that I didn't find myself in a bad position. But, to pay for these contractors, presumably I have to go to work every day. So, I can't check in with the contractors all the time; I have to have some notion of an iteration, and I'd like some idea of a plan with estimates when I begin that iteration - even if the iteration is just a day.
The analogy goes further. Once the contractor begins framing the adition to the kitchen, I'm not left with something useful if I need to fire them at the end of the week - I'll either need to find someone else to finish the job, or else I'll have to tear it all down and rebuild my back wall - assuming I haven't run out of money. Likewise, there are *some* classes of software for which we can meaningfully talk about creating potentially shippable software in short iterations. But there are lots and lots of projects for which this simply isn't true.
As an example, I'm currently working with a software company to help them transition to more agile processes. They have a big huge product, with a big huge complicated codebase. Now, when the sales people go talk to customers, they need to be able talk in terms of the 5 or 10 major features which will be coming out in the next product release - they can't meaningfully talk about a 5000-item prioritized backlog. For each feature, we could argue about whether or not some particular little thing gets added or not, but at some point, if I've lost, say, 25% of the backlog items associated with that feature, then from the perspective of a salesperson or a customer, I can no longer realistically say that that feature exists.
I guess it comes down to the reality that in many environments, there are people who need to make commitments based on our work, in order to generate revenue to keep paying for our work. And this requires plans, which require estimates. The estimates certainly don't have to be perfect, but from a business perspective I need *something*.
Re: Riddle me this...
by
rob bowley
Software is not a house. Sorry Kurt, but its such a crap analogy. I use "building a house" to explain what making software is exactly not.
If software was a house and I was a contractor given the above conditions I would build something that was usable as soon as possible (e.g. a wooden shed extension), see what the customer thinks and then rebuild it every two weeks adding more and more of the requirements and responding to the feedback as we go. In the end we'd have as much of the requirements that were possible with the allocated money and time frame. We'd have not gone over budget, been able to respond to unexpected events (e.g. finding out the foundations are not sufficient) and the customer could change his mind (on windows, room layouts etc) as we go.
Software is not like building a house - we have the luxury that it's relatively inexpensive (if we've followed good design principles), to go back and change it as often as we like. I say, tell me honestly how much you've got to spend/how much time you have and I'll give you the best possible value for those conditions. If an unexpected event occurred which means we can't deliver it well, it would have happened if we'd estimated it anyway. At least my way we're more likely to find out sooner and hopefully save the customer some money/embarrassment.
Re: Riddle me this...
by
rob bowley
Re: Riddle me this...
by
Sean Kennedy
You and your contractor should have figured out the cost of materials (COTS and production hardware in the software world?) and the contractor should have been able to give a 'ballpark (gut) estimate', similar to what Josh Kerievsky was talking about in the article.
Educational Content
Writing Usable APIs in Practice
Giovanni Asproni May 19, 2013
Concurrency in Clojure
Stuart Halloway May 17, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think