Team programming

{{More citations needed|date=August 2023}}

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; in these systems, programmers are often grouped in pairs at the same computer workstation, one observing the other working on the software and alternating roles at time intervals.

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 within a viable timescale; 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.

Paper-oriented systems methodologies originally designed for undertaking governmental projects, such as the Structured Systems Analysis and Design Method (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. The resulting "paper trail" for a systems development project could take so long to build that often parts of the analysis documentation—or sometimes its entirety—was out of date by the time of actual development, rendering them worse than useless.

=Mob programming=

File:Mob prog.jpg

Mob programming (sometimes informally called mobbing, ensemble programming or posse programming{{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}}) 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.{{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}}

{{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).

{{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}}

|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.{{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}}

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, testing, 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.{{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}} Mob programming also works for distributed teams in the same virtual space using screen sharing technology.{{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}}

See also

References