Team programming

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.

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.

For example, in "pair programming", responsibility for the resulting product is equally shared between two programmers who work on their assigned sub-task together.

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.

Some examples include: defining user stories or requirements, designing, testing, deploying software, and working with subject matter experts.

French mob programming session