In this post I would be talking about the desired composition across the designations for a small scaled software company. When ever possible I would try to produce approximate numbers.
In general largest projects undertaken by small scaled companies are of around 2500 to 5000 man hours. The desired billing model of them is per hour or per day based. There are companies undertaking fixed bid projects as well. In general the average size of a project team is comprised of around 5 engineers. The team size would depend on the dead lines and the size of project. Some times number of available resource would also count in.
In my opinion when ever the size of the development team requires being greater than 4 or, even though it doesn’t require that much of a team, the complexity of the project is very high, it is desirable to have a Lead heading the team. If the team is less than 4 a Senior Engineer should be able to head the team and hold the responsibilities of a Lead. When the team size grow, a senior Lead may be required. In general for 40 engineers there should be 5~6 Leads.
For a small scaled company an Architect is a far more valuable resource to be allocated to a single project. Based on the responsibilities of the Architect role it is desirable to share an Architect across 3~4 large projects. In proportion for 40 Engineers a Single Architect should be enough. This may differ based on the skills and experience of the Architects.
Same applies for Project Managers when it comes for allocating to a single project. But since the responsibilities of the PM role are quite pressurizing, it may be desirable to allocate a single project manager to 2 ~ 3 projects. So, for 40 Engineers, I may suggest 2 Project Managers. There could be exceptional cases in allocation when a project is critical for the company, where an experienced project manager would be handling a single project only.