| | Copyright |
| | Praise for Kevin Tate's Sustainable Software Development |
| | The Agile Software Development Series |
| | Acknowledgments |
| | About the Author |
| | Foreword |
| | Introduction |
| | | Where This Book Fits |
| | Chapter 1. Sustainable Software Development |
| | | Sustainable Development |
| | | Chemical Manufacturing and Sustainable Development |
| | | Continual Improvement: The Accelerator Button |
| | | Summary |
| | Chapter 2. Unsustainable Software Development and its Causes |
| | | Technical Debt and the Flywheel |
| | | The Perils of Jumping in Place |
| | | The Causes of Unsustainable Development |
| | | Summary |
| | Chapter 3. The Principles of Sustainable Software Development |
| | | Why Principles Are More Important Than Practices |
| | | Applying the Principles of Sustainable Development |
| | | Culture, by Descriptive Words and Phrases |
| | | Summary |
| | Chapter 4. Working Product |
| | | Practice 1. No "Broken Windows" |
| | | Practice 2. Be Uncompromising about Defects |
| | | Practice 3. "Barely Sufficient" Documentation |
| | | Practice 4. Continuous Integration |
| | | Practice 5. Nightly Builds |
| | | Practice 6. Prototyping |
| | | Practice 7. Don't Neglect Performance |
| | | Practice 8. Zero Tolerance for Memory and Resource Leaks |
| | | Practice 9. Coding Standards and Guidelines |
| | | Practice 10. Adopt Standards (Concentrate on Your Value-Add) |
| | | Practice 11. Internationalize from Day One |
| | | Practice 12. Isolate Platform Dependencies |
| | | Summary |
| | Chapter 5. Defect Prevention |
| | | The Role of Quality Assurance |
| | | Practice 1. Ruthless Testing |
| | | Practice 2. Use Available Tools |
| | | Practice 3. Pair Programming and Code Reviews |
| | | Practice 4. Lightweight Root-Cause Analysis |
| | | Summary |
| | Chapter 6. Emphasis on Design |
| | | Practice 1. Design Vision |
| | | Practice 2. Guiding Principles |
| | | Practice 3. Simple Design |
| | | Practice 4. Refactoring |
| | | Practice 5. Design Patterns |
| | | Practice 6. Frequent Rapid Design Meetings |
| | | Practice 7. Commitment to Rearchitecture |
| | | Practice 8. Design for Reuse |
| | | Summary |
| | Chapter 7. Continual Refinement |
| | | Practice 1. Iterative Development |
| | | Practice 2. Release Planning |
| | | Practice 3. Daily Standup Meetings |
| | | Practice 4. Retrospectives |
| | | Practice 5. Coaching and Team Development |
| | | Practice 6. Make Key Metrics Visible |
| | | Summary |
| | Chapter 8. Culture Change and Sustainable Development |
| | | Making Change Happen |
| | | Change Factors and Enablers |
| | | Start with What You Can Control and Influence |
| | | Avoid Transition Plans |
| | | Turning Unsustainable into Sustainable Development |
| | | Sustainable Development for New Projects |
| | | Some Other Ideas |
| | | Change Examples |
| | | Summary |
| | Appendix 1. Practice Summary |
| | Appendix 2. Extreme Programming and Sustainable Software Development |
| | | The Four Values of XP |
| | | XP's Twelve Practices |
| | | The Strengths of XP |
| | | The Weaknesses of XP |
| | | Simple Design |
| | | Common Misconceptions of Extreme Programming |
| | | Other Agile Development Methods |
| | | Summary |
| | Appendix 3. Sustainable Software Development and the CMM |
| | | The Capability Maturity Model (CMM) |
| | | Agile Development and the CMM |
| | | Summary |
| | Appendix 4. Recommended Reading |
| | | Chapters 1 and 2: Sustainable Software Development, Unsustainable Software Development |
| | | Chapter 3: The Principles of Sustainable Development |
| | | Chapter 4: Working Product |
| | | Chapter 5: Defect Prevention |
| | | Chapter 6: Emphasis on Design |
| | | Chapter 7: Continual Refinement |
| | | Chapter 8: Making Culture Change Happen |
| | Conclusion |
| | References |
| | Index |