Jump to content

Team programming

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Tristessa de St Ange (talk | contribs) at 04:35, 13 October 2007 (further improvements). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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 computer programmers to work collaboratively on an individual sub-task within a larger programming project. In general, the manner in which this term is used today refers to methods currently in vogue within the software development industry where multiple individuals work simultaneously on the same activity.

Traditional team management methods

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. Clearly, it is unreasonable to imagine that a single programmer could adequately complete all the required work for a complex system working entirely on their own; and as development projects become more complex, specialised expertise becomes of paramount importance in aspects such as systems analysis, quality assurance, and technical challenges posed by individual components. Initially this tended to be an informal process, but with the rise of commercial software development as a viable industry, a more industrial and systematic approach became necessary.

Systems methodologies originally designed for undertaking governmental projects, such as the Structured Systems Design and Analysis Methodology (SSADM), assigned individual people to carry out individual tasks, and specified the role of designers as being clearly separate from that of the programmers in the waterfall software development model. This methodology also clearly separated each of the individual "life-cycle" stages through which a system development project progressed.

Modern trends: multiple programmers to one sub-task

Difficulties experienced with these older methods, such as costs spiralling out of control as systems grew, and schedules failing to meet time-to-market targets, gave rise to techniques such as [[pair programming]. Conceived in the early 1990s, these strategies involve multiple programmers working 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).

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.

References