Delivering that First Agile Project
“A journey of a thousand miles must begin with a single step.” I invoke Lao Tzu’s ancient maxim to underscore that even large-scale agile adoption must begin with a single agile project. However, that is sometimes the most difficult thing to do. Here are some steps to assist you in getting your first agile project off the ground:
- Pick a pilot project. Here are some essentials for the first pilot project:
The business customer needs to be empowered to make decisions on the behalf of her/his organization.
The project team needs to be empowered to make appropriate decisions within the scope of the project.
The project manager needs to be empowered by the team and senior management to make decisions on behalf of the team.
There should be good existing Business-IT relationships at the project manager level.
Executive support for a learning and exploratory delivery style and an experimental period is mandatory.
Committing to a short-term initial production release date.
- Assemble the project team.
The project team needs full representation from all groups necessary to delivery (marketing, business line, architecture, development, test, production, etc). The team should be divided into core and extended teams. The core team (usually a project manager, developers and customer or business analysts functioning as empowered customer representatives) needs to be 100 percent dedicated to the agile project. Ensure that core team members are eager to learn and succeed at their work. Extended team members can be assigned to multiple projects, and their involvement scheduled as needed.
- Secure and setup a teamroom. Collocation implies locating all contributors to your project–developers, testers, business analysts and the customer–within close proximity of each other. You will need to secure a teamroom and set it up in a caves and common configuration2: a common, open area and individual, private spaces. The common area should be organized to facilitate face-to-face communication and collaborative work. Private “caves” or spaces for personal work such as personal e-mail and phone conversation are also critical.
- Conduct process orientation and project discovery. Begin exposure to the agile method you choose by providing the entire team with orientation to its basic concepts and practices. Supplement this orientation with further detailed “deep-dive” training as necessary. Conduct a time-boxed (usually two to five days) project discovery session with the whole team to identify and document business outcomes, risks and dependencies; prioritize high-level business requirements; identify roles and responsibilities; and to discuss, negotiate and commit to an iterative release schedule.
- Begin iterative and incremental delivery. Conduct iteration planning for the first iteration. Allow the business customer to pick the requirements that are of highest business value and detail these into user stories. User stories are high-level descriptions of how the system is supposed to solve a problem. A good user story, when implemented, implements a vertical “slice” of the system’s functionality: a functional slice that goes from user interface all the way to data storage, not a technical slice confined to a horizontal technical subsystem, such as a database. Implement the user stories that the customer picks in the first iteration. Repeat the above for subsequent iterations.
- Improve continuously. Take time to step back from project delivery to inspect and adapt your agile approach. Make sure you conduct project reflections at least every two to three iterations. Gather feedback from your business customer, team members and other stakeholders regularly during the pilot period. Use this feedback to improve your project delivery and your agile process adoption. Expand your approach to incorporate agile software development practices (pair programming, test-driven development, refactoring, simple design, etc.).
Adoption of agile methods is growing, and corporate IT is now leading a second wave of adoption. If you need to get an agile initiative off the ground, you should first understand core agile principles: iterative and incremental delivery, collaboration and continuous improvement. Then, begin incremental agile adoption with a pilot project or two, and once you’ve garnered real-life experience, expand to multiple projects and teams. To get off to a solid start and to adapt your process adoption along the way, follow the six-step process outlined above.