Agile and Data

Last modified by chrisby on 2024/01/13 17:13

Data and Charts

Each iteration produces data on the team's actual productivity, namely the total number of points achieved by completing stories. These two charts should be generated from this data:

1. Velocity-Time Chart

velocity-time-chart_white.svg

  • x-axis: Time in iterations or dates (the last day of each iteration)
  • y-axis: Velocity = points of completed stories within one iteration
  • The first data point is generated after the first story implementation iteration.
  • After a few iterations, the average velocity should be roughly constant for the rest of the project.

2. Burndown Chart

burndown-chart_white_v2.svg

  • x-axis: same as in velocity-time chart
  • y-axis: Points Remaining = sum of points from unfinished stories
  • The first point starts at the very beginning of the project and is therefore at x = 0, just above the y-axis. It is the sum of the effort estimates of all stories. The second data point is generated after the first story implementation iteration.
  • The linear approximation function of the data points has a negative slope. The deck of stories is completed over time, so the graph "burns down" over time, hence the name.

Benefits

  • Measured Productivity: Real data, meaning hard facts, about actual team productivity and project progress that are far better than guesswork.
  • Completion Date Estimation: The data can be used to estimate the completion date of a milestone or the project by either
    1. dividing the remaining points of all unfinished stories by the average velocity from the velocity-time plot, or
    2. creating a linear approximation function through the data points of the burndown chart and read the intersection with the x-axis. This marks the expected completion date of the milestone/project, as there are no more stories to implement.
    • Note that this is only an estimate, not absolute truth. There is variance in the data points, which creates uncertainty, and unforeseen challenges may occur. This is just our best guess, and given the law of large numbers, it gets better as more data points are added.
  • Increasing accuracy of estimates as the amount of data increases, i.e. as the project progresses. For example, it is common to estimate the first project completion date after 4-5 iterations and to update the project completion date estimate after each further iteration.
  • Team Productivity Monitoring: In the event of significant productivity deviations due to internal problems, corrective action can be taken immediately.
  • Easy to Understand: Interpretation of the charts is intuitive, so everyone involved in the project (team, business and customers) should be able to view the data at any time. The charts are of particular interest to management, as they provide exactly the information they need to do their job.

Declining Velocity

Ideally, velocity remains constant and the team makes steady progress. But if it drops, the most likely reason is poor code quality due to lack of refactoring and testing. Don't hide it, don't artificially inflate the velocity (see "Golden Story"), just invest more time in refactoring and testing to improve code quality.

How to Handle Delays?

Scope vs Schedule: In many classic projects, the scope and the schedule are fixed. However, since the effort and requirements of software projects are almost impossible to accurately determine, it is unreasonable for management to demand the same fixation of scope and schedule. Therefore, either the scope must be flexible and the schedule fixed, or vice versa. This relationship explains the strategies for dealing with the problem when the generated agile data indicates that there will be a delay:

  • Schedule Adaption: It's sometimes possible to push back the deadline to give developers more time to implement all the stories, although this is often not an acceptable option for management.
  • Scope Adaption: Stakeholders prioritize features with the highest return on investment (ROI) and remove features with lower ROI from the project scope to meet the original deadline.

Personnel Increase: An alternative to the above strategies may be to invest more human resources in the project. Ideally, neither scope nor schedule need be adjusted. Note that this will result in a short-term drop in productivity, as the new team members require the attention of the original team members (explanations, answering questions, joint familiarization with the project, etc.), which distracts them from their actual work. After this period, productivity will rise above the original productivity as desired. Brook's Law is an inference from this fact, which states that adding personnel to a late project will delay it even further due to the initial drop in productivity.

Never Sacrifice Quality: Decreasing code quality by omitting testing or refactoring, with the intention of saving time, actually slows development and adds to technical debt. This is not an option at all.