Velocity (software development)
This article needs additional citations for verification. (May 2018) (Learn how and when to remove this template message)
|Paradigms and models|
|Methodologies and frameworks|
|Standards and Bodies of Knowledge|
Velocity is a metric for work done, which is often used in agile software development. Measuring velocity is sometimes called velocity tracking. The velocity metric is used for planning sprints and measuring team performance. There is no scientific evidence that measuring velocity improves planning effectiveness or team performance. Furthermore, the metric can be misleading.
The following terminology is used in velocity tracking.
- Unit of work
- The unit chosen by the team to measure velocity. This can either be a real unit like engineer-hours or engineer-days or an abstract unit like story points or ideal days of effort. Each task in the software development process should then be valued in terms of the chosen unit.
- The interval is the duration of each iteration in the software development process for which the velocity is measured. The length of an interval is determined by the team. Most often, the interval is a week, but it can be as long as a month.
Velocity always involves counting the number of units of work completed in a certain interval. However, units of work can be measured in many different units.
The main idea behind velocity is to help teams estimate how much work they can complete in a given time period based on how quickly similar work was previously completed. Velocity is relative measure. In other words, the raw numbers mean little; it is the trend that matters.
One problem with velocity is that it conflates work done with planning accuracy. In other words, a team can inflate velocity by estimating tasks more conservatively. If a team says that a task will take four hours or is worth 4 points instead of taking two hours or being worth two points, their velocity will look better.
A second problem with velocity is that it does not take quality or priority into account. Velocity can be increased by neglecting good design, refactoring, coding standards and technical debt. Simply completing features as quickly as possible increases velocity regardless of quality. Similarly, velocity includes work done regardless of the benefits of that work. For example, building a feature no one wants or needs still counts as "work done".
A third problem with velocity is that it is often misused as a measure of efficiency or team performance. Velocity is a metric of work done, not efficiency. Velocity can be increased by working overtime or adding team members, neither of which necessarily increase efficiency or performance.
In summary, velocity is a problematic metric because it is easy to manipulate and often misused as an indicator of efficiency.