Some say it’s immaturity: that software is still a young industry and all the change is the path to some true fundamentals. Others say it’s because software people like making things up and can’t help themselves.
He then proposes a list of “honest, however cynical” models that describe what’s really going on. One of my favorites
Development By Denial (DBD) - Everybody pretends there is a method for what’s being done, and that things are going ok, when in reality, things are a mess and the process is on the floor. The worse things get, the more people depend on their denial of what’s really happening, or their isolation in their own small part of the project, to survive.
The whole piece is worth a read. There are also some good ones in the comments, including one we are trying to end
Change Requirements As You Go Development – when months spent planning and designing the product and at each turn the requirements change