Two Forgotten Agile Values: Discipline and Skill
The short version: Too many Agile projects lack the skill they need to execute. Every project must be one where people are constantly improving their skills. But skills are of no use without the discipline to use them, and Agile projects require more discipline than conventional projects.
The Manifesto for Agile Software Development was a message from software development teams to the business: "we know you've been disappointed in the past. Give us another chance—we think we've finally put the right ideas together."
Surprisingly, we were given another chance, and enough teams did well enough that Agile is now a reasonably safe choice for a business. The challenge for teams isn’t so much getting a chance as it is executing once they have. Many teams aren't executing: they're floundering, and not in ways that the Manifesto can help.
It's a sad fact that many team members lack the skills they need. Some teams think Agile is a matter of tools: stuff people with big monitors in a single room with lots of whiteboard space, put a modern refactoring IDE on those monitors, back it up with xUnit, CruiseControl, and Watir, and you'll live happily ever after. Not so. They'll do better than if they lacked all those things—but, without the right skills, they'll still eventually lose control of the complexity of their product.
Other people think that the skills they need can be independent of the tools, and even independent of the fact we're working on software. These people believe an updated version of the old motto that a Good Manager Can Manage Anything. It's that those good at self-organizing can self-organize to succeed at anything. Again, no. I agree with an anonymous correspondent:
I’ve also been tired for years of software people who seem embarrassed to admit that, at some point in the proceedings, someone competent has to write some damn code.
(He’s a programmer. As something of a tester-programmer blend, I’d want to also say that someone competent has to test the damn code, write the damn user documentation, and deploy the damn thing.)
The list of skills teams need is long: business-facing test automation, speaking to the point in standups, refactoring, active listening, exploratory testing, retrospecting, explaining design, and on and on. Which skill which person should tackle next is so completely dependent on the particulars of a given project that I'm not going to give any sort of ordered list. I will offer a simple guideline, though: at the end of each iteration, each team member should be able to say why she is worth more money to her employer than she was at the beginning.
A world of such skill would be swell. There's a problem, though: so often, doing the right thing takes longer than doing the wrong thing. Ability means nothing without the discipline to still do the right thing.
Discipline can be a personal virtue, but it must also be structural. For example, one of the reasons to program in pairs is that two people are less likely to skip a test than one is. Removing code ownership makes it more likely someone within glaring distance will see that you didn't leave code as clean as you should have. The business's absolute insistence on getting working—really working—software at frequent intervals makes the pain of sloppiness strike home next month instead of next year, stiffening the resolve to do the right thing today.
It's sad when the business doesn't know to demand working software, has too lax a definition of "really working", or doesn't know how to tell whether the software works. Sometimes—often—there's a bitter irony: teams of techies care more about delivering business value than do the businesspeople themselves. The techies know, perhaps only implicitly, that they need the focus on business value to keep themselves disciplined, but the businesspeople can often achieve their personal goals via other routes.
When teams can't depend on the outside world for discipline, they have to create it themselves. Doing that would be a lot easier if it were an explicit and frequent focus of conversation—and not just idle chatter: conversation that results in practices and habits that encourage discipline. I hope that my Four Values poster will have the magical social effect of a Big Visible Chart and keep discipline and skill toward the front of people's minds.
Next: to what end discipline and skill?