Working on a project comes with a major challenge in deciding the team size. Should it be 5 people or 30 people. Adding less people to a project obviously will delay the project and even adding more people to a project will delay it (universal truth).
Discussing the matter with one of my colleague we came out to a strategy on team size in words of Jeff Bezos: The team size should be such that all can share two large pizza's happily.
The magical number is 10 person per project.
These 10 people can effectively deliver a software project on time which a team of 40 people can't even imagine to do.
Roles of these super-intelligent 10 people goes somewhat like this.
1_ The Surgeon(Chief Programmer)
He is the main programmer who defines the functional and performance specifications, designs the program, documents it and does major portion of the coding. The minimum qualification for this person is around 10 years(-3 years for startups) of experience with great knowledge about architecting a project. He is responsible for complete project.
2_ The Copilot (Shadow of chief programmer)
He image of the chief programmer who is alter ego of 1st but with less experience. The chief programmer discusses everything with copilot and brainstorm each idea and evaluates the most effective one.
3_ The Administrator
As the name suggests this person handles all the administrative tasks like legal, contractual, reporting and financial. He is the people's person and manages machines too. He can easily serve 2-3 teams.
4_ The editor
This person is responsible for reviewing the documentation and reworks on it to make it ready for production. Documenting a project is more important than coding it, so this part needs to be done effectively.
5,6_ Two secretaries
No. 3 and 4 both needs secretaries for handling non project files and helping out these two in performing there tasks.
7_ The program clerk
He maintains all the technical records of team. He is responsible for all the loggings, running the final build etc. In todays terminology he is the DevOps guy.
8_ The toolsmith
This person is responsible for supplying all the necessary softwares or tools are required by surgeon to perform his operations. If the tool is not available the toolsmith's job is to create one. For example: He can write a library which can be used by chief programmer in his code.
9_ The tester
Even best of the surgeons fail, so we need a tester(QA) for reviewing the system by running test cases from End to end and even unit test cases.
10_ The language lawyer
This person helps the chief programmer to code in a specific language. He is specialised in one of the language for example Ruby and knows all tricky things about it and saves the time of surgeon. Such person can serve 2-3 chief programmers
Communication within the team
Surgeon | | Administrator--------------------| |--------- Copilot | | | Secretary | |----------Programming clerk | | Editor------------------------| |----------Toolsmith | | Secretary |----------Tester | |----------Language lawer
The terminology above is given from book [The mythical man month - a must read books for all software developers]