“Frequently Forgotten Fundamental Facts about Software Engineering” by Robert L. Glass (http://www.computer.org/portal/web/buildyourcareer/fa035) summarizes in two pages at least 80% percent of the reasons why software projects fail, in an easy to understand – and easy to believe – manner.
- “Good programmers are up to 30 times better than mediocre programmers”. “Most software tool and technique improvements account for about 5 to 30% increase in productivity and quality”.
Then why is so much emphasis put on tools, and not on people?
- “Efficiency is more often a matter of good design than of good coding”.
Big Up-Front Design might be harmful, but watching the architecture “emerge” as you code is just as wrong.
- “One of the two most common causes of runaway projects is unstable requirements”. The other is “optimistic estimation”.
When “managing” means demanding lower estimates and more features, reality often refuses to budge.
- “Estimation occurs at the wrong time” (that is, when the problem hasn’t been understood yet)
But it is totally common to demand estimates after a cursory (three day glance) at a management summary, and then treating these numbers like cast in concrete.
It takes only 10 minutes to read the paper, and if you have been working as a developer everything will seem awfully familiar – it isn’t only you seeing the emperor wears no clothes.