Jurgen Appelo has published the results of his agile practices survey. The information he collected was sizeable, valuable, and interesting. There were a few surprises though.
The highest rated agile practice, or the practice often associated with the highest level of agility, is iteration planning. I was surprised that no technical practices cracked the top 10 list. Continuous integration and TDD deserve a spot in the top 10. In fact, I don't know how to track velocity or perform an iteration demo if these practices aren't present. It was also interesting to find that while iteration planning took the top spot regarding highest level of agility, it also made the list of agile practices that were applied, but deemed not that important.
Suprisingly, the majority of the least imporant practices centered around requirements and design. System metaphor grabbed the top spot, which isn't entirely surprising since there has been ongoing debate surrounding it's true meaning. However, seeing code metrics and analysis in this list was cause for concern because it is these measurements that provide important information on code quality, and it begs the question, "How can we improve what we cannot measure?"
There were quite a few practices that individuals deemed not all too agile, but that are recognized as very important. These include source control/version control, issue tracking/bug tracking, and risk management. This is interesting for two reasons. First, it highlights the important of infrastructure in facilitating agility. Second, that many people don't believe agile methods effectively mitigate risk. Software development is fraught with risk, and managing risk should be the primary reason why we adopt any method. Unmitigated risk is why projects are late, overbudget, and of low quality. Shouldn't the software development process be a risk mitigation strategy? I think so.
Here are a few other surprises. Unit testing is performed by just over 70% of teams, but refactoring is done by more than 90%. I can only imagine the types of problems that 20% who aren't testing are having. Almost every practice in the survey had a level of importance that exceeded the level of application. If folks believe these practices are so important, I'm very curious what's preventing them from adopting the practice. Cultural and organizational obstacles? Too crunched for time? What else?
Overall, the survey was interesting. Demographic information would have been nice. I'm curious how many developers vs project managers vs testers, etc. took the survey. Given that many of the construction practices were deemed less important than the technical practices, I'm inclined to think that there were fewer developers who took the survey than project managers. Regardless, the survey is another useful piece of information that sheds light on the current state of agile. Thank you, Jurgen, for taking the time.