A programming team is a
team
A team is a group of individuals (human or non-human) working together to achieve their goal.
As defined by Professor Leigh Thompson of the Kellogg School of Management, " team is a group of people who are interdependent with respect to inf ...
of people who develop or maintain
computer software
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
. They may be organised in numerous ways, but the
egoless programming
Egoless programming is a style of computer programming in which personal factors are minimized so that quality may be improved. The cooperative methods suggested are similar to those used by other collective ventures such as Wikipedia.
History
Th ...
team and
chief programmer team have been common structures.
Description
A programming team comprises people who
develop
Develop or DEVELOP may refer to:
* ''Develop'' (magazine), a trade publication for the video game industry
* ''Develop'' (Apple magazine), a technical magazine formerly published by Apple Computer
* Develop (chess), moving a piece from its origina ...
or
maintain computer software
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
.
Programming team structures
Programming teams may be organised in numerous ways, but the
egoless programming
Egoless programming is a style of computer programming in which personal factors are minimized so that quality may be improved. The cooperative methods suggested are similar to those used by other collective ventures such as Wikipedia.
History
Th ...
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.
Throughout both of these programming models, team members typically participate in daily 5 - 15 minute stand-ups. Traditionally, each member of the team will stand up and state what they have worked on since the previous stand-up, what they intend to work on until the next stand-up, and whether or not there is anything preventing them from making progress, often known as a "blocker".
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:
# Gather and document requirements
# Design
# Code and unit test
# Perform system testing
# Perform
user acceptance testing
In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met. It may involve chemical tests, physical tests, or performance tests.
In systems en ...
(UAT)
# Fix any issues
# 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
deliverable
A deliverable is a tangible or intangible good or service produced as a result of a project that is intended to be delivered to a customer (either internal or external). A deliverable could be a report, a document, a software product, a server upgr ...
s.
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 (i.e. next sprint) or closed if completed.
The general principles of the
Agile Manifesto
In software development, agile (sometimes written Agile) practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/ end user(s), a ...
are as follows:
* Satisfy the customer and continually develop software.
* Changing requirements are embraced for the customer's competitive advantage.
* Concentrate on delivering working software frequently. Delivery preference will be placed on the shortest possible time span.
* Developers and business people must work together throughout the entire project.
* Projects must be based on people who are motivated. Give them the proper environment and the support that they need. They should be trusted to get their jobs done.
* Face-to-face communication is the best way to transfer information to and from a team.
* Working software is the primary measurement of progress.
* Agile processes will promote development that is sustainable. Sponsors, developers, and users should be able to maintain an indefinite, constant pace.
* Constant attention to technical excellence and good design will enhance agility.
* Simplicity is considered to be the art of maximizing the work that is not done, and it is essential.
* Self-organized teams usually create the best designs.
* At regular intervals, the team will reflect on how to become more effective, and they will tune and adjust their behavior accordingly.
See also
*
Cross-functional team
A cross-functional team, also known as a multidisciplinary team or interdisciplinary team, is a group of people with different functional expertise working toward a common goal. It may include people from finance, marketing, operations, and human ...
*
Scrum (software development)
Scrum is a framework for project management with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies. It is designed for teams of ten or fewer m ...
*
Software development process
*
Team software process
In combination with the personal software process (PSP), the team software process (TSP) provides a defined operational process framework that is designed to help teams of managers and engineers organize projects and produce software for
products ...
*
Project team
In a project, a project team or team is defined as "an interdependent collection of individuals who work together towards a common goal and who share responsibility for specific outcomes of their organizations". An additional requirement to the or ...
References
{{Software engineering
Software project management