Because a lot of development is paid by the hour/week, and managers' collective conscious took decades to perfect the art of pulling projects along - otherwise market forces (cost to land a customer vs revenue) won't make their businesses viable.
Also, because many projects are initiated by mistake or by sheer Dunning and Kruger effect (customers having more money than brains in general, and pouring it into the fields they have no idea about), that makes framing project in some coherent way, keeping it at least somewhat sensible looking to keep the money flowing, difficult, requiring a lot of back and forth and grudges, and makes keeping decent developers difficult because they are forced to do obvious bs, thus complicating completion.
I came across this analogy recently and found it very appropriate https://www.quora.com/Why-are-software-development-task-esti.... It is a fictional story of two friends who want to walk from San Francisco to LA down the coast in 10 days and how all their assumptions are shown wrong when they start doing it.
This. Aside from identifying specs and implementing them correctly.
The development toolchain becomes inherently slow and things like CI/CD are often brittle and not implemented until their returns have severely diminished.
Because most customers does not know what exactly has to be done in order to solve their problem, and you have to re-develop stuff multiple times. Or to adhere with some odd practices/requirements which are only to sign some papers or other unrelated stuff most of the time...
8 comments
[ 5.0 ms ] story [ 33.6 ms ] threadAlso, because many projects are initiated by mistake or by sheer Dunning and Kruger effect (customers having more money than brains in general, and pouring it into the fields they have no idea about), that makes framing project in some coherent way, keeping it at least somewhat sensible looking to keep the money flowing, difficult, requiring a lot of back and forth and grudges, and makes keeping decent developers difficult because they are forced to do obvious bs, thus complicating completion.
The development toolchain becomes inherently slow and things like CI/CD are often brittle and not implemented until their returns have severely diminished.