Adaption SoftwareThere is a revolution going on.
 . Home . Contact .   
Agile Transition -- the "Agile Path" Version

The term "Agile Transition" strikes me these days as having a bit of built-in misnomer. It implies that agility is binary -- that a team is either "agile enough," or "not agile enough." So, I ask, what is "agile enough"? Who determines this threshold? Certainly not me. Agility is like quality. There is always more of it to acquire.

This is part of the reason I am understanding of teams experimenting with agility. They're on the agile path, and so am I. As I've said elsewhere, our similarities matter more than our differences. I honor those similarities.

Specific practice recipes aside, the main thing is simply to stay on the path, to keep pursuing more agility, to neither be judgmental nor complacent. This attitude is tremendously important to successful "transition." We could all improve, but where we are is OK for now. If we cannot be OK with where we are now, we make ourselves crazy.

In general, I prefer to work with all of the "Second Edition" Extreme Programming (XP) practices, whenever the circumstances permit. That's where I am on my agile path, using those practices, and a few others, striving always to improve my use of them. There is certainly plenty of agility left for me to master.

So, Where to Start?

Given that a team does want to start adopting agility, what approaches work, and which don't? Does it matter where you start, and how you proceed?

Absolutely it matters how you start, but that's the end of the absolutes. I have my preferences, and there are patterns emerging in the industry, but it increasingly seems inherent to agility that different approaches suit different contexts. This is not just some excuse for laziness, or some opportunistic pandering on the part of consultants with their own specialties.

It is genuinely the case that the right approach for one team will not work for another. In general, though, here are my preferences.

Get Management Endorsement

Without strong commitment on management's part to get serious about agility, I don't think anyone has seen strong positive results (though the individuals involved may be growing more agile). While I believe that non-agile approaches are typically riskier than agile transition, and healthy agile teams have much lower inherent risk than non-agile teams, agile transition itself does have its own risks, and consumes resources. It takes time and money to learn new principles and practices. Some manager somewhere must pony up to those risks, championing the transition to shareholders higher up.

Start With Community

I used to council starting every time with iterating and with Test-Driven Development. These days I council starting with building the strongest local agile community you can: start with the Whole Team practice. Healthy, whole teams have steadily increasing levels of ambient trust, respect, and cohesion -- a sense of collective identity. People on such teams enjoy working with each other, even if the work itself is still sometimes arduous. This is the foundation upon which the remaining practices must rest.

So start with specific actions like putting everyone in the same big workspace, tearing down the cubicle walls. Start trying to integrate the code to a problem-free code repository at regular small intervals. In this matrix-management age, try to ensure that the team works on a single project at a time (where possible), and stays together for months at a time. In the same way it doesn't make sense to pick up all the cab drivers in Chicago and swap them with drivers from Miami (and expect to get to the airport on time for awhile), it doesn't make sense to shuffle programmers back and forth unnecessarily between complex problem domains, codebases, and teams. Too much such context switching generally leads to churn and chaos.

Get the customer sitting with the team if possible, looking over people's shoulders and asking and answering questions. Barring that, create rigorous, scheduled rituals of daily phone-calls or Skype video calls between customer and programmers. Publish local team results on big visible charts that everyone can see on the walls, and/or track projects using tools like wikis or VersionOne. Get people doing stand-up meetings every day, even if they are not iterating yet, and yesterday is much like today. Get them to do weekly retrospectives, even if this week is still much like last week.

Work From Your Points of Pain

At that point, once a strong Whole Team has been established, I think there are several ways you can go, depending on your tolerance for risk, chaos, and temporarily reduced productivity. I would start with the local points of worst pain, and apply the practices that address them specifically. If the wrong features are routinely being delivered, for example, then I might council starting to deliver work iteratively in the form of Running, Tested Features. This might pull along with it the agile estimating and planning techniques to be found in the excellent books of Mike Cohn's: User Stories Applied and Agile Estimation and Planning. If the principle issues are codebase rot, intolerable defect rates, and long, intractable test and debugging phases, then it might make sense to adopt Test-Driven Development and Continuous Refactoring early on, even though it takes the average veteran programmer years to master these practices.

How Many Teams at a Time?

This, too, is contextual. The common wisdom for years was that it made sense to transition one team at a time, with pilot projects. After proving the practices, you would then perfect the local agile recipe, the reasoning went, and then systematically roll it out to the rest of an organization's teams. But at least one quite large software organization -- with more than 500 programmers -- recently presented results at an agile conference showing that it made sense to them to transition the entire organization at once! They temporarily exhausted a large team of agile coaches in the process, apparently, but had excellent results.

Your Mileage Will Certainly Vary

Be agile about your agile transition. Add a practice, attempting to roll it out to a team in good faith, and measure the results. Work to get buy in, to empower emergent, steady learning. Work to assuage fears, to celebrate positive results.

Be patient if things get sticky. When all else fails, return to ways to create even more community. Do anything else you can to bring people closer. Celebrate every small success with food. Never underestimate the power of pizza and Dance Dance Revolution. Study how people can listen to each other better. Remember, the goal is more trust and respect, more honor and compassion. With enough of it, teams will walk through fire for you.

-- Patrick Wilson-Welsh, Adaption Software     revised 8-7-06

[More of Adaption's Articles.]


ADAPTION NEWS