Relationship between People and Effort
In small software development project a single person can analyze requirements perform design, generate code and conduct tests. As the size of a project rise more people must become involved.
There is a common myth that is still believed by many managers who are responsible for software development effort If we fall the project, by unfortunately adding people late in a project often has a disruptive effect causing schedules to slip even further. People late in a project often have disruptive effect causing schedules to slip even further. The People who are added must learn the system, and the people who teach them are the similar people who were doing the work. When they are teaching no work is done and the project falls further behind.
Addition to the time it takes to learn the system involving more people increases the number of communication paths and the complexity of communication by a project. Moreover communication is absolutely essential to successful software development every new communication path needs additional effort and by additional time.
An Example
Let's take an example 4 software engineers each capable of producing 5000 LOC per year when working on an individual project. When these 4 engineers are placed on a team project 6 potential communication ways are possible. Each and every communication path needs time which could otherwise it will be spent developing software. We shall suppose that team productivity will related with communication. Thus, team productivity will be reduced through 250 LOC per year for each communication path due to the overhead related with communication. Thus, team productivity is 20,000 - (250X6) = 18,500 LOC per year 7.5 % less than what we might expect.
The 1 year project on which the above team is working falls behind schedule, with 2 months remaining; 2 additional people are added to the team. The number of communication ways escalates to fourteen. The productivity input of the new staff is the equivalent of 840 X2 = 1680 LOC for the 2 months remaining earlier delivery. The Team productivity now is 20,000 + 1680 - (250 X14) = 18,180 LOC per year.
Moreover the given example is a total oversimplification of actual world circumstances it does serve to illustrate other key point that the relationship among the number of people working on a software project, overall productivity is not linear.
It is based on the people work relationship are teams counterproductive? The answer of this question is an emphatic no because of the communication which serves to improve software quality. In the fact formal technical reviews conducted through software engineering teams can lead to best design and analysis and more important it can reduce the number of errors which go undetected until testing. While quality and productivity when measured through time to project completion and customer satisfaction it can actually improve.