Suppose you are working on a medium-size software project, with a staff of twenty to thirty people. Everybody realizes this is larger than the SweetSpot?, and that it could be equally effectively and more efficiently done with a smaller team of say ten people. Because this is just a ThoughtExperiment?, we can assume that even TheManagement? realizes this too. Yet they still have a large team.
Actually, there may be good reasons for this, even assuming we don't have politics and EmpireBuilding:
- Over a few years, developers will leave for various reasons. If you had a JustBigEnough team to start with, every person will be a big loss. If there was a bit of overlap to start with, then you can deal with a bit of attrition.
- Once the product's released, you're going to need extra people who are already familiar with it: some will have to start on long-term design for 2.0, some will have to fix bugs/features to get to 1.1, some will have to help do customer training or support or presales or whatever. Again, if you had just enough programmers then when this happens none will be left to progress the CodeBase.
Of course, many of the outcomes of a large team are bad, but some are good.
Point 2 says: "Once the product's released..."
Shouldn't we apply YouArentGonnaNeedIt until then?