also clusters of practices that work very well together. So well, in fact, that the business value delivered by a cluster is much more valuable than the sum of the values delivered by its parts individually. The most notable of these clusters is Test Driven Development (TDD) which is made up of Automated Developer Tests, Refactoring, Continuous Integration , and Simple Design. Adopters need to be made aware of these sets of generative practices; there are many more than just TDD.
Putting Patterns, Smells, Business Value and Clusters Together
So how does this help me adopt Agile practices ? With the building blocks at hand–the Smells, Practices, and Clusters of practices, it is possible to tailor agile adoption in a step-wise and iterative manner.
- Start with an evaluation of the status quo–what is being done well and what needs improvement.
- Map the areas that need improvement to one or more Smells.
- Prioritize the Smells and pull the first one off the list.
- Check the Practice Patterns that address the Smell in (3). Read them and read their related clusters.
- Depending on your environment, choose one or more of the patterns in (4)–maybe even an entire cluster. Use the advice in the patterns chosen to start adopting those practices.
- Periodically evaluate that the Smell in (3) is indeed getting addressed by the practice being adopted. Adapt the practices for your particular environment.
- Go back to (1) and improve your software development process some more!
Adoption should be iterative and always goal-oriented. The objective is to alleviate the Smells currently present by adopting and adapting the applicable Agile practices. The patterns are starting points. Use them with a modicum of disrespect. As you gain experience, adapt the practices to fit your needs.
Whether we answer these questions with patterns or another format is irrelevant. What is relevant is that these questions that an adopter is faced with are answered at a per-practice level in any format. We, as a community, have the answers to these questions.
About the Author
Amr Elssamadisy is currently a Principal Consultant at Valtech ( www.valtech.com). He considers himself a developer but has also worked for consulting companies since 1999, so maybe an outgoing, people-oriented, developer is a better description. He has been working professionally as a software developer, architect, manager, consultant, etc... for over 12 years helping build software systems in C++, J2EE, and .NET. His first agile development project was a large project XP effort in 1999 where he had a chance to work and learn from some of the best in the field. Since then he has lead, participated, and guided teams in several large and small agile development projects in both the .NET and J2EE worlds.