Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 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.