Agile methods are inherently empirical – they use metrics (see Agile metrics classification) and practices rigorously to achieve a good match between the delivered software and customers' expectations. In Agile mindset, estimating is applied as a way to predict how much the team can get done to guide sprint planning—not as a target that should be achieved as closely as possible. For example, a team's velocity is used in XP to assign a sustainable amount of work to the team and plan the iteration contents accordingly, whereas traditional planning would set the team a productivity goal as given and track team performance against that goal.
Agile methods emphasize measuring progress in terms of working software over measuring intermediate work products (documents) and strive for making the measurement simple and immediate. Overall, Agile methods create two types of conflicts to Traditional measurement approaches (see Table - The contrast between agile and traditional measurement programs). First, the traditional approach of tracking progress against a pre-made plan and measurable goals conflicts with the Agile value of embracing the change. Second, the standard quality measurement approaches propose a rather comprehensive set of metrics, which does not align well with the Agile principle of simplicity.
The following table shows the contrast between agile and traditional measurement programs:
Guideline | Description |
---|---|
Describe your goals for using metrics in agile | Metrics can be used for different purposes in software development and these purposes differ between agile and more traditional measurement programs. |
Recognize the key metrics of your needs | The number of the available metrics is extensive. Therefore, you should focus on the most important metrics first, and continue the metrics development after the most important ones are implemented. |
Metrics in the Agile and Lean Software development are used for certain main purposes, and it is important to understand the goals and reasons behind using individual metrics when building or using a measurement program in agile context. Metrics can be used for different needs in software development and the focus and goals of measurement differ between agile and more traditional, plan driven, measurement programs. The purpose of measuring agile software development products and activities is divided into five categories (see also Collection of agile metrics for specific purposes):
There are certain agile metrics that are commonly found beneficial and can be considered as the cornerstones of agile measurement. These metrics, following the above purpose classification, are:
Guideline | Description |
---|---|
Keep focusing on product and process | In agile and lean context, the metrics are focused on the process and product, but not much on people or individuals. This is due to the agile development principles requiring a capable self-organizing team, the members of which can improve themselves without metrics. |
Do not measure documents | In agile, documentation is just a tool and part of the feature development instead of an individual deliverable as such. |
Use multiple viewpoints to measure progress | The progress metrics can be combined to a set of metrics to avoid the problems of one-dimensional metrics. Combining burn-down, check-ins per day, number of passing automated tests, and number of new and open defects could give a rather rich understanding of the progress of agile development project from multiple view-points. |
Do not measure partial completeness | It is a common desire to use the story percent complete metric to indicate the progress in terms of incomplete stories. However, this practice should be applied with caution, since it is somewhat in contradiction with agile principles of tracking progress in terms of running tested features, by definition of done. Measuring the completion percentages of stories under development has a risk of “90% of time 90% completed” syndrome. |
Do not measure everything | A common way of communicating progress in agile projects is having regular sprint demonstrations which, even though not actual metric, gives a concrete visibility to the actual progress in terms of working code and completed features. |
Passed tests indicate the progress | It is good to include the testing tasks in the progress metrics to help getting the tests written and testing done early as part of the development work. |
Overall, it is difficult to give precise instruction of what metrics should be used for what purpose. Rather, the development organization should consider their own needs and goals and how to best support those by metrics. Industrial agile teams use metrics suggested by Agile literature, but they also use a lot of customized metrics for their specific needs. These context-dependent metrics are created and used based on a need—as a solution to a problem (see also Changing behaviour with metrics).
The role of documentation, such as design specifications, in Agile mindset is clearly a tool and part of the feature development instead of an individual deliverable as such. This is visible also in the metrics, where documentation is not directly measured or tracked. Instead, the focus is on the actual product and features, which aligns with the first Agile principle, “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.''
An average profile for metric use of an industrial agile team could be described as follows.