Can average developers use agile methods?
I've often heard the claim that agile methods can only be used by the better developers and that average or below average developers should avoid agile methods. When I get asked this, I have to answer that I don't know the answer - and that this ignorance is natural with any new technique.
When a new technique or tool appears, it's usually tried out first by higher ability developers. This is quite a natural response. Early adopters have to be those who are more thoughtful and caring about their profession. New approaches are usually tried by them before it's tried out on the majority. Thus with any new approach you have to ask the question of whether this approach is only suitable for these more adventurous souls. This is an unanswerable question, because until it's tried by more average teams, you can't tell how it will work for them.
Of course, this doesn't stop people from speculating, and as long as we all understand that this is speculation, I'm happy to join in the fun.
An essential point about agile methods, and a clear distinction between them and the plan-driven methods, is that agilist firmly believe that "individuals and interactions" matter more than "processes and tools." This PeopleOriented assumption means that agilists will always expect a high-ability cohesive team to do better than a team of lower ability, whichever one follows more agile approaches. The assumption does mean that organizations should put their primary emphasis on getting and growing high-ability people for their teams. This does not mean that a low-ability team will do worse with agile than plan-driven methods
Much of agile methods requires judicious skill. Self adaptation is required to change the process, many agile techniques focus on honing skill levels. I think this must mean that an effective agile team need to have some people who are of higher-ability. But this is true of plan-driven methods too. After all plan-driven methods assume that higher-ability people will draw up the plans. Both approaches require some high-ability people, although the way those leaders work with the team is different. The open question is whether you get more leverage of the high-ability people from plans or from collaboration.
Our experience at ThoughtWorks so far makes us very positive about agile methods, but of course ThoughtWorks is known for only hiring high-ability people. Our projects, however, are more mixed since we usually co-source with our clients, and the client staff usually covers a full range of abilities. Certainly we prefer to have a good number of ThoughtWorkers on the team, this gives us a critical mass that both helps our delivery and our skill transfer.So far we've found that the collaborative nature of agile methods works well for us.
Update: Ralph Johnson describes his experiences with students - concluding that XP is better than RUP for less skilled developers.