From a Medium post titled "Estimates? We Don’t Need No Stinking Estimates!":
Why is software so late? One venerable intellectual tradition in the field says the answer lies in software’s very nature. Since code costs nothing to copy, programmers are, uniquely, always solving new problems. If the problem already had a solution, you’d just grab a copy from the shelf. On top of that, we have a very hard time saying when any piece of software is “done.”
These were the points raised by physicist Aaron Santos when I turned to him for help understanding the #NoEstimates controversy — he’s the author of a book titled How Many Licks? How to Estimate Damn Near Anything. He said software development is less like other engineering fields and more like basic scientific research, where estimates are to laugh: “An equivalent question from my field would be, ‘Estimate the amount of time it will take for us to discover what dark matter is.’ I have no idea how long that will take! With problems we’ve never faced before, the usual techniques of estimation don’t always work.”
I am generally sympathetic to the motivations of the #NoEstimates crowd, although as I have said before, I do not think there is all that much to it, once you peel back the Twitter rhetoric. Whenever they are pressed on the topic, #NoEstimates advocates tend to fall back on "Well, of course we don't mean no estimates…"
The idea that a software developer cannot make an educated guess as to how long it will take her/him to build something is, frankly, ridiculous. Will the guess maybe turn out to be wrong? Maybe. Will the thing that s/he is building change and therefore need to be re-estimated? Perhaps. That said, instances where the the thing being built is so unique that no prior experiences are of any use are exceedingly rare, and claims like "We have never die this exact thing before, so we have no idea what it will take" strike me as special-snowflakeism. I have never written this exact blog post before, but I can tell you with a fair degree of confidence that I will have it done today or maybe tomorrow, unless something else comes up to interrupt me.
I view #NoEstimates largely as a protest movement. Software developers are, rightly, sick of having napkin math and finger-in-the-air guesstimates converted into hard deadlines by know-nothing managers and then getting beaten up by those same managers when those bogus deadlines fail to hold. Perhaps they have tried to be reasonable, to caveat their estimates, and have been rebuffed. It's now a Howard Beale moment.
Maybe that's what it take, though—heightening the contradictions until something breaks, until the system gives way.