Content deleted Content added
further expansion |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(37 intermediate revisions by 22 users not shown) | |||
Line 1:
{{More citations needed|date=August 2023}}
In [[software engineering]], '''team programming''' is a [[project management]] strategy for coordinating task distribution in [[computer software]] [[Software development|development]] projects, which involves the assignment of two or more [[computer programmer|computer programmers]] to work collaboratively on an individual sub-task within a larger programming project. ▼
▲In [[software engineering]], '''team programming''' is a [[project management]] strategy for coordinating task distribution in [[computer software]] [[Software development|development]] projects, which involves the assignment of two or more [[computer programmer
== Traditional team management methods ==
Traditional software development has nearly always involved multiple [[computer programmers|programmers]] working on separate parts of a computer system for any project of significant scope and
== Modern trends: multiple programmers to one sub-task ==
Difficulties were experienced with these older methods, such as costs spiralling out of control as systems grew, and schedules failing to meet time-to-market targets. These issues gave rise to techniques such as [[pair programming]], [[mob programming]] (aka. [[ensemble programming]]), along with new systems lifecycle structures such as the [[Boehm spiral]]. Specification of these new approaches began in the mid-1980s and continues today. Many of these strategies involve multiple programmers working collaboratively on the ''same'' piece of [[source code]] as opposed to being ''individually'' responsible for individual tasks. For example, 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 deficiencies in knowledge of one programmer to be compensated for by the ability in specific areas by the other programmer; in addition, the shared responsibility is thought to increase incentives for meeting project deadlines and quality targets.
This technique is frequently used in newer programming methodologies that are focused around [[Object-oriented programming|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 object-oriented programming languages, software functionality forms modular, discrete units (termed [[class (computer science)|class]]es for the functional elements, and [[Modular programming|packages]] for constellations of interlinked classes that carry out a particular function); the two most well-known of these are [[C++]] and [[Java (programming language)|Java]]. This lends itself well towards the division of programming projects into sub-teams, although issues are still often encountered in integrating the resulting product following completion of each sub-task.
===Mob programming===
[[File:Mob prog.jpg|thumb|French mob programming session]]
'''Mob programming''' (sometimes informally called '''mobbing''', '''ensemble programming''' or '''posse programming'''<ref>{{cite journal|author1=Edward Sykes (Heretsch) |author2=Rajpal Singh|year=2012|title=ACCU 2012 Lightening Talks: Posse Programming|url=https://accu.org/conf-docs/PDFs_2012/Lightning_Talks_Fri_Ed.pdf|journal=Accu2012 Lightning Talks}}</ref>) is a software development approach where the whole team works on the same thing, at the same time, in the same space, and at the same computer. This is similar to [[pair programming]] where two people sit at the same computer and collaborate on the same code at the same time. With mob programming, the collaboration is extended to everyone on the team, while still using a single computer for writing the code and inputting it into the code base.<ref>{{cite journal|last=Zuill|first=Woody|year=2014|title=Mob Programming: A Whole Team Approach|url=https://www.agilealliance.org/resources/experience-reports/mob-programming-agile2014/|journal=Agile2014 Conference Experience Reports|pages=11}}</ref>
{{Blockquote
|text=The basic concept of mob programming is simple: the entire team works as a team together on one task at the time. That is: one team – one (active) keyboard – one screen (projector of course).
<ref>{{cite web|last1=Hammarberg|first1=Marcus|title=Mob programming – Full Team, Full Throttle|url=http://codebetter.com/marcushammarberg/2013/08/06/mob-programming/|website=CodeBetter|publisher=CodeBetter|access-date=9 September 2014|archive-date=15 November 2014|archive-url=https://web.archive.org/web/20141115035554/http://codebetter.com/marcushammarberg/2013/08/06/mob-programming/|url-status=dead}}</ref>
|author=Marcus Hammarberg
|title=Mob programming – Full Team, Full Throttle}}It builds on principles of [[lean manufacturing]], [[extreme programming]], and [[lean software development]]. Early use of the phrase "mob programming" was made in ''Extreme Programming Perspectives''.<ref>{{cite book |author1=Moses Hohman |author2=Andrew Slocum |chapter=Chapter 28. Mob Programming and the Transition to XP |title=Extreme Programming Perspectives |date=2002 |publisher=Addison-Wesley}}</ref>
In addition to software coding, a mob programming team can work together to tackle other typical software development tasks. Some examples include: defining [[user stories]] or requirements, designing, [[software testing|testing]], [[software deployment|deploying software]], and working with subject matter experts. Almost all work is handled in working meetings or workshops, where all the people involved in creating the software are considered to be team members, including the customer and business experts.<ref>{{cite web|last1=Nigri|first1=Julien|title=Le Mob Programming : Présentation|url=http://blog.soat.fr/2014/05/le-mob-programming-presentation/|website=Soat|publisher=Soat|access-date=9 September 2014|language=fr}}</ref> Mob programming also works for distributed teams in the same virtual space using screen sharing technology.<ref>{{Cite web|url=https://www.remotemobprogramming.org/|title=Remote Mob Programming|last1=Harrer|first1=Simon|last2=Christ|first2=Jochen|access-date=29 April 2019|last3=Huber|first3=Martin}}</ref>
== See also ==
* [[Pair programming]]
* [[Extreme programming]]
== References ==
<references/>
==External links==
* [https://mobprogramming.org Mob Programming]
{{DEFAULTSORT:Team Programming}}
[[Category:Software project management]]
|