Agile Software Development: The Cooperative Game, ISBN-13: 978-0321482754, 2nd Edition
Alistair Cockburn takes on the pundits of the traditional "software engineering" concepts.
There are academics and engineering practitioners in software development and other technical fields who look on from aloft at the SW development programs, many very large, that fail and opine that had the SW authors taken more lead from the established engineering disciplines that the projects would not fail. They assume that the "engineers" that write SW do not complete architectural designs, reviews and experiments. They assume there is no high level design too, only a jock and his greasy keyboard, lots of coffee and hundreds of late nights.
They make the fundamental error of assuming before judgment.
Also, they assume that the practices in their field of engineering are uniformly conducted in such a way that great errors in large projects can not be made. Is there evidence to the contrary ?
Well - in software we have for examples:
http://www.spectrum.ieee.org/computing/software/why-software-fails
Also, the infamous Standish Group CHAOS reports :
The 10th edition of the annual CHAOS report from The Standish Group, which researches the
reasons for IT project failure in the United States, indicates that project success rates have
increased to 34 percent of all projects. That's more than a 100-percent improvement from the
success rate found in the first study in 1994.
This is not comforting.
Alistair mentions one of McConnell's quips :
".. civil engineers make SW engineers look like amateurs in terms of colossal failures"
Grady Booch, "On Architecture" (2012)
As Dave Parnas noted, "As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications" (Evolution of safety critical software -- 1990)
... Can this be generalized into all systems ?
John Gall notes " a complex system that works is invariably found to have evolved from a simple system that worked" ... does complexity get bigger in software systems "more easily" than in :
- physical systems
- biological systems
- chemical systems (a physical system)
- Fluid dynamics ... etc