All Software Estimates are Lies
<p>You might expect me to follow that up with some pithy reversal, like George Box’s famous quote about models, but <em>are</em> estimates useful? That’s the question we’ll be digging into here.</p>
<h1>Software Development is Research</h1>
<p>Do pharmaceutical companies ask researchers to provide an estimate on when they’ll have a cure for cancer finished? Researchers can provide estimates on how long it will take to complete a particular study — really good estimates, usually, since research plans generally have schedules — but outcomes like “a cure for cancer” depend on what those experiments uncover. To estimate an outcome like that, we’d need to know in advance what results our experiments will yield, but if we knew that, we wouldn’t need to conduct the experiments. You can’t really see past the result of the next experiment, because what that experiment teaches you is going to inform what the next step should be.</p>
<p>In software development, we don’t really spend any time on problems we already know the solutions to. If solutions already exist, we include a package or library with that solution as a dependency, or download a script, or copy the existing code, or something else that takes seconds to implement so we can move on to the next problem. Nearly all development time is spent on novel problems, problems that we <em>don’t</em> know the answers to. They’re frequently novel in astoundingly boring ways, like “How do I save a data model with these specific fields to this specific database?” But it’s precisely the ways in which this situation is unlike any other (or at least, any other that we could find) that takes up all of our time.</p>
<p><a href="https://betterprogramming.pub/all-software-estimates-are-lies-d5847a080ef9">Read More</a></p>