Sei sulla pagina 1di 13

Team Organization

Introduction

Software development is team work – it requires


a group of people to work together to develop a
software product..
Chief Programmer Teams
 The concept of a chief programmer team was given by
Baker in 1972. In such a team, the chief programmer
is the main person – the whole team is centered
around the chief programmer. The chief programmer
is assisted by a team of three or four programmers, a
programming secretary (or librarian) and a backup
programmer. The chief programmer performs not only
technical functions but also managerial functions. The
chief programmer leads the team, schedules the
project, allocates work to the programmers, review
their work, creates architectural design of the system
and even writes complex sections of the code.
Chief Programmer Teams
 The chief programmer also performs managerial
functions such as performance appraisal, handling
budgeting and legal issues. The job description of
chief programmer requires that he or she must be
not only a skilled programmer / designer but also a
good manager.
 The programming secretary or librarian is
responsible for maintaining the paperwork related to
the project, such as requirements and design
documents, source code, and test cases. The
programming secretary is also supposed to be a
technical person.
Chief Programmer Teams
 The backup programmer is not actively involved in
software development, but remains prepared to take
over the role of chief programmer when he/she is not
available. The backup programmer assumes the
responsibilities of chief programmer when he/she
resigns, or falls ill, or is unable to continue due to any
reason.
 Chief programmer teams are no longer in use
because of the following major drawbacks:
Chief Programmer Teams
– A suitable person for the position of chief
programmer is hard to find, because a
combination of both technical and
managerial skills is rare in an individual.
– Backup programmer is even harder to find,
because he/she is a person of same
capabilities as the chief programmer but
has to work at a lower status/income.
Democratic Teams
 A democratic team consists of 3 to 10 members who
work together with the common objective of
developing the software product. The important
characteristics of a democratic team are that all team
members have equal status: there is no team leader,
and nobody in the tem is given preference over other
team members. The team members work together to
achieve the common objective – that of developing
the software product.
Democratic Teams
 In a democratic team, the programs developed
are not associated with a particular team
member. It has been suggested that finding
bugs in others’ programs is easier than finding
them in one’s own programs because of one’s
ego attached to the programs. In a democratic
team, the programmers do not have their
personal ego attached to the programs,
therefore it is easier for them to find bugs.
Democratic Teams
 In a democratic team, it is important that
management treat that team member as
strictly equal. All rewards and penalties are to
be given to the whole team rather than to
individual members.
 Although democratic teams work very well
because of their high cohesion, but certain
practical problems make them difficult to
form, such as:
Democratic Teams
– Democratic teams cannot be imposed, they are
spontaneously formed. For example, if a management
forms a group of programmers and calls it a
“democratic team”, it may not be a truly democratic
team. The team members may not work well together,
they may be having personality clashes etc.
– Decision making process is lower in a democratic
team. The reason for this is that there is no single
person responsible for making the decisions – all
decisions are made by consensus. This requires
greater communication between team members. The
decision a making process is particularly slow when
team is large.
Modern Programming Teams
 In a modern programming team, the technical functions are
separated form managerial functions. This means the
development team has a team leader whole looks after the
technical work, and a team manager who performs managerial
functions. The team consists of three to four members lead by
a team leader who is responsible for the technical work
including project scheduling, allocating work to the
programmers, reviewing their work, and designing the system.
The team manger is responsible for contract management,
performance appraisal, budgeting etc. it is important that the
distribution of work among team leader and team manager
must be clear.
Modern Programming Teams
 The structure for modern programming team can be
scaled up for larger projects, i.e. we can form small
teams of three to four members each lead by a team
leader, and the team leaders lead by a project leader
who has the overall responsibility of developing the
project. Each team leader is responsible for
developing his/her part of the project. A project
manager is still needed to look the management
functions.
Synchronize-and-Stabilize Teams

 These are based on synchronize-and-stabilize model used by


Microsoft. The work is divided among a number of teams of 3 to
8 members (developers and testers), and each team
synchronize its work with that of other teams on daily (or
periodic) basis. This team organization has worked well with the
largest systems developed by Microsoft . for example,
Windows 2000 operating system which consists of over 30
million lines of code was developed by 3000
programmers/testers organized as synchronize-and-stabilize
teams.
 Although the idea of synchronize-and-stabilize teams has
worked well with Microsoft, but its worth has not yet been
proved widely.
Extreme Programming Teams
 These are based on the extreme programming
model. Small teams of two members each are
created which independently work on different
versions of the project, each described in the
extreme programming model. Because extreme
programming model itself is a relatively new idea, it
could be risky to adopt this approach.

Potrebbero piacerti anche