Tuesday, August 19, 2008

Applying Agile Techniques to an Individual Workgroup

Generally speaking, I believe Agile frameworks define the best practices for managing complex software projects; and I believe you can say that these same practices can be applied to any set of work items that are to be executed by any organizational team. I want to take some of the foundation and theory that Agile is built upon and apply those principles to general team management.

A "project" can be abstractly defined as "A planned endeavor, usually with a specific goal and accomplished in several steps or stages" (from wiktionary). An individual organizational team that is supposed to be collaborative, then, to execute its set of work items, can think of its work items according to that definition; and the practices from Agile that are applied to the larger concept of "software project" can be applied to an individual team's work items.

It will be easier for me to express what I want to do using the terminology of a specific framework, and for that I choose Scrum.

Let's start by looking at the top reasons for project failure:
- Poor requirements management
- Insufficient communication and collaboration
- Lack of domain expertise

Now let's restate these items in a way that makes more sense in the context of any cohesive managed work (i.e. stuff done by a team):
- Poor definition and management of the expected work
- Low level of team collaboration, customer involvement, and management involvement
- Lack of knowledge by staff, of product and tools

These are the problems we want to try to solve. Knowing what problems we want to try to solve, let's take a look at some of the specific concepts within Scrum and see how we can apply them to any individual workgroup/team:

1. Open work environment

Improve collaboration by removing physical barriers to communication, such as cubicles.

2. Product backlog

More generally, let's call this a "prioritized work queue". A team should have an explicit list of things it is expected to work on.

3. Sprints

A "Sprint" is a time-box for executing a set of work. Get the team to focus on a set of items from their work queue by time-boxing their work. Provide up-front planning for each Sprint to define what is to be done in more detail, and provide post-Sprint retrospectives as feedback into the process.

4. Daily stand-ups

Keep the work transparent. Hold a 15-minute meeting each morning, where each team member answers three questions: 1) What did I accomplish yesterday; 2) What am I going to accomplish today; and 3) What obstacles are in my way?

5. Scrummaster

A Scrummaster is a person who shephards the team through the execution of a Sprint. They run the Sprint planning and restrospective meetings, they run the daily stand-up meetings, they remove obstacles, etc.

It's not that hard to see that you can take concepts from Agile and apply them to any team in an effort to increase the value of the team's work.

No comments: