The pragmatic programmers have done it again. They have written a very usable and accessible book to help developers be better developers. With chapter topics ranging from Agile Feedback to Agile Collaboration, the authors give readers 45 solid practices that they can start using immediately to make them better at their chosen craft.
List of Practices
- Work for Outcome
- Quick Fixes Become Quicksand
- Criticize Ideas, Not People
- Damn the Torpedoes, Go Ahead
- Keep Up with Change
- Invest in Your Team
- Know When to Unlearn
- Question Until You Understand
- Feel the Rhythm
- Let Customers Make Decisions
- Let Design Guide, Not Dictate
- Justify Technology Use
- Keep It Releasable
- Integrate Early, Integrate Often
- Automate Deployment Early
- Get Frequent Feedback Using Demos
- Use Short Iterations, Release in Increments
- Fixed Prices Are Broken Promises
- Put Angels on Your Shoulders
- Use It Before You Build It
- Different Makes a Difference
- Automate Acceptance Testing
- Measure Real Progress
- Listen to Users
- Program Intently and Expressively
- Communicate in Code
- Actively Evaluate Trade-Offs
- Code in Increments
- Keep It Simple
- Write Cohesive Code
- Tell, Don’t Ask
- Substitute by Contract
- Keep a Solutions Log
- Warnings Are Really Errors
- Attack Problems in Isolation
- Report All Exceptions
- Provide Useful Error Messges
- Schedule Regular Face Time
- Architects Must Write Code
- Practice Collective Ownership
- Be a Mentor
- Allow People to Figure It Out
- Share Code Only When Ready
- Review Code
- Keep Others Informed
I found that the book's angel and devil characters dancing on the developers shoulders help convey the importance of the practices like Work for Outcome and Listen to Users. Each practice starts out with a comment made by one of the devils which can represents you on one of your lazy days when you are not thinking in an agile way. These devil's comments describes the practices that should be avoided like in the practice Automate Deployment Early.
“It’s OK to install your product manually, especially to QA. You don’t have to do it all that often, and they are pretty good about copying all the right files.” The Devil
Every practice is then followed by practical advice on how to avoid or mitigate the source of the problem that the practice is trying to solve. It is in these pages that you will find the important information on the Why and the How of each agile practice.
The authors talk at the end of the book about how they have introduced these agile practices to developers on exsisting failing projects to try and turn them around. It is this advice that I find very usable to me in my role as a consultant. They do advise that adding too many new practices to an unstable or failing development projects would not be advisable. They first advise us to stablize the development effort before introducing new practices.
Conclusion
I have been a fan of the great work from the pragmatic programmers and this book does not disappoint. The authors have skillfully boiled down their knowledge of agile practices into readable, usable and actionable practices that can be applied by developers and managers alike today.