How to Build Better Software
The problems of software projects are concentrated in three areas: schedule, cost, and quality. These problems have accompanied software development from the beginning, so they are not new. Nor have they been ignored. Huge amounts of thought and effort have been focused on them with unfortunately modest results. Improvement efforts have been concentrated on management technique (think PMO), process improvement (CMMI, for example), and better tools. These are all good things, and I can’t imagine embarking on a development activity of any magnitude without them. However, they have not significantly reduced the incidence of schedule, budget, and quality problems. Since the problems remain, obviously these remedies have not effectively addressed the root causes of schedule and cost overruns and poor quality.