| Estimates seem to be a common topic in replies. If you can accurately estimate how long a software task will take, you should have already made a reusable component or automation to generate that code. Estimates are meaningless. I've seen PhDs waste endless hours faffing with estimate-calculating spreadsheets. Fundamentally, the universe is unpredictable. Chaotic and complex systems require their starting conditions to be measured to an infinite level of precision to be predictable. The Heisenberg principle means this is, as far as physics can tell, impossible. On a more practical macro level, a complex adaptive system becomes unpredictable once three feedback loops are present (the three body problem is related). Modern computer systems are unpredictable because we cannot predict the interplay between levels of abstraction. It does not matter how smart you are. Unless you have perfect knowledge of all levels of abstraction in the system below you, even in a macroscopic sense you cannot predict the future. Precise estimates will be inaccurate. Confidence ranges and superprobabilities are of some use. Discrete and precise estimates are an utter waste of time at best, and are dangerous and misleading at worst. EDIT Written on a mobile waiting for plane take-off, hence lack of citations. For more on complex adaptive systems, I recommend the works of Murray Gell-Mann and the research output of the Santa Fe Institute, particularly Scott E. Page. |
EDIT: Of course there are projects where you actually know exactly what to do. Happens a lot in consulting. That has nothing to do with Agile though.