Team programming
In software engineering, team programming is a project management strategy for coordinating task distribution in computer software development projects, which involves the assignment of two or more programmers to work collaboratively on an individual sub-task within a larger programming project.
Multiple programmers to one sub-task
Although traditional software development has nearly always involved multiple programmers working on separate parts of a computer system for any project of significant scope and scale -- a method of division of labour -- in techniques such as pair programming multiple programmers work collaboratively on the same piece of source code as opposed to being individually responsible for individual tasks. This technique is frequently used in newer programming methodologies that are focused around object-oriented programming techniques, such as the Rational Unified Process and Extreme Programming (acronym "XP"), often in combination with design documentation methods such as the Unified Modelling Language (UML).
Pair programming
In "pair programming", responsibility for the resulting product is equally shared between two programmers who work on their assigned sub-task together. Benefits of this approach include the ability for deficiencies in knowledge and ability in specific areas to be compensated for by the other programmer; in addition, the shared responsibility is thought to increase incentives for meeting project deadlines and quality targets.