Agile Sponsors
Featured Whitepapers
- Learn Ways to Keep Schedules and Costs in Line With Requirements Change Management
- Java Deployments in an Enterprise Environment
- Challenges & Characteristics of Enterprise Continuous Integration
- Build Release Plans That Deliver Customer Value!
- Improving Traceability and Auditability Across the Development Lifecycle
|
Iteration is at the heart of agile development practices. In an agile project you do something, measure your progress, and then use the feedback from the measurement to figure out what to do next. This cycle allows you to follow the Agile Manifesto value Responding to change over following a plan by providing for points in time where you can measure your progress at the project level. Whether your approach to agile is project-focused like Scrum or development-focused, like extreme programming, iteration is what drives an agile project.
Agile methods use engineering practices such as Unit Testing and Continuous Integration to provide for feedback cycles close to the code. The Iteration allows for a feedback at the macro level, giving the stakeholders the ability to view progress in short regular feedback cycles. While iteration is key to agile development working within iterations can be challenging for customers and developers alike. Concepts In an agile project the team is group of people delivering the application code. This includes developers, testers, designers, etc. The product owner, sometimes referred to as the customer, is the person specifying the functionality that the team will deliver and the priorities. The product owner specifies what will be built and the team decides how to build it. The product owner maintains the product backlog, a prioritized list of everything that may be in the product someday. The portion of the product backlog that the product owner assigns to the iteration is the iteration backlog. Incremental development means building parts of a system, for example working on the interface to the database. Iteration means starting with a rough solution that works, then improving on it as you go. Jeff Patton explains the difference between incremental and iterative development quite concisely in his article The Neglected Practice of Iteration. In practice, teams combine iteration and incremental development, but it iterating on an end-to-end solution is what lets you validate requirements. Iteration Overview
The basics of iterations are that team will:
Iteration Activities
It is important to have a realistic iteration backlog so that the team and the product owner have common expectations. While it is not unreasonable to have work in queue in case the team finishes their work early, planning to do more work than can be done leads to the team and the product owner not taking the plan seriously rather than a commitment. Over-planning also makes it more difficult to improve your estimation process. At the end of the iteration the team reviews their work with the product owner. The review should be quick and informal, and form a basis for a conversation between the team and the product owner about how the iteration went, and what should happen in the next iteration. The review is an opportunity for all of the stakeholders to look back on the iteration as a whole and understand how to do better. Issues with Iterations (and Solutions) The "fixed work" rule of iterations is not meant to set up a wall between the team and the product owner. Rather, it forces the product owner to address the priority of any new work and its impact to the original commitments. Adding work to the backlog mid-iteration means that it will be more difficult for the team to deliver the work that it already committed to, and makes it difficult for the team to manage expectations with the product owner. If you are in a situation where the same team is doing support work and new development, there are a few strategies that are true to the spirit of iteration, but still allow for changes:
Scoping Work Development teams often wrestle with the defining tasks that can be done in a short iteration when they are used to thinking of longer projects. Customers have difficulty thinking of meaningful "features" that can be completed in an iteration. Some insist that it is impossible to break work down in a way that allows for anything to be done within the length of an iteration cycle. Thinking about features that fit into an iteration requires a change of mindset. Agile projects start with the idea that change is inevitable, and agile teams have engineering practices that make change quick and easy. Also, the benefits of agile are that a product owner gets to see something that works (somewhat) while it is still in progress. Scoping work to fit into iterations is one of the harder things for teams to do, but it is also where you get the most value of iterative development. By iterating you validate project is going in the right direction while you have the ability to make corrections. Iterative development also allows you to decide that what a feature is usable before everything you thought you needed was implemented, thus allowing you to save effort. With some thought and creativity you can break down almost any feature into something that shows functionality with enough fidelity so that a product owner can decide if the feature is what she really wanted, of if additional requirements are really necessary. When defining stories or features:
Iterations are different from the usual long-ish planning cycles teams and product owners are used to. Some teams will want to extend the iteration a day of two to finish the work that is "almost done." The product owner may want the team to finish a task before starting a new iteration. Avoid this. Even though it is difficult to admit that work is not complete, having leaky iteration boundaries opens the door to schedules slipping without feedback, and does not give you the chance to adjust. Agile methods acknowledge that there is uncertainty, and that Big Planning is rarely accurate; some customers sometimes take the idea of "Responding to change over following a plan" to an extreme, meaning that there need not be a framework for planning. While the "big plan" can change from iteration to iteration, the iteration boundaries provide an essential framework for keeping a project on track. From a morale point of view, end of iteration reviews are a focal point for the team and the product owners, allowing for a forum where the team can acknowledge small slips and work with the product owner to make adjustments. The longer you put off a review session, the higher the cost of admitting a problem. (Wrapping Up &) Getting Started About the Author Steve Berczuk is a consultant and developer who works with Agile teams. He has over 20 years experience developing applications, often as part of geographically distributed teams. In addition to developing software he helps teams use Software Configuration Management effectively in their development process. Steve is co-author of the book Software Configuration Management Patterns: Effective Teamwork, Practical Integration and a Certified ScrumMaster. He has an M.S. in Operations Research from Stanford University and an S.B. in Electrical Engineering from MIT. You can contact him at steve@berczuk.com.
Set as favorite
Bookmark
Email this
Hits: 3462 Comments (0)
|
| < Prev | Next > |
|---|
Agile Marketplace - Announcements and Special Offers
Webcast: Moving Build and Code Quality Upstream
This interactive panel discussion moderated by Bob Aiello, Editor-in-Chief fo the CM Journal brings industry experts Anders Wallgren, CTO of Electric Cloud and Gwyn Fisher, CTO of Klocwork together for a candid discussion of the cost savings, productivity and quality benefits that can be achieved by stabilizing builds and code quality as early in the development cycle as possible.
Register Now!
Collabnet -TeamForge 5.3
CollabNet TeamForge 5.3 includes Dynamic Planning—providing flexibility to model release scope and timeline in a single view. Now, you can easily manipulate/adjust release data.
Download Your Free Trial
Requirements-based testing (RBT) can help to ensure comprehensive test coverage, reducing the risk of failure and improving software quality. This white paper details how application lifecycle management can be used to more effectively implement RBT processes, offering greater collaboration, traceability and control.can help you increase efficiency, reduce project risk, and improve overall software quality. Learn how MKS Integrity for application lifecycle management enables RBT, delivering full lifecycle traceability to help ensure that project requirements have complete test planning and execution coverage.
Download the Requirements-Based Testing whitepaper
PureCM –SCM for Agile Teams
PureCM helps you to manage development in short iterations: keeping track of changes, supporting automated builds and preserving frequent snapshots of your projects.
Get the free trial now


Iteration is at the heart of agile development practices. In an agile project you do something, measure your progress, and then use the feedback from the measurement to figure out what to do next. This cycle allows you to follow the 