We have fairly frequent discussions about how to organise development teams. Do we have teams of developers with a broad range of development skills so they can all participate in multiple projects at different times, or do we organise a team specifically for a project.
The question arises because where there are many components across many projects, the legacy code is often maintained by the developer who initially wrote it because they will often do the job quicker and more effectively than someone coming to it new.
But where you have a large project with UI, back-end, database, etc, there is sometimes a call for teams based on vertical sections of functionality with the intention of getting better integration in contrast to teams based around UI, back-end and database who deliver that part of the project. I'm yet to be convinced (but quite willing to be) that a vertical organisation structure aids integration any more than teams based on the horizontal division providing development is controlled and managed to agreed interfaces. I;ve found that integration between vertical teams is just as difficult as the other way round.
Is there any anecdotal or other evidence out there about the relative merits?