1 Agile Software Development2 Beginning Agility1. Work for Outcome2. Quick Fixes Become Quicksand3. Criticize Ideas, Not People4. Damn the Torpedoes, Go Ahead3 Feeding Agility5. Keep Up with Change6. Invest in Your Team7. Know When to Unlearn8.
Question Until You Understand9. Feel the Rhythm4 Delivering What Users Want10. Let Customers Make Decisions11. Let Design Guide, Not Dictate12. Justify Technology Use13. Keep It Releasable14. Integrate Early, Integrate Often15. Automate Deployment Early16.
Get Frequent Feedback Using Demos17. Use Short Iterations, Release in Increments18. Fixed Prices Are Broken Promises5 Agile Feedback19. Put Angels on Your Shoulders20. Use It Before YouBuildIt21. Different Makes a Difference22. Automate Acceptance Testing23. Measure Real Progress24.
Listen to Users6 Agile Coding25. Program Intently and Expressively26. Communicate in Code27. Actively Evaluate Trade-Offs28. Code in Increments29. Keep It Simple30. Write Cohesive Code31. Tell, Don't Ask32.
Substitute by Contract7 Agile Debugging33. Keep a Solutions Log34. Warnings Are Really Errors35. Attack Problems in Isolation36. Report All Exceptions37. Provide Useful Error Messages8 Agile Collaboration38. Schedule Regular Face Time39. Architects Must Write Code40.
Practice Collective Ownership41. Be a Mentor42. Allow People to Figure It Out43. Share Code Only When Ready44. Review Code45. Keep Others Informed9 Epilogue: Moving to Agility9.1 Just One New Practice9.2 Rescuing a Failing Project9.
3 Introducing Agility: The Manager's Guide9.4 Introducing Agility: The Programmer's Guide9.5 The End?A ResourcesA.1 On the WebA.2 Bibliography.