Really wish this article would have went into the economies of scale in more detail and mention ways to mitigate unexpected complexity.
You can remove a lot of the unexpected complexity risk by being responsible about your stories. Do just enough design up front, groom the requirements well, make use of time boxed spikes when tech is fuzzy and break large stories into smaller well define ones.
I absolutely hate estimates. They bias work toward the estimable, which is hostile to people at any level of talent, because only menial work can be reliably estimated.
Real, genuine deadlines (i.e., a piece of machinery is going into space, or a piece of software has to be compliant with regulation by Jan. 1 or we’re all fired) should be a collective responsibility and the organization ought to be so overstaffed and overprovisioned so that there is almost no chance of them being missed. This requires adult project management, with lots of redundancy and padding in the system– not “Agile Scrotum” as conducted by 27-year-old PMs who are bottom-20% Ivy League grads with no skills.
Most “deadlines” in business exist because some sociopathic asshole up top is trying to get away with understaffing. Given that this is a zero-sum transaction (he saves money, workers have worse hours) I don’t see why there aren’t more programmers rebelling against the horrendous deadline/micromanagement culture that is just destroying what is left of this industry.
Nothing demotivates me faster than “timebox this to a week”. Look, even my enemies agree that if I took an IQ test, I would come up as Not An Idiot. (At least, not an idiot in general. No IQ level precludes being an idiot on occasion.) Given that I’m Not An Idiot, and that I also know a lot about CS, math, and software (largely due to more than a decade of hard work) I feel like I can defend the claim that I’m utterly wasted on something so unimportant that it should be scuttled if it takes six days. If we’re already at “timebox this to a week”, why don’t we clean up some clearly-useless complexity and not do it at all? Trust me: if a PM can look at it and estimate how long it should take, then you can give it to some pothead high-school dropout, much cheaper, and everything will be fine. Or, in many cases, just not fucking do it.
The problem is that most tech CEOs are ill-equipped to manage creative work and the performance/control tradeoff that it involves, but they can squeeze cash out of the investor/executive ranks by pretending the part. The old-style corporate R&D departments had their (small) issues, but one thing can be said about them: you answered to smart fucking people who understood, if nothing else, how creative work actually happens. Sometimes they were socially naive or even awkward people– and that’s part of why private-sector R&D died in this country– but they weren’t fucking dumbasses. Unfortunately, this industry is full of Agile Scrotum snake oil convincing people of mediocre talent that they, too, can manage teams of 140+ IQ R&D people. (“Just add Backlog Grooming Meetings!”) They can’t.