If you're familiar with large software development projects, you know that the work is done in teams consisting of project managers, requirements analysts, software engineers, documentation experts, and programmers. The cost of owning and maintaining software in the 1980's was twice as expensive as developing the software. In 1995, statistics showed that half of surveyed development projects were operational, but were not considered successful. The average software project overshoots its schedule by half. Three quarters of all large software products delivered to the customer are failures that are either not used at all, or do not meet the customer's requirements.
Software projects are notoriously behind schedule and over budget.
Over the last twenty years many different paradigms have been created in attempt to make software development more predictable and controllable. While there is no single solution to the crisis, much has been learned that can directly benefit today's software projects. Software development today is more of a craft than a science. Developers are certainly talented and skilled, but work like craftsmen, relying on their talents and skills and using techniques that cannot be measured or reproduced. The software industry is still many years away from becoming a mature engineering discipline.