Velocity (software development)

Last updated

Velocity is a metric for work done, which is often used in agile software development. [1]

Contents

Measuring velocity is sometimes called velocity tracking.[ citation needed ] The velocity metric is used for planning sprints and measuring team performance.

Principle

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. [2] Velocity is relative measure. In other words, the raw numbers mean little; it is the trend that matters. [3]

Terminology

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, engineer-days or Product Backlog Items (PBI), or story points. [4] Each task in the software development process should then be valued in terms of the chosen unit.
Interval
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.

Criticism

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 (sometimes called point inflation). [5] [1]

A second problem with velocity is that it does not take quality, alignment with user goals 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” and completing a work unit which moves away from a user goal such as ease of use is movement in the opposite of the direction desired.[ citation needed ]

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.[ citation needed ]

Related Research Articles

Earned Value Management (EVM), earned value project management, or earned value performance management (EVPM) is a project management technique for measuring project performance and progress in an objective manner.

Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not necessarily limited to:

A software company is a company whose primary products are various forms of software, software technology, distribution, and software product development. They make up the software industry.

In software development, agile practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/end user(s), adaptive planning, evolutionary development, early delivery, continual improvement, and flexible responses to changes in requirements, capacity, and understanding of the problems to be solved. Popularized in the 2001 Manifesto for Agile Software Development, these values and principles were derived from and underpin a broad range of software development frameworks, including Scrum and Kanban.

In agile principles, timeboxing allocates a fixed and maximum unit of time to an activity, called a timebox, within which planned activity takes place. It is used by agile principles-based project management approaches and for personal time management.

Lean software development is a translation of lean manufacturing principles and practices to the software development domain. Adapted from the Toyota Production System, it is emerging with the support of a pro-lean subculture within the agile community. Lean offers a solid conceptual framework, values and principles, as well as good practices, derived from experience, that support agile organizations.

Extreme programming (XP) is an agile software development methodology used to implement software projects. This article details the practices used in this methodology. Extreme programming has 12 practices, grouped into four areas, derived from the best practices of software engineering.

<span class="mw-page-title-main">Scrum (software development)</span> Software development framework

Scrum is a framework for project management commonly used in software development, although it has been used in other fields including research, sales, marketing and advanced technologies. It is designed for teams of ten or fewer members who break their work into goals that can be completed within time-boxed iterations, called sprints. Each sprint is no longer than one month and most commonly lasts two weeks. The scrum team assesses progress in time-boxed daily meetings of 15 minutes or fewer, called daily scrums. At the end of the sprint, the team holds two further meetings: one sprint review intended to demonstrate the work done for stakeholders and solicit feedback, and one sprint retrospective intended to enable the team to reflect and improve.

<span class="mw-page-title-main">Burndown chart</span>

A burndown chart or burn down chart is a graphical representation of work left to do versus time. The outstanding work is often on the vertical axis, with time along the horizontal. A burn down chart is a run chart of outstanding work. It is useful for predicting when all of the work will be completed. It is often used in agile software development methodologies such as Scrum. However, burn down charts can be applied to any project containing measurable progress over time.

A glossary of terms relating to project management and consulting.

In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management. It is also known as a software development life cycle (SDLC). The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.

A programming team is a team of people who develop or maintain computer software. They may be organised in numerous ways, but the egoless programming team and chief programmer team have been common structures.

<span class="mw-page-title-main">Kanban board</span> Main tool used to implement the kanban project management methodology

A kanban board is one of the tools that can be used to implement kanban to manage work at a personal or organizational level.

Agile Business Intelligence (BI) refers to the use of Agile software development for BI projects to reduce the time it takes for traditional BI to show value to the organization, and to help in quickly adapting to changing business needs. Agile BI enables the BI team and managers to make better business decisions, and to start doing this more quickly.

SNAP is the acronym for "Software Non-functional Assessment Process," a measurement of the size of the software derived by quantifying the non-functional user requirements for the software. The SNAP sizing method complements ISO/IEC 20926:2009, which defines a method for the sizing of functional software user requirements. SNAP is a product of the International Function Point Users Group (IFPUG), and is sized using the “Software Non-functional Assessment Process (SNAP) Assessment Practices Manual” (APM) now in version 2.4. Reference “IEEE 2430-2019-IEEE Trial-Use Standard for Non-Functional Sizing Measurements,” published October 19, 2019. Also reference ISO standard “Software engineering — Trial use standard for software non-functional sizing measurements,”, published October 2021. For more information about SNAP please visit YouTube and search for "IFPUG SNAP;" this will provide a series of videos overviewing the SNAP methodology.

Disciplined agile delivery (DAD) is the software development portion of the Disciplined Agile Toolkit. DAD enables teams to make simplified process decisions around incremental and iterative solution delivery. DAD builds on the many practices espoused by advocates of agile software development, including scrum, agile modeling, lean software development, and others.

Scrumban is an Agile aligned approach to product delivery which is a hybrid of Scrum and Kanban. Scrumban was originally designed as a way to transition from Scrum to Kanban.

In Agile software development, the Fibonacci scale consists of a sequence of numbers used for estimating the relative size of user stories in points. Agile Scrum is based on the concept of working iteratively in short sprints, typically two weeks long, where the requirements and development are continuously being improved. The Fibonacci sequence consists of numbers that are the summation of the two preceding numbers, starting with [0, 1]. Agile uses the Fibonacci sequence to achieve better results by reducing complexity, effort, and doubt when determining the development time required for a task, which can range from a few minutes to several weeks.

Agile learning generally refers to the transfer of agile methods of project work, especially Scrum, to learning processes. Likewise, agile learning proceeds in incremental steps and through an Iterative design which alternates between phases of learning and doing. The tutors rather have the role of a learning attendant or supporter. In a narrower sense, it is intended to allow competence-oriented, media-based learning in the work process within companies.

Distributed agile software development is a research area that considers the effects of applying the principles of agile software development to a globally distributed development setting, with the goal of overcoming challenges in projects which are geographically distributed.

References

  1. 1 2 Rubin, Kenneth (2013), Essential Scrum. A Practical Guide to the Most Popular Agile Process, Addison-Wesley, ISBN   978-0-13-704329-3
  2. Glossary of scrum terms: Velocity, archived from the original on 2010-11-29, retrieved 2010-09-24
  3. Agile 101: Agile Software Development Velocity, VersionOne.com, archived from the original on 2010-10-02, retrieved 2010-09-23
  4. Measures of size, agilesoftwaredevelopment.com, archived from the original on 2010-10-26, retrieved 2010-09-24
  5. "point inflation". innolution.com. Retrieved 2019-06-06.