Sunday, March 13, 2005
In this blog’s tradition of cocking a snoot at traditional project management guidance and conventional software engineering wisdom, I’d like to suggest that you STOP ESTIMATING. That’s it - just say “No!”
Yesterday, I talked about subordinating to capacity. I skipped over the second of the five focusing steps - exploiting the constraint. Exploiting (including protecting) a capacity constrained resource means that you will do everything to insure that its capacity is fully utilized. So why are you wasting that capacity estimating tasks or work items? I’ve seen teams burning 40% of their capacity on estimating. That’s 40% of the capacity wasted on something we know to be inaccurate at best and pure fantasy at worst.
So I ask you, what do you think your customer would prefer? - a promise which says, “we can deliver approximately 100 Features this month, plus or minus 20” (i.e. 80 to 120), or a promise which says, “Well we estimated everything carefully and we are confident that we can deliver 63 Features this month?” (and we are almost completely certain that we will break this promise because this isn’t an exact science).
If you want to fully exploit your constraint - even if you don’t know where it is - stop estimating! Starting planning based on capacity throughput and promote the concept of variation and fluctuation. Make promises based on approximate productivity levels. Banish conformance to specification from your planning and estimating activity. When you can persuade everyone in the system to think differently, to view software engineering through a different lens, to embrace a paradigm of flow of value and variation, then you can actually produce significantly more value for the customer.
[This entry is deliberately a little flippant. See Agile Estimating before passing judgement]