Incremental Software Development
This first appears to be as counterintuitive as building a house one room at a time, without an overall blueprint. But unlike a house design, in many software projects the stakeholders don't really know what they want the software to look like or do when it is finished. (Even people who build custom houses usually end up with some things they wish they could change). Also, software is "soft" and is not limited by physical constraints. It's true that some software ends up being re-written or discarded, but that's always the case with software development. The bigger problem is when the traditional approach to lock in a"Big Architecture" as the first step in the process (like building a house) ultimately constrains the development team from adapting when the Big Architecture can't adapt to changing product requirements.
