short link: http://goo.gl/eyxq17
Also Known As:
Motivation: The quality of work done by individual team members is the responsibility of the team. Recognizing fellow team members as peers is critical if there is to be effective team ownership and quality control.
Structure: A team has a codebase and multiple team members, any of which may be a peer to another. Each unit of work that is done by a team member is validated by a unit test, and must be inspected by a peer before it can be committed to the codebase. Units of work, and their tests, can be inspected and adapted by team members, including those in the role of peer, in order to maintain quality control.
Applicability: The assignment of peers to team members is appropriate when the team as a whole cannot exercise effective and consistent jurisdiction over the work of all members. This is often the case when each team member is allowed a discrete piece of work, such as a user story or task, to action. The assignment of peers can become unnecessary when team collaboration is an entrenched practice; this can be the case with Single Piece Flow.
Consequences: The usage of peers can improve the consistency of work products, and provides a mechanism for team oversight of constituent members and quality assurance. Reduced rework is likely. Since peers are by definition reviewing the work of others, this can lead to frictions including the perception that individual performance is being criticized. Training is required in order to overcome this. There is also a danger that the use of peers will be seen as waste and the duplication of effort.
Implementation: Peers are most commonly found in two contexts. Peer Review is the ad-hoc assignment of a peer for the purposes of checking the conformance of work items to their acceptance criteria and the team’s Definition of Done. This is quite common in a Scrum setting. Pair Programming is the systemic use of peers for development and delivery; a peer will continually collaborate with a fellow on the actioning of work. Pair Programming is most commonly associated with Extreme Programming and Test Driven Development, though it may also be found in Scrum and DSDM implementations.