Advantage #7: Good Quality Software
Regardless of how you define quality, Agile teams will deliver it. Some examples of how quality is defined include these:
Fitness for Purpose: The regular and continuous interaction between the customer and the developers (discussed in Advantages #1 and #3) have as their primary objective assuring that the product as built does what the customer needs for it to do. As long as the customer is effectively participating in the team, the developers will produce the right product!
Fitness for Use: Again, the regular and continuous interaction between the customer and the developers (discussed in Advantages #1 & #3) assures the usability of the product as well. In addition, Agile projects assure usability by releasing the product into actual use as early and as often as possible during the project. Nothing confirms usability better than the actual users trying it out!
Lack of Defects: The strong technical focus (discussed under Advantage #5) results in much better testing on an Agile project than in most other methods. As mentioned above, Agile developers take responsibility for the quality of the code they write. In addition to producing cleaner code, it means that if there are testing specialists on the project, they will start their testing with better software, which always results in more effective testing and a better resulting product!
Reliability, Maintainability, etc.: Again, the strong technical focus (discussed under Advantage #5) results in a technically superior product. In addition to the focus on testing and refactoring, some Agile teams use practices like coding standards, peer reviews, and pair programming to assure that the code they produce is technically solid.
Conformance to Specification: Agile teams subscribe to many Lean principles including these two:
- Decide as Late as Possible. Postpone commitment to a decision until the latest responsible moment.
- Deliver as Fast as Possible. When a decision has been made, act upon it right away.
These Lean principles keep specifications to a minimum. The Agile team makes commitments only when those decision need to be made, which is generally at the point of implementation. In this way, Agile teams assure that conformance will not be a problem.
Advantage #8: Improving Estimates
Many software developers are notoriously poor at estimating their work. It is not uncommon for Project Managers who are creating plans to ask their developers for estimates of the work, then to double or triple those estimates in the plans.
Because of the short feedback loops in an Agile project, developers can begin to learn about their estimating errors and become better at this crucial task. The two main forms that this learning takes place are these:
At the beginning of the project, each requirement (User Story) is given a rough order of magnitude estimate (e.g., Story Points) in a team workshop. As a part of this exercise, the team members discuss what is being estimated and agree together on the estimates. Then, as part of the transition from each iteration of work to the next, one of the changes the team might embrace is the need to re-estimate. They would do this if it became clear to them that the original estimates (which they all participated in) were bad. The re-estimation exercise provides them with an opportunity to learn what they had done wrong the first time.
The second opportunity to learn comes from the more detailed estimating of the actual work that is done at the beginning of each iteration. Here, it is the short feedback loop that comes into play. They estimate the work they will do over the next few weeks, and they learn how accurate those estimates were in short order. Then in a few weeks, they are estimating the next iteration. Each Agile project provides the team members with opportunities to hone their estimation abilities many times over.
Advantage #9: On Time & On Budget
The Agile methods all make the assumption that the project timeline (the project Time-box) is inviolable. In addition, they assume that the main driver of budget is people’s time, so the project time-box implies a fixed budget as well. Good Project Management practice tells us that you must have a variable to manage in order to have a successful project. In the Agile methods, that variable is product Scope and Requirements.
An Agile team will always deliver on time and on budget. The only question concerns precisely what will be delivered! This is the reason for the close participation of the customer in the project. That person’s role is to ensure that the project meets their needs (Advantage #1) to the greatest possible extent within the project constraints (as mentioned in Advantage #3).
Often the reality is that the customer’s true needs (minus gold-plating) can be met within a constrained timeframe or budget. Of course this doesn’t guard against a really ill-conceived project that cannot produce meaningful results as constrained. But that is addressed in Advantage #10.
Excerpted and available for download from Global Knowledge White Paper: 12 Advantages of Agile Software Development