A while back I was talking with a team about agile. Rather than give them a typical introduction, I decided to talk about techniques that differentiated more successful agile teams from less successful ones. Near the end of the talk, I got a very interesting question:
"What is the set of techniques where, if you took one away, you would no longer call it 'agile'?"
This is a pretty good question. I thought for a little bit, and came up with the following:
- First, the team takes an incremental approach; they make process changes in small, incremental steps
- Second, the team is experimental; they approach process changes from a "let's try this and see if it works for us" perspective.
- Third, the team is a team; they have a shared set of work items that they own and work on as a group, and they drive their own process.
All of these are necessary for the team to be moving their process forward. The first two allow process to be changed in low risk and reversible way, and the third provides the group ownership that makes it possible to have discussions about process changes in the first place. We get process plasticity, and that is the key to a successful agile team – the ability to take the current process and evolve it into something better.
Fast forward a few weeks later, and I was involved in a discussion about a team that had tried Scrum but hadn't had a lot of luck with it, and I started thinking about how agile transitions are usually done:
- They are implemented as a big change; one week the team is doing their old process, then next they (if they are lucky) get a little training, and then they toss out pretty much all of their old process and adopt a totally different process.
- The adoption is usually a "this is what we are doing" thing.
- The team is rarely the instigator of the change.
That's when I realized what had been bothering me for a while…
The agile transition is not agile.
That seems more than a little weird. We are advocating a quick incremental way of developing software, and we start by making a big change that neither management or the team really understand on the belief that, in a few months, things will shake out and the team will be in a better place. Worse, because the team is very busy trying to learn a lot of new things, it's unlikely that they will pick up on the incremental and experimental nature of agile, so they are likely going to go from their old static methodology to a new static methodology.
This makes the "you should hire an agile coach" advice much more clear; of course you need a coach because otherwise you don't have much chance of understanding how everything is supposed to work. Unfortunately, most teams don't hire an agile coach, so it's not surprising that they don't have much success.
Is there a better way? Can a team work their way into agile through a set of small steps? Well, the answer there is obviously "Yes", since that's how the agile methods were originally developed.
I think we should be able to come up with a way to stage the changes so that the team can focus on the single thing they are working on rather than trying to deal with a ton of change. For example, there's no reason that you can't establish a good backlog process before you start doing anything else, and that would make it much easier for the agile teams when they start executing.