We have seen traditional and recently popular Software Development Team Structures. Now let us discuss on some specific team structures for the Programming or the Development team. Some of these are very traditional but still are very Generic in nature that will makes sense and could be extrapolated to various different variations. Selection of programming team structure is important according to the nature of Software Development team culture (eg: Agile, Hybrid etc) and project organization (eg: traditional projects). Ideally, the team structure should not include not more than 4-6 per team and the number of communication paths should be reduced for effective co-ordination of team members. The following are the major programming team structures that is the backbone of all Software Development Teams –
1. Hierarchical Teams
a) Assimilates features of other existing programming team structures such as Democratic and Chief programmer
b) Software Development Manager (SDM) assigns/prioritizes tasks, manages projects and deadlines, acts as a servant leader removing daily roadblocks and protecting team from outside interference, performs technical artifact reviews and walk-through, performs personnel reviews, evaluations and staffing, provides guidance, mentor-ship, encouragement, conflict-resolution towards meeting day-to-day development deadlines, builds/maintains/protects team towards high performance in terms of productivity, creativity, innovation, quality and adherence to standards and organizational culture.
c) Senior Programmers are involved in System architecture design and development of complex Systems, frameworks and components, code reviews, mentor of Junior programmers
d) Junior programmers are involved in day-to-day development activities / coding per direction of SDM or the Senior Programmer
The advantage of Hierarchical teams is reduced or limited communication paths but very effective communication paths among team members who need to communicate with each other and it is most suited for development of hierarchical systems and subsystems.
2. CTO lead start up team / Chief Developer
This kind of team is rooted in the traditional Chief Developer /Programmer team which is most suited for teams developing mission critical or a ground breaking start up Software Product. The Chief Programmer or the CTO (Chief Technology Officer) usually is a person with more than 10 years of core developing and architecture experience designing and building similar systems. He leads the development team consisting of Developers, Testers and potentially technical writers and back up consultants who acts as a consultant to chief programmer on technical matters, provides liaison with customers. This could be compared to a start-up development team who has an assignment of 6-8 months to design-build-deploy a ground breaking Software Product. This can also be compared to the scrum team which is headed by a Software Development Manager or a Senior Programmer who leads the scrum team consisting of Developers, QA and being consulted by a Product Owner.
a) Are highly structured with the Chief assisted and supported by other team members
b) Chief designs product, implements critical parts of the product, makes all major technical decisions, allocate work for each team member. Communication is mediated by the Chief.
c) Programmers write code, debug, unit test
d) QA performs System Tests and creates /maintains automated tests
e) The back up consultant (which makes sense for a startup) acts as a consultant to chief programmer on technical matters, provides liaison with customers
3. Democratic Teams
a) Goals are set and decisions made group Consensus
b) Group leadership is played by a competent member who has ability to take decisions where consensus cannot be reached
c) Work products are discussed openly and are freely examined by all team members
d) Communication overhead is huge to reach decisions
e) It requires that all team members should work well with same effort together
f) There will be weakening of individual responsibility, authority and initiative.
Other related articles that you might be interested in –
1. Factors Affecting Software Cost
2. Software Cost Estimation
3. Software Development Team Structures
4. Factors Affecting Software Quality and Developer Productivity
5. Managerial Issues of Software Engineering
6. Connecting Traditional Water Fall Software Life Cycle Model with Agile Models
7. Software Engineering
8. Software Engineering then and now
9. Project size driving Project risk
10. Quality considerations for software projects