How do you grow from 6 to 20+ developers and maintain the same productivity? When I started at my company there were only 6 of us doing development. There were no communications issues. Each developer knew the system from top to bottom and was capable of implementing any feature. At the start of each release cycle each feature was estimated and assigned to a developer or several developers based on who was interested in doing that feature. Things were going great and productivity was very high.
3 years down the line things have changed somewhat. The system is now bigger, and more complex, making the 'all rounder' role we all assumed before more challenging. We now have developers whose experience, technical ability and interests vary. As the number of developers grew the communication and cross working became unmanageable. So we were split into 5 teams of 4. Features are now handed to teams to implement, top to bottom. The teams are not specialists in any given area of the product. We've been having a few issues with this setup up so far, which really boil down to ownership:
- Code ownership: As no team has ownership over any given module the design of the system is being compromised. The kind of refactoring that you would expect from someone really knowing the code in a given area are not happening because often a developer/team is in this area for the first time.
- Bug ownership: When bugs are filled against the system they are assigned to a given component. As no teams own modules or areas of the code, allocating bugs is not a straight forward task.
The 20+ number is all developers. We have hired other support staff during this growth phase as well such as QA, Tech Authors, Product support Specialists etc - So I'm asking purely about the development effort. The product we work on is 'shink wrapped' - we're not a consultancy, so time invested in keeping things clean will help us in the long run.