Agile teams struggle with successfully applying agile approaches to project planning and delivery. In particular, an area that needs to be explored is negotiating customer commitments within an agile process. Common to agile processes is delivering customer value in short cycles and small increments. Customer commitments are made for each increment and meeting these small commitments early in the project will build the trust that is crucial in order for agile to be successful. In this article, I will explain the key steps, and practices within each step, that will assist in making and delivering on customer commitments in an agile fashion.
Intention: To Provide a Road Map for an Agile Iteration
At SolutionsIQ, we have had enormous success mixing Scrum and Extreme Programming to provide a complete agile process. Throughout this article, terminology is kept generic in an effort to allow practitioners the opportunity to adjust terms to their desired process. The intent of this article is to present an agile process to lead a team from iteration planning to delivering upon those customer commitments.
Setting the Stage
As a team member on a new project where the customer needs to know what will be done and when, but we want to do in an agile way. While using an agile approach how do we plan and commit to delivery while keeping scope and priorities flexible?
The Key Steps:
- Using, sizing and selecting Stories for an iteration
- Transforming the list of stories into a contract with the customer
- Tracking iteration progress
- Adjusting the process
Using, Sizing and Selecting Stories for an Iteration
Stories are the basic unit of planning. You should review the INVEST acronym (Independent, Negotiable, Valuable, Estimable, Small, Testable) for instructions on how to create well formed Stories.  The important point here is that Stories must include success criteria that represent the negotiated scope and commitment between the customer and the team.
Each iteration starts with a meeting to go over the Stories that will be completed.
Goal: Derive an iteration commitment that is accepted by the team and the customer, that everyone on the team agrees can be completed within the iteration, and that also represents significant progress towards the overall objectives.
Prior to the planing session:
1. Work with the customer to define well-formed Stories.
2. Have the customer prioritize the Stories.
3. Ensure that the team agrees on a Velocity based on the total number of estimation points completed in the previous iteration adjusted to account for holidays, vacations, meetings, etc.
Tip: If this is your first iteration or you are using a new estimation unit, select a Velocity that is one third of the expected capacity. Often the team will stabilize at a ratio of Velocity equaling half capacity.
During the planning session:
1. Explain the Velocity number to the customer, which may have been adjusted for holidays, etc.
2. In priority order, have the customer explain the Stories and then allow the team to ask questions.
3. As soon as an estimate can be derived, stop discussing and vote. Avoid deep dives and design debates that are wasteful at this early stage. Respect the customer's time.
4. Work with the team to agree on an estimate and reduce the available Velocity.
5. Stop estimating when the Velocity number is reached.
6. Review the Stories for the iteration and gain agreement
Note on Estimating: Use a strategy like Planning Poker to ensure that the whole team is involved.  Avoid design debates and try to agree on a potential solution, just to get the estimate done. During the iteration, whoever selects