I frequently get questions people asking how they should go about setting up their development environment. Many people take different approaches and one size does not fit all as some are big development teams and some are more like me, single man shop.
You basically subscribe to one of two approaches, either:
- Working within a virtual machine where everything (OS, SQL, SharePoint & development tools) runs in a self-contained environment. This could be a machine on your local desktop (using something like Microsoft's Virtual PC or VMWare Workstation).
- Working off a shared development environment, such as building on a client machine (Windows XP or Vista).
Personally I strongly prefer the former approach, working in a VM. Some folks like to have monster boxes that house multiple VMs for their developers... others just work off your desktops/laptops. There's no right or wrong answer here.
The virtual machine approach seems to come in two flavors. Some folks like to have a shared SQL Server but install everything installed in the virtual machine. I don't care for this approach as you now effectively have a very big SharePoint farm and developers aren't working in an isolated environment.
Instead, I advocate installing everything in your VM. The only thing I don't do that a lot of people do is install Active Directory. Frankly, I find I rarely need it and don't care for how long it takes to shut down/start up. If I need AD, I'll get a VM that has it for that project. Then, in an ideal environment, have a build/development shared environment where each developer merges their changes with everyone else to make sure integration is a good story.
Now... what about creating your VMs? This is REAL easy: go buy Scot Hillier's book Microsoft SharePoint: Building Office 2007 Solutions in C# 2005. Look at chapter 2... it has a step-by-step process on installing your environment the right way. When I create new VM's, I follow Scot's process exactly. The only exception is that I don't create multiple VMs, I put it all in one, but you can easily put it on different machines.
Hope this helps!