I have often been told that the purpose of a good software process is to ensure quality consistently, independent of the people implementing it. But what I commonly hear from the agile camp is that your success depends on having the right people (as opposed to the right “roles”) on your team. Does that mean that agile isn’t for everyone?
I just read a blog post that repeats this same refrain: process trumps people. But the author asserts that this isn’t the antithesis of agile. In fact, Scrum is a very structured and repeatable process. But is part of the process making sure you have the right people? I don’t remember anything about candidate selection in the Scrum books…
I know, I’m being overly obtuse about this. I’m sure the point is that in order to do agile right, you just need to get your team to all buy in to the same philosophy and practices. But, as I heard Chris Sims say in a workshop on agile processes, “not everyone is a team player”. And… “great programmers with a terrible process will always be more successful than terrible programmers with a great process.” In other words, people trump process.
So, what happens when you get stuck with a team of duds? A common response from agile evangelists about the problem with “problem” people is “why would I even want to work with people like that?” Too true, but there’s a certain snobbishness in such a response that seems to say “I’m too good to be caught working with ‘average’ programmers!” Average… well, by definition, there must be a LOT (about half) of developers out there that are just average, or worse. What happens if agile processes finally take over the world, and the majority of programmers are working in that paradigm? Will it finally collapse under its own weight, because half the team doesn’t have the discipline required?
Let’s turn this thing on its head now. As the “Herding Cats” post points out, people who are OUTSIDE the process, like managers and those trying to work on a long-term strategy, like to know that everything is under control, and that all risks have been mitigated (via, for example, a controlled, repeatable process). That would presumably include trying to get the best people for your project, but accepting that that’s not always possible. Would you choose agile, if the process requires a certain amount of inspiration and discipline (as opposed to some nice, old-fashioned whip cracking)?
The agile philosophy encompasses a set of practices and disciplines that are meant to bring us all out of the primordial code muck and realize our full potential as alpha-developers. But we all know that not everyone is up to that challenge (or just doesn’t want to play ball). So, is agile for everyone?