I have my development machine (a laptop, since I do often go onsite to a client) setup like this:
- Windows 7 x64 - it's a great OS, and the 64 bit version let's me put in a lot of RAM
- 8 GB RAM
- VMWare - I used to use Virtual PC, but VM Ware has so many features that I prefer, like support for USB etc.
I develop primarily in .NET and I setup the development environment like this:
- Very little (if any at all) developer tools on the host. Mostly I just have Office, Photoshop, etc. things that are independent from actual development
- I have a different VM for every client. This allows me to configure the VM to their evironment, and in fact I have several clients where my VM is actually joined to their domain. Every client's VM runs on its own external drive! Putting a VM on it's own drive makes your VM run much faster. I use laptop hard drives in small drive cases, very easy to put in my laptop bag, and each drive has a sticker with the client's name so I can easily grab the right external drive. I usually allocate about 3.5 - 4 GB of RAM to each VM.
- On the VM I have all the tools I need to work for that particular client, including VPN software, developer tools (SQL Server, VS), etc.
- I have a few VM's that are "client agnostic", and these run server software (Wink2k, Win2k3, Win2k8) with IIS etc. for testing deployment, etc.
- I have GoToMyPC set up so I can access the laptop from a remote location in extreme emergencies.
In the past I have been set up differently, with the development environment set up on a beefy server running everything, and I just RDP in, so the laptop doesn't have to be that robust (it's basically just painting the screen), and I can access from anywhere. There are pluses and minuses to this, mostly that sometimes I like to develop when I am not able to connect to the internet, and my development is hindered anytime my internet connection speed is slow or lagging.
How do you set up your development machine? Feel free to take this in any direction you want. . .
Note: The only thing I would change about this is more RAM, and for multiple hard drives in my laptop so I don't have to carry around so many external hard drives.