Team Practices Group/Glossary

Introduction
This document is intended to clarify these terms as they are used within the Wikimedia Foundation teams and broader community.

NOTE: Definitions are a work-in-progress. Terms will be added or removed as needed. Italics indicate terms which do not yet have definitions here.

Acceptance testing
Testing, usually manual, in order to judge whether or not completed software development meets the needs of the end user. Usually performed by a representative sampling of end users, by a paying customer, or by a Product Owner or other proxy for end users.

Agile
"Agile" is a mindset, not a specific process. As such, it does not call for the use of any specific practices or ceremonies. People often confuse the concept of agile development with specific agile methodologies such as or, or with specific agile practices such as Incremental Development or.

Agile was developed in the 1990's as a response to the dominant software development paradigms of the time, which were "No process" and "Heavy process". The heavy processes of the time, which were typically some form of, often required massive requirements documents and massive design documents to be created and approved, before a single line of code would get written. It was frustrating for both developers and customers, and the failure rate of software projects (whether they used heavy processes or no processes) was insanely high. At first, this new alternative approach was known as "lightweight" development, but that had negative connotations, so they renamed it to agile.

Agile changed the focus from the process and tools to the people doing the work. It de-emphasized documentation in favor of working code. And it embraced responding to change over following a plan. The highest priority of agile is to satisfy the customer, and another priority is "technical excellence and good design". The agile mindset is captured nicely by the.

Agile Manifesto
A public declaration that launched the movement. The gist of it is valuing:
 * Individuals and interactions over processes and tools
 * Working software over comprehensive documentation
 * Customer collaboration over contract negotiation
 * Responding to change over following a plan

Artifact
A document or other persistent collection of data used to track and communicate information.

Automated testing
Tests that are executed without human intervention.

Backlog
A list of tasks (features, defect fixes, etc) that need to be done. Backlogs are a key artifact of. For details, see and.

Blocker
A bug or other problem that prevents progress. A blocker may block another bug or task, or may block a release or other major milestone.

Blocker criteria
A set of standards for determining if a work item (e.g. defect, feature, or change request) would delay a release. These standards set minimum requirements for changes to a codebase which is changing and driving towards a product release with a specified set of features. Blocker criteria are also used to minimize introducing new regressions into a codebase.

Bug
The term "bug" is often used as a catchall to mean a code, requirements oversight, request, improvement, , or any other technical work. Generally, it is better to use a more specific term, to avoid confusion. Wikipedia article.

Burndown chart
A graphical representation of work (for example, defect fixes) remaining in a project versus time. A burn down chart helps teams predict when work for a given project will be completed, and to track progress. Burndown charts are most often used to track progress within an or toward a major release.

Burnup chart
A modification of the Sprint Burndown chart. Instead of showing one line representing the total remaining points to be completed (i.e., Committed - Done), a burnup chart shows completed points over time (Done) with one line and Committed with a separate line. This makes it possible to see which changes in (Committed - Done) are due to changes in each of the two variables separated. A burnup chart can also be constructed for an entire project over multiple sprints. The chart below shows uncertainty in the velocity.

Ceremony
"[T]hose process activities you must perform to keep your development work on track." Rick Freedman In Scrum, ceremony refers to the standard meetings in which basic Scrum activities are performed: daily Standup, and Sprint Planning, Review, and Retrospective.

Code smell
An informal indication of the quality of code, typically in terms of maintainability and of adherence to coding standards and best practices. May also indicate technical debt.

Co-located team
A team where all members are physically present in the same office.

Continual (or continuous) improvement
An ongoing effort of constantly evaluating and improving processes in the light of their efficiency, effectiveness and flexibility. It is a key part of (with its  at the end of each ), and is one of the 12 principles behind the.

This can take the form of regularly scheduled retrospectives, along with tangible actions afterwards to actually improve. Or it can be that everyone involved in the process is actively encouraged to look for improvements every single day. Regardless of the implementation details, the important thing is that there is a culture that encourages processes and practices to keep improving over time.

As a side note, "continuous improvement" has traditionally been used, but "continual" is technically more accurate, and is used by ISO in its standards.

Cross-functional team
A team in which

Cycle Time
The time it takes a piece of work to travel between the beginning and ending points within a process. Some spans that may be measured by cycle time includes: a Scrum Story from Committed to Done; software patches from date submitted to date reviewed or resolved; bugs from time reported to time triaged, or to time resolved.

Daily scrum (meeting)
requires the team to hold a brief daily "scrum" meeting (Wikipedia article).

During the meeting, each team member answers three questions: Typically, the daily scrum is a "" meeting, where to encourage brevity, everyone remains standing.
 * What did I do yesterday that helped the Development Team meet the ?
 * What will I do today to help the Development Team meet the Sprint Goal?
 * Do I see any impediment that prevents me or the Development Team from meeting the Sprint Goal?

Daily standup (meeting)
A common practice, where the team meets briefly each day to share status, s, or other helpful information. The name ("standup") comes from the convention of not sitting down, to encourage brevity. requires daily team meetings, and defines a very specific agenda for them (see ).

Defect
An error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended or undesired ways. A heuristic for differentiating bugs from features is, a bug reflects a discrepancy between the intended and actual behavior.

Deliver
Make a product available to a wide end-user audience. Also called, , or.

Deploy
Make a product available to a wide end-user audience. Also called, , or ..

Distributed team
A team in which one or more members are geographically separated from other team members.

Done
A formal term in Scrum that refers to the acceptance of a story as complete by the Product Owner. In Scrum, a Story that is not completed to the shared understanding of the Product Owner and developer is not Done. The shared understanding may be documented in Acceptance Criteria, but these are intended as a memory aid, not a contract to mediate disputes.

A Story which meets the shared understanding but does not completely address the Customer's need is still Done, and new Stories should be created to address gaps.

Epic (a type of story)
An Epic is a type of that represents a larger amount of work than can be captured in a normal. It is typically too large to fit within a single, and is often difficult to estimate reliably. The distinction between Story and Epic is subjective, so it is up to a team to define the boundaries.

Examples of Epics might be a large specific feature, such as "allow visual editing", or a multi-faceted initiative such as "make the site work better on mobile devices".

Fibonacci sequence (for estimation)
A standard practice in Scrum is to estimate all stories to a set of values based the Fibonacci sequence. Typically, this is 0, 0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100.

Impediment
An impediment is anything that prevents a Scrum Team Member from progressing on their Scrum Tasks. The Team Member is responsible for reporting the impediment, and the ScrumMaster for resolving it or escalating resolution.

Iteration
In terms, an iteration is a quantity of time and work, resulting in a. Typically this would have the team working for a few weeks, after which the product would be improved, and would be tested and documented enough that it could be ed. Iterations are almost always measured in weeks, and are most often 2 or 3 weeks long.

In, iterations are known as "s". doesn't specify fixed-length iterations.

Iteration zero
An iteration performed by a new team; goals may include practicing the Scrum process, developing an initial backlog of stories, or creating infrastructure necessary to work on the project.

Kanban (a methodology)

 * NOTE: The word "Kanban" can be used in many different ways, to mean many different things. This entry completely ignores several definitions, including at least 2 kinds of Kanban process or methodology. Even within the software development context, there isn't a single universal definition. The primary source material for the description below is the book "Kanban in Action", by Hammarberg and Sunden.

Originally developed for managing manufacturing processes (see JIT and Lean), Kanban has been adapted to software development as a very light process. It is much less prescriptive than, relying on the team to decide which practices, s, and ceremonies it will use.

Commonly, work is split into small-ish s (less than one developer-week), and these tasks are treated as a continuous stream of work. Tasks enter the system, may go through several states such as "in progress" or "needs review", and eventually end up exiting the system as "done". A Kanban closely resembles a Scrum task board, with each state represented by a column.

Unlike Scrum, in Kanban there are no fixed-length s. Instead, work steadily flows through the system. As a result, the can change  which tasks will be worked on next at the last minute, as long as work hasn't actually started.

One key concept in Kanban is limiting. Generally this is represented by each column in the board having a maximum number of tasks that it can hold. If a column is full, then before a new task enters, a task must proceed to the following column in order to free up space. While this sounds like a simple technicality, it actually has significant effects on the system. Limiting WIP and reducing the batch size force the work to flow at a more steady pace, improving flow, and increasing the overall speed of the team.

is another critical aspect of Kanban. Team members are also encouraged to continuously be on the watch for potential improvements, and regular formal s are encouraged. Wikipedia article.

MoSCoW
A technique for quick prioritization, by assigning all requirements to exactly one of the following buckets:

M=MUST

S=SHOULD

C=COULD

W=WON'T

Open Kanban (a methodology)
Open Kanban was created in response to widespread confusion and disagreement about the meaning of as it relates to software development. It documents a handful of values and general practices which define an "ultra-light method". It can serve as a foundation upon which a team can define a process, which might up looking somewhat like " without fixed iterations".

The values are: The practices are:
 * Respect for people
 * Courage
 * Focus on value (and not waste)
 * Communication and collaboration
 * Holistic or systemic approach to change
 * Visualize the workflow
 * (e.g. on a workboard)


 * Lead using a team approach
 * (e.g. self-directed team)


 * Reduce the batch size
 * (e.g. work on small stories, serially)

Similar to, Open Kanban does not require or prohibit detailed practices such as testing and pair programming. However, where Scrum does require specific practices like fixed-length iterations, and ceremonies like the, Open Kanban leaves it up to the team to determine what works best. The only requirement is that such decisions are subject to.
 * Learn and improve continuously

Open Kanban is released under an open license (CC BY).

Planning poker
A tool used in Scrum for group estimation, in which a group of people discuss and clarify a task until they all feel ready to estimate, then estimate independently in Story Points (by each selecting numbers in a deck of cards, chat room, or other tool and revealing them simultaneously), then discuss outlier estimates and converge on a final answer via discussion and/or re-vote.

Points
See #Story Points.

Potentially shippable product
A product that has met the. This does not mean that the product will be released immediately. A product could be ready to ship, but not actually ship until a later date.

Product backlog
In, the list of s that need to be completed in order to deliver a viable product, ordered by priority. This list can contain s, fixes, and non-functional requirements, and is managed by the. Wikipedia article:

Product Owner
A formal role in Scrum.

Regression
A bug which was fixed in a previous release but has manifested again.

Regression Testing
Testing which is specifically intended to re-test issues known to be fixed to ensure that regression problems are identified as quickly as possible, so that they can be more easily tracked to their source, and so that the product's quality does not regress.

Release (noun)
A specific version of a software product, intended to meet Release Criteria and be ed.

Release (verb)
Make a product available to a wide end-user audience. Also called, , or.

Release Criteria
A set of standards and features that must be met in order for a product to be ed to a general audience. Before a product can be ready to ship, it has to be tested and improved for stability, performance, s, usability, etc. Release criteria guide this process, ensuring that user meets are met and that a product reaches a certain level of quality before being released.

Release train
A metaphor for a series of fixed-date releases in sequence, such that work in progress that is not quite ready for one release can readily be included in the next release fairly soon, limiting the motivation to delay releases.

Retrospective
A discussion held at some milestone point (such as at the end of an, or after a ment), where a team can reflect on that experience. Typical questions include "what went well?" and "what could have gone better?" There are many different templates for the format. The goal is future improvement, not blaming or scapegoating for what went wrong.

The quarterly WMF Team Health checks are a form of retrospective. requires the team to have a at the end of each, which is typically every 2-3 weeks.

Other common names for retrospectives include "sunset review", and "post-mortem".

Scrum (a methodology)
"Scrum is an empirical Agile project management framework used to deliver increments of high value to the customer iteratively. Scrum relies on self organizing, empowered teams to deliver the product increments. It also relies on a customer, or Product Owner, to provide a team with a list of desired features using business value as the priority mechanism. (from http://epf.eclipse.org/wikis/scrum/)"

A Scrum team consists of a (who often has the Product Manager title), a, and the development team (often referred to as just "the team"). Each product increment is developed during an known as a, which is less than one month long. By the end of each iteration, the result must be a. The team meets each day for a (often referred to as a ). Each sprint begins with a, where the team chooses a set of high-priority stories from the backlog, and commits to completing them during this iteration (thus forming the ). Each sprint ends with a meeting (where stakeholders see what was developed), and a. During a sprint, only the development team is allowed to add tasks to the sprint backlog.

The Product Owner acts as the single voice of the customer and other stakeholders. He or she determines the strategic direction of the product, and prioritizes the work according to its value. The ScrumMaster is a facilitator and obstacle-remover, enforcing the process and buffering the team from distractions.

Scrum is a relatively "lightweight" process, specifying only a few roles and ceremonies. It does not specify particular coding techniques, methods, or other practices. That makes it much easier to adopt than a more prescriptive methodology like, although there are even lighter options such as.

Wikipedia article

Scrum (a meeting)
Teams following the process meet daily in a brief "scrum" meeting. See.

Scrum of scrums
An extension of, which improves coordination of multiple Scrum teams working on the same product. Each Scrum team sends a representative to the Scrum of Scrums meetings, which take a form similar to a : Each person says what their team has worked on since the last meeting, what it will be working on until the next meeting, and whether they are facing any obstacles. They should also mention if they are about to create an obstacle that would affect other teams. The focus is on inter-team dependencies and obstacles.

Ship (verb)
Make a product available to a wide end-user audience. Also called, , or.

Shirt sizing (estimation)
Estimation by grouping many items into a small number of different sizes, e.g., Small, Medium, Large.

Shovel-Ready
A Story that is sufficiently detailed to be estimated in a Sprint Planning meeting.

Spike
An problem or open question which will require an indeterminate amount of work to resolve. To be useful, a Spike should have a well-defined outcome, e.g., "figure out which database to use", and be completable within a Sprint. Spikes do not have Story Points, and are a compromise to incorporate but constrain un-estimated work within a Scrum.

Sprint
In the Scrum process, each is called a "sprint". A Sprint is a fixed amount of time (a "" of up to one month), during which the team has committed to a specific set of work, and is focused on completing it. Each sprint starts with a to define the scope, and ends with a  meeting (showing the results) and a  meeting (for ).

Note that despite the name "sprint", the pace of work is expected to be steady and sustainable.

Sprint backlog
In, the list of s (s, fixes, etc.) which the team has committed to complete during the current  (aka ). This is managed by the team, and once a sprint has started, only the team can add items to the sprint backlog. Wikipedia article:

Sprint retrospective
A meeting held by teams using, at the end of each  (aka ).

Standup (meeting)
A short meeting, often held daily, to communicate status. The name comes from the common practice of having all attendees stand up during the meeting, to encourage brevity. See also and. A standup is intended solely for information sharing, not for problem-solving.

Story
A brief summary in common language describing a user. Typically they are short enough to fit on an index card, and often they are written in sentence form like "As a  , I want  so that  ". Unlike a full use case or detailed requirement, they only capture the essence of the feature, and primarily serve as a reminder of a conversation between the person(s) defining the user interaction and the person(s) implementing the feature. A story is one type of that might appear in a.

Story points
A unitless measure that indicates the amount of work required to complete a Story. A Story Point is intended to capture both the amount of work likely required to complete a Story, and the risk inherent in the Story.

Storyboard
A physical board, or virtual representation thereof in a computer tool, which shows tasks in a grid, where each column represents a different status. Rows may indicate priority, order of entry, or nothing in particular.

Task
A discrete piece of work required to finish a Story, fix a Bug, remove an Impediment, or otherwise advance some other objective. A good task should have most of the characteristics of SMART.

Technical debt
The degree to which short-term decisions have compromised the ability of a software product to meet longer-term needs. Stories which reduce technical debt may have little or no immediate benefit to users. The concepts of accumulating and discharging technical debt provide a way to think and make decisions about short-term vs long-term needs.

Technical stories
A Story which does not directly involve a user of the product but is helpful or necessary to development. In the form "As an X, I want to Y so that Z", X is a developer, database administrator, or other member of the team or support for the team. For example, "As a developer, I want to port a software library to this project's programming language, so that we can use it to complete other Stories more quickly."

Timebox
A development cycle with a fixed ending. This may mean that development stops on a fixed date, followed by a decision on how to proceed. It may also refer to a software release that is scheduled for a fixed time regardless of feature development.

Use case
A scenario in which the software may be used. Used to describe and divide the ways in which software may be used, in order to validate requirements, design, and functionality incrementally.

Unit testing
A test, usually automated, which validates a small and self-contained piece of code in isolation from other code.

User story
A brief summary in common language describing a user. The term "User Story" originated in, but it is often shortened to just.

Velocity
A measurement of how much work a team got done within a specific time period, or an average over multiple time periods. For example, a team that estimates using, and who works in 2-week s, might report a velocity of "18 points per iteration". This does not necessarily mean that they would be able to complete 18 points in future iterations, but is often used as a ballpark guess of how much work to commit to for an upcoming iteration.

Some important notes about velocity:
 * It should measure how many estimated units got completed, not how much actual time was spent
 * It is only meaningful at a team level, not per individual
 * Velocities can never be meaningfully compared between teams
 * It is most informative when estimates over time are consistent (not necessarily accurate)
 * It is heavily dependent on the availability of team members within each iteration
 * Incentives based on velocity are counter-productive

Wikipedia article

Velocity Chart
A chart showing how a team's velocity per sprint has changed over time. It can be used to diagnose trends in team performance.

Online Agile glossaries:

 * http://www.solutionsiq.com/agile-glossary/
 * http://agiledictionary.com
 * http://www.telerik.com/teampulse/agile-vocabulary
 * http://www.innolution.com/resources/glossary
 * http://www.scrumstudy.com/search.asp