Saturday, July 25, 2009

Scaling Agile Out

Even though we are just starting to incorporate some Agile techniques into our team's approach to building great products, I am keenly interested in the notion of scaling out across the company. I believe that Agile thinking is a head-on approach to embracing change and a natural way of increasing discipline at a number of levels. However, it requires flexibility and customization to the specific company culture and environment. Starting at the conceptual level and following principle is more important than mechanical adherence to recommended practices.

That said, some things are not negotiable. Two principles that fall into this category are rhythm and planning. These two principles are directly related and influence each other. Rhythm levels include daily, weekly, iteration(sprint), release, roadmap(see dissenting opinion) and strategic vision. Planning categories should include the same time spans. What are we doing today, this week, this iteration, this release, this year and the next 3-5 years? What are the mechanisms we use to synchronize and retrospect for each temporal category? Without this rhythm sequence supported by planning that overlays the same time spans, progress can wander aimlessly or at least in a less than optimum undisciplined path.

My plan is to focus on the bottom-most level and move up on two different planes. The first plane is local to the team. Implementing practices that support these levels of awareness within the team, then inspecting, adapting and refining will allow me to build a platform of experience that can be fanned out across the organization. My goal is to move the organization away from reactionary fire-fighting as much as possible and encourage a further refinement of sync and plan that energizes and increases urgency.

The second plane of bottom to top movement is within the temporal domains listed above. We already use daily status reports to communicate what was accomplished yesterday, what we expect to accomplish today, and what obstacles or concerns may exist. We sync up at least once a week to roll up the daily communication into a weekly assessment of progress. With our first sprint, we are beginning to add the iteration level. Releases, roadmap and strategic levels are less well defined at this point. My plan is to move bottom-up, mastering the iteration (sprint) first, then attacking rhythm and predictability at the other higher levels.

So far, the iteration rhythm seems to be the following:
  • Team scoping and commitment the morning of the first day of the iteration
  • Team scope adjustment the morning of the second day of the iteration
  • Daily ongoing individual status reports (email)
  • End of week checkpoint to gauge progress and concerns with iteration progress
  • Middle of the second week checkpoint to gauge confidence level of iteration progress
  • Morning of the last day of the iteration - 15 minute standup to sync on what must get done that day to meet the iteration commitments
  • End of day demo of accepted features for the iteration and pushing of incomplete work into the following iteration

Most of the meetings listed here are 15-30 minutes. The team scoping and demo meeting are more in the range of 45 minutes to 2 hours depending on the content. An alteration of this schedule might be to move to more traditional daily 15 minute "scrums" that might replace one or more of the other short meetings.

If we can master this rhythm, something like this might be scalable across the organization. Most of the time the organization tends to move at a more lumbering rhythm. Much has been written about the benefits of scaling Agile across the entire organization. Pulling decisions and actions forward and executing on a specific number of small tasks that are framed within larger goals is the motivation for adopting Agile principles across a larger scope of functional groups within the company.

No comments: