Programming team


A programming team is a team of people who develop or maintain computer software. They may be organised in numerous ways, but the egoless programming team and chief programmer team have been common structures.

Description

A programming team comprises people who develop or maintain computer software.

Programming team structures

Programming teams may be organised in numerous ways, but the egoless programming team and chief programmer team are two common structures typically used. The main determinants when choosing the programming team structure typically include: difficulty, size, duration, modularity, reliability, time, and sociability.

Egoless programming

According to Marilyn Mantei, individuals that are a part of a decentralized programming team report higher job satisfaction. But an egoless programming team contains groups of ten or fewer programmers. Code is exchanged and goals are set amongst the group members. Leadership is rotated within the group according to the needs and abilities required during a specific time. The lack of structure in the egoless team can result in a weakness of efficiency, effectiveness, and error detection for large-scale projects. Egoless programming teams work best for tasks that are very complex.

Chief programmer team

A chief programmer team will usually contain three-person teams consisting of a chief programmer, senior level programmer, and a program librarian. Additional programmers and analysts are added to the team when necessary. The weaknesses of this structure include a lack of communication across team members, task cooperation, and complex task completion. The chief programmer team works best for tasks that are simpler and straightforward since the flow of information in the team is limited. Individuals that work in this team structure typically report lower work morale.

Shared workstation teams

Pair programming

A development technique where two programmers work together at one workstation.

Mob programming

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.

Programming Models

Programming models allow software development teams to develop, deploy, and test projects using these different methodologies.

Waterfall Model

The waterfall model, noted as the more traditional approach, is a linear model of production. The sequence of events of this methodology follows as:
  1. Gather and document requirements
  2. Design
  3. Code and unit test
  4. Perform system testing
  5. Perform user acceptance testing
  6. Fix any issues
  7. Deliver the finished product
Each stage is distinct during the software development process, and each stage generally finishes before the next one can begin.
Programming teams using this model are able to design the project early on in the development process allowing teams to focus on coding and testing during the bulk of the work instead of constantly reiterating design. This also allows teams to design completely and more carefully so that teams can have a complete understanding of all software deliverables.

Agile Model

The Agile development model is a more team-based approach to development than the previous waterfall model. Teams work in rapid delivery/deployment which splits work into phases called "sprints". Sprints are usually defined as two weeks of planned software deliverables given to each team/team member.
After each sprint, work is reprioritized and the information learned from the previous sprint is used for future sprint planning. As the sprint work is complete, it can be reviewed and evaluated by the programming team and sent back for another iteration or closed if completed.
The general principles of the Agile Manifesto are as follows: