Is it better to assemble permanent teams of developers within the company that always work together, from project to project, or is it better to have dynamic teams that assemble for a project, and then dissasemble afterwards?My inclination is to treat the entire company as a platoon and to assemble fireteams for individual projects, choosing from the platoon those developers best suited for the project.
Static teams or dynamic teams?
team;organization
I doubt there is a One True Way.  I think there's a lot of pluses and minuses to each.  Here's my breakdown:Static Teams1 time cost of team gelling ... or at least, team re-gelleing is 1:1 with corporate retention rates.more indepth knowledge of problem and solutioncan afford to have less consistency across groups and less documentationrisk:  Skills can fall way behind if the product does not not yeild to technical re-innovationrisk:  change becomes traumatic when it happensDynamic Teamsconstant cost of rampup as people enter and leave teamseveryone gets a chance to keep skills up to dateno one is stuck for too long in a project they hate/no one stays to long in a project they loveenforces inter-team process consistency, and transfer of good ideas from team to teamenforces clear documentation of all aspects of project to minimize ramp-up/ramp-down time.