In the discussion of #NoEstimates, it seems difficult to discover what type of software is being built where #NE are applicable. Some participants provide some insight - OSS for example. Others appear to intentionally not say and consider software as the domain, rather than some specific business or technical domain.
There are several drivers here, from field research
- Estimation inaccuracy is a cause of cost growth, made in the early stages of the life-cycle, could be off by as much as a factor of four [Boehm 81]
- This inaccuracy is primarily due to the lack of a clear understanding of the software requirements.
This last bullet is the primary motivation for agile processes in development and the cost estimating processes in support of this development.
One more thing, the notion that estimates are some how not needed - the very name of #NoEstmates (it's name and its explanation) - ignores the business aspects of writing software using someone elses money.
Some where, some how, a budget for the development needs to be defined. It can be flowed down from on high and used to fund a fixed duration development effort - this is called time boxed scheduling. It can fund a limited duration work effort where a steady state production of stories can be delivered - assuming they a small chunks and the customer is tightly coupled ot their production - this is called rolling wave. Or there can be a design to cost processes, where developers see the budget, have some means of estimating what their capacity for work is and provide that estimate - complete with the confidence level and appropriate margins on time and cost - to the owner of the money.
But an estimate has to be made some where, by some one, since the money just doesn't fall out of the sky. If the #NE'ers don't want to estimate, then someone has too.
Here's a picture of one approach to classifying software cost estimating to establish a set of framing assumptions that might define the boundaries of the ideas. The reason for this classification is to understand what kind of estimating is applicable in what kind of software development domain. These are the drivers.