This
book on lean software spells out the exact mode of software development I prefer. I cannot emphasize enough on the basic principles of lean thinking proposed in this book.
- Iterating towards excellence: software development as an exercise in discovery
- Managing uncertainty: "decide as late as possible" by building change into the system.
- Compressing the value stream: rapid development, feedback, and improvement
- Empowering teams and individuals without compromising coordination
- Software with integrity: promoting coherence, usability, fitness, maintainability, and adaptability
- How to "see the whole"— even when your developers are scattered across multiple locations and contractors
Many managers have problems with rapid development-feedback-improvement iterations and delayed decision making to manage uncertainty. With respect to empowering teams and individuals, I have witnessed managers turning extraordinary engineers into average engineers by simply enforcing fat software engineering processes that completely weaken them.