A “flow project” is a type of work where a team is working on many very similar, independent, small work items. This type of project is quite common in IT departments doing infrastructure work, maintenance work or support work. Agile Work practices can be applied to this type of project with just a little tweaking.
The basic principles of agile require that the team determine how it does its work without compulsion. One of the key mechanisms for this is the frequent reporting of individual status to the team. In a flow project, the normal three questions can become quite repetitive and so an emphasis should be made on elucidating obstacles. The process facilitator must be very aware of obstacles even if they are only implied. As well, a “stop the line” policy may be necessary to fully expose the urgency of obstacles. In this case, an individual declares a problem with the work item they are currently handling and everyone on the team stops to help until the problem is fully resolved. Strong medicine? Yes, but if you are working on several hundred or thousands of work items, this can lead to enourmous efficiencies as obstacles are removed, never to be seen again.
Iterative delivery is normally used to take a very large piece of work (a project) and chunk it into consistently sized smaller pieces of work. This chunking is done in order to gain efficiencies that can be found by applying queueing theory. In a flow project, the work is already chunked into small and relatively consistently-sized work items. In fact, the work items are typically much smaller than “normal” iterations (1-4 weeks). This means that other aspects of queueing theory become more important, particularly the gating function and managing the queue sizes (more below). Iterations can still be useful, but now they are predominantly used as checkpoints for process improvement, and domain and technical knowledge-sharing. Releasing work completed may be done in a flow manner as each work item is completed.
Adaptive planning, normally done between iterations, now takes on more importance and must be done continuously. The work must still be prioritized as with a normal agile project. However, as work flows through the team, work items are constantly being removed from the top of the work list. In some cases, a work item will have to be put through several stages before it is complete. Each stage must have its own queue of work items that are ready to go into that stage. The sizes of these queues of work must be managed so they never grow beyond a certain number of items. One way to manage this is to have individuals responsible for a work item from start to finish throught the process. However, due to specialization of skills or roles, this is sometimes difficult or impossible to do. Nevertheless, despite apparent inefficiencies, it is critical to manage the flow of work as a pull system.
Also known as “build quality in”… If you need to go fast, one of the best ways is to never have errors or defects. And one of the best ways to do this is to create a test to ensure that your work is correct before actually doing the work. In a flow project, the conditions of success for each work item are often either the same or similar in a consistent manner. It is well worth it to invest a little time in developing an automated system to check the quality of work as the work is being done. In certain domains such as software and manufacturing, this is fairly easy to do with various tools. In other domains it can be more difficult. Nevertheless, get your team to investigate this problem and implement solutions even if they are only partial solutions. Having all of your work flow through your process without defects will prevent many occurances of the waste of rework.
The basic agile practice of maximizing communication applys almost without change to flow projects. Getting all of the team in the same room, having big visible charts to show the status of work and other tools to maximize communication are all important. In order to stop the line when an obstacle is found, it is necessary that everyone on the team is immediatly aware that they are to stop! If everyone is supposed to work intensly on removing an obstacle when the line is stopped, then they all need to be in close collaboration. Team-building techniques that encourage friendships, dealing with conflict, respect, and collaboration are all critical to going fast with a flow project.
In an agile project, the delivery of valuable results is the most important thing to be measured. However, in flow projects, an additional measurement is often very useful: Process Cycle Time. Reward the team for reducing cycle time while keeping quality constant or improving quality. This is one of the best ways to encourage creative methods of getting work done in a flow project.
Agile Work Axioms and Disciplines
The three Agile Work Axioms and Disciplines all apply to flow projects just as much as to “normal” agile projects. The only change is in their emphasis and target. For example, “We are Creators”, now applies much more to the problem-solving aspect of trying to make the overall work go as quickly as possible. One goal of a flow project should be to automate as much of the work as possible. This automation work is definitely a creative endeavor even if the work itself doesn’t offer much room for creativity.