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.