Agile software development project is a conceptual framework in software engineering where software is built within a relatively short period of time and has several iterations which yield stable release of software. Iteration usually takes one to four weeks and it depends on the type of the project. At the end of the iteration, we will have fully tested and working product. One of the key concepts in agile development is face to face communication to speed up the software development. Unlike communication over written documents which take ages to write and most of the time no one will read most of these documents.
As we know, agile project is done in relatively short period of time compared to other software development methodologies. To achieve the agility in a project, many articles, books, and agile practitioners suggest small team with consists of around seven people. There are also many recommendations on the mixture of skills within an agile team. Many people always try to tweak their agile team configuration, so that they can get the best outcome. This blog will discuss the optimal team size and composition in agile projects.
Generally, most of us will agree that more people equals to more productivity. Similarly, business people or our customers often ask us to add more people to increase the velocity of our software development project. Increasing the number of people in a software development will increase our performance, but at some point it will degrades our team because we need more coordination and communication to integrate many people. In agile projects, we always emphasize face to face communication and we often do standup meetings. In my opinion, small team which consists of seven people will perfectly match these concepts. Several developers might argue that we can still do agile project with big number of people, by dividing them into smaller self-managed team. However, I do not agree with this statement, as you are still required to integrate the work between teams and it is still difficult to communicate between small teams.
In term of team composition, a mixture of people with different set of software development skills is the best option. The reason behind this is an agile team should be self contained and self managed. The team also needs to do the entire software development iteration. The team should not ask for help from external resources or get any intervention from outside. Therefore it is good to have mixture of skills (analysts, developers, management, testers) within a team. Another issue in this area is the developer’s level of skill. Can we combine beginner with expert and experienced developers? Personally I prefer agile team which consists of expert or experienced developers only, because we do not need to educate other team member. In addition, agile team needs to take decisions fast which are possible if the team members have already had experiences in software development before.