Hacker News new | ask | show | jobs
by EngineerBetter 2639 days ago
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.

1 comments

Another way to put it: If you know how long something will take in advance, you have a solution in mind. It is unlikely that this solution is (A) the best one and (B) the one you will actually implement. It would be stupid to ignore information you learned along the way. If you could actually predict the future you should invest in the lottery, not in software.

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.

> If you could actually predict the future you should invest in the lottery, not in software.

Hear, hear!