We find that whole communities suddenly fix their minds upon one object, and go mad in its pursuit; that millions of people become simultaneously impressed with one delusion, and run after it, till their attention is caught by some new folly more captivating than the first.
– Charles Mackey, Extraordinary Popular Delusions and the Madness of Crowds, 1852
There is a short essay by David Longstreet titled "The Agile Method and Other Fairytales," that resonated with me when I hear about empirical methods used for agile and especially when used for #NoEstimates. David writes
My house was built in 1836 and it is two shades of pink, blue and white. Any kindergartener can tell you when red and white are mixed it creates pink. The colors of the pinks of my house are “pink velvet” and “soft serenade”. These colors have very defined specifications. The idea of empirical process control is to adjust the inputs to control for the exact specified output. Ogunnaike writes, “The system is treated like a black box and stimulated by changes in input, so that the response can be observed and analyzed.”
The amount of red pigment in the red paint can vary and this can cause variations in the final pink color. While the paint is being mixed, the red pigment is monitored, measured and controlled automatically. If the red pigment is more than expected then less red paint is used and more white paint is used. On the other hand if the amount of red pigment is less than expected, then less white paint is used and more red paint is used. The inputs are automatically controlled to produce an exact final product. This is automated empirical process control.
With Agile the final product and inputs are not defined upfront. They are figured out as the project moves along. With Agile the color of paint is not known, nor are the input colors. Now imagine painting my house using Agile methods. I don’t know what color I want to paint my house so the painter needs to bring all the mixing tools and paint colors to my house. The painter would paint a bit and ask, “Is this the color you want? Then they would paint some more and ask, “Is this the color you want?” If I change my mind they just mix up some new colors and keep painting. Eventually the painters would have to go back and repaint (iterate or code/test) what they originally painted. We would iterate through this process until my house was painted. This iteration approach would be expensive and time consuming.
In empirical process control the final product is well defined. Since inputs can vary, tolerance levels are specified within some given range. With empirical processes control everything is defined including tolerance levels. Nothing is occurring by some random chance. Agilistas are misusing the term empirical and they do not understand the difference between empirical modeling and empirical process.
In successful agile projects - or any project for that matter - the Capabilities needed to accomplish the business goals, the mission, or solve any problem, for needed cost, at the needed time are defined in the Product Roadmap and Release Plan. Without knowing something about these capabilities, the project becomes a Death March.
Since all projects operate in the presence of reducible and irreducible uncertainty, both creating risk - it is folly to proceed with spending other people's money without being able to estimate the outcomes of any decision made during the project. This estimating process is part of any closed loop emperical control system that is steering toward a defined goal - the needed capabilities.