Viewing Agile Concepts From a Phase Perspective
Planning—speculating and creating a living plan
PHASE OBJECTIVE: Break the idea down into discrete pieces of functionality called features. Prioritize the features and assign them to iterations.
The first step in the planning phase is to orient all of the planning team members on the idea.
Note that the planning phase also continues the feasibility work. We gathered enough information to justify planning during feasibility, now we want to refine our financials based on the additional detailed gleaned during planning. See figure 3.
Figure 3 The planning phase brings the project team together to quickly convert the idea into features. The features are prioritized, sequenced, and estimated during the phase. An iteration plan is created to initialize development.
After features are identified the team goes through the feature card exercise. In this step the features identified during envisioning are fleshed out just enough to prioritize them and sequence them into the order they would be developed in. The team also uses the prioritization as another feasibility check. If a feature comes out of the feature card exercise as a low priority the customer may choose to remove it from the project.
The remaining features are estimated by the team at a high level, identifying the major tasks and resource types needed.
The last step of this phase is to assign features to iterations. The iterations are buckets of time that the team develops features in. A good time frame for an iteration is 2 to 3 weeks. The previous estimates are used to determine which features will fit into the available iterations.
Note that each iteration is structured so that it provides value on its own. This allows deployment even if something prevents all of the iterations from being completed.
The main deliverable from this phase is the iteration plan.
Development—exploring with a schedule
PHASE OBJECTIVE: Create, test, and demonstrate features. Queue iterations for deployment.
The development phase begins with iteration 0. The iteration is so labeled because no features are delivered during it. This iteration is used to put the necessary foundation pieces, both business and technical, in place to start development. Some typical iteration 0 activities are:
- Finalizing contracts with vendors
- Initial architecture design
- Preparing the environments (OS, DB, Development tools)
If you are building on an existing platform, with dedicated resources, you may not need an iteration 0. You can begin development immediately after planning.
When the first development iteration starts the team will refine the tasks they identified during planning. This is very common because the team only provided enough information to estimate the features during planning. Once a project gets through the planning gateway the team knows it is coming and they will begin doing detailed analysis of the work they need to do.
The development done during an iteration is not waterfall. The process will be one of collaborative development. The developer will create code to the minimum specification and demonstrate it to the customer. At this time the customer will identify requirements they missed, or issues with their initial requirements. The developer may also identify technical issues. The developer, customer, and team will work through these issues during the iteration, evolving the code until it supports what is needed at the end if the iteration, not necessarily what was requested at the beginning. Figure 4 illustrates the steps in Development.
Figure 4 Development starts by establishing a foundation in iteration 0. Development iterations follow, delivering working code in subsets every 2 to 4 weeks. The working code is surfaced for a demonstration and customer feedback. When all iterations are completed the code is delivered to a production environment.
Building and testing occurs during an iteration. When an iteration is complete there is a review meeting to adapt (see Adapt in the following section).
Iterations are stored in acceptance environments until all iterations are deemed complete. At that time all of the work is deployed into the Production environment.
Page 3 of 4