I recently read Actionable Agile Metrics for Predictability by Daniel S. Vacanti as I've heard several times that it's one of the most comprehensive works on agile metrics, and one of the best agile books overall. For those who've had previous extensive experience with agile the book hardly doesn't contain any new concepts, however it does get deep into metrics as the title suggests. In short, it's a book that provides practical guidance for measuring and improving the predictability of software development projects. The book emphasizes the importance of using metrics to drive continuous improvement and deliver reliable outcomes. Needless to say, particularly useful are metrics that can be acted upon. Considering all metrics are not actionable or useful for improving predictability, what metrics should we keep track of? The author lines out a set of actionable metrics that teams can use to measure and improve their performance, including flow metrics and throughput metrics.
Flow Metrics: Flow metrics measure the flow of work through the development process. They help teams identify bottlenecks and inefficiencies in the development process. Some examples of flow metrics include:
- Work in Progress (WIP) Limit: This is a limit on the number of work items that can be in progress at any given time. Setting a WIP limit helps teams focus on completing work items before starting new ones, which can improve flow and reduce bottlenecks. Most ticketing systems such as Jira allows you to set this limit.
- Cycle Time: This measures the time it takes for a work item to move through the development process, from the time it is started to the time it is completed. Measuring cycle time can help teams identify areas where work is getting stuck or where improvements can be made.
- Lead Time: This measures the time it takes for a work item to move through the entire development process, from the time it is requested to the time it is completed. Measuring lead time can help teams identify opportunities to reduce overall development time.
Throughput Metrics: Throughput metrics measure the rate at which work items are being completed. They help teams understand how much work is being done and how quickly it is being completed. Examples of throughput metrics include:
- Velocity: This measures the amount of work that can be completed in a single iteration (ie. a sprint or similar duration). Measuring velocity can help teams plan and forecast future work based on their historical performance.
- Cumulative Flow: This measures the number of work items in each stage of the development process. Particularly useful as a visual aid.
Moreover, the author talks about the importance of visualizing metrics, as it is essential for making data-driven decisions and identifying patterns in performance. The book recommends using visual management techniques, such as cumulative flow diagrams and control charts, to help teams understand their performance and identify areas for improvement.
Cumulative Flow Diagram (CFD): A CFD is a chart that shows the number of work items in each stage of the development process over time. It can be helpful in visualizing bottlenecks and progress over time.
Control Charts: Control charts are used to monitor the stability of a process. They help teams identify when a process is in control (i.e., stable) and when it is out of control (i.e., unstable).
Burn-Up and Burn-Down Charts: Burn-up and burn-down charts are used to track continuous progress toward a specific goal or milestone. Burn-up charts show the total amount of work completed, while burn-down charts show the remaining work over time.
The author argues by focusing on actionable metrics and visualization techniques, agile teams can measure and improve their performance, identify bottlenecks and inefficiencies, and deliver software swiftly and reliably.
Overall, the main objective of the book is to provide a practical and actionable guide for measuring and improving the predictability of software development undertakings. By focusing on actionable metrics and visualization techniques, teams can increase their predictability, deliver software more reliably, and ultimately improve stakeholder satisfaction.