McConnell’s best ideas included the following:
* Recognize that software development is performed by human beings and that personnel capabilities are critical in software projects.
* Iteration and incrementalism in software development are essential.
* The cost of fixing defects increases over time.
* Software projects tend to follow a predictable intellectual flow.
* The ability to create accurate software estimates can be improved over time.
* The most powerful form of reuse is full reuse.
* Risk management provides critical insight into many software development issues. McConnell cited extrinsic risk management activities, which are bolted onto a project, and intrinsic activities, such as project tracking and UI prototyping.
* Different kinds of software call for different kinds of software development.
* A software engineering body of knowledge (SWEBOK) exists, featuring disciplines such as configuration management, maintenance and testing.
“I’m not convinced [SWEBOK is the ultimate answer],” McConnell said. “I think it’s a very good start, though.”
The other worst ideas in software development cited by McConnell included:
* There are only two development options: iterate everything and iterate nothing (the waterfall model).
* Agile projects are immune to DCI (defect cost increase) dynamics. “The software engineering research really does not bear out this idea,” McConnell said.
* We have to accept “wickedness” in software projects since software projects are for wicked problems.
* Requirements are always changing.”[The] single most common source of changing requirements [is] requirements that were not significantly investigated in the first place,” said McConnell.
* Requirements can be gathered or they just drop out of the sky like manna from Heaven.
* Entrepreneurial companies cannot be afraid of risk.
* One single development approach will work best for all projects.
Steve is the author of the seminal work on Software Development Rapid Development: Taming Wild Software Schedules.