I need to set up a team of software developers for a new project. In the past, typically all the developers worked on all the different layers within the app. For example, if a developer had to implement some feature that required a UI and displayed data that was retrieved from the backend, they would be required to write the code for the UI, the business layer and the data access layer (i.e. retrieving data from the backend). This has worked fine and I suppose this is the way most dev teams operate.

However, if you're starting with a team of contractors who are only going to be on the job for 3 to 6 months, does it make sense to use this approach? The issue I see is that each developer could end up writing code that doesn't follow any unified pattern. Sure you could spend the time and write up a lengthy document outlining design patterns to use, coding styles and such. But that seems kind of unnecessary.

I was thinking that a better approach might be if one developer was responsible for the UI, another for the business log and another for handling data access. The advantage to this approach is that each of them could effectively use their own frameworks and design patterns on the layer they are working on. Sure, the different layers may look differently but each layer would be consistent across all their components.

Have you ever taken this approach? If so, I'd appreciate your feedback on how it went.