Arun's solution would work, but another is to give each developer their own dev environment. So, each dev would have their own server to work on. If you haven't thought about this before, then it may seem extreme, but this is the common strategy people use. Create an image that's a single server farm, and let each dev have a copy of it to run on their workstation or on a server via hyper-v. Each dev then gets an environment that is unaffected by anything that other developers do. Then, set up another farm, and set up a process so that any code that gets checked in gets deployed to that server for testing purposes.