Reasons to Use a VM For Development
- by George Stocker
Background:
I work at a start-up company, where one team uses Virtual Machines to connect to a remote server to do their development, and another team (the team I'm on) uses local IIS/SQL Server 2005/Visual Studio installations to conduct work.
Team VM is located about 1000 miles from Team Non-VM, and the servers the VMs run off of are located near Team VM (Latency, for those that are wondering, is about 50ms).
A person high in the company is pushing for Team Non-VM to use virtual machines for programming, development, and testing.
The latter point we agree on -- we want Virtual Machines to test configurations and various aspects of the web application in a 'clean' state.
The Problem:
What we don't agree on is having developers using RDP to connect to a desktop remotely that contains Visual Studio, SQL Server, and IIS to do the same development we could do locally on our laptops.
I've tried the VM set-up, and besides the color issue, there is a latency issue that is rather noticeable, not to mention that since we're a start-up, a good number of employees work from home on occasion with our work laptops, and this move would cut off the laptops. They'd be turned in.
Reasons to Use Remote VMs for Development (Not Testing!):
Here are the stated reasons that this person wants us to use VMs:
They work for TeamVM.
They keep the source code "safe".
If we want to work from home, we could just use our home PCs.
Licenses (I don't know what the argument is, only that it's been used).
Reasons not to use Remote VMs for Development:
Here are the stated reasons why we don't want to use VMs:
We like working from home. We get a lot done on our own time.
We're not going to use our Home PCs to do work related stuff.
The Latency is noticeable.
Support for the VMs (if they go down, or if we need a new VM) takes a while.
We don't have administrative privileges on the VM, and are unable to change settings as needed.
What I'm looking for from the community is this:
What reasons would you give for not using VMs for development? Keep in mind these are remote VMs -- this isn't a VM running on a local desktop. It's using the laptop (or a desktop) as a thin client for a remote VM. Also, on the other side of the coin: Is there something we're missing that makes VMs more palatable for development?
Edit: I think 'safe' is used in term of corporate espionage, or more correctly if the Laptop gets stolen, the person who stole would have access to our source code. The former (as we've pointed out, is always going to be a possibility -- companies stop that with litigation, there isn't a technical solution (so far as I can see)). The latter point is ( though I don't know its usefulness in a corporate scenario) mitigated by Truecrypt'ing the entire volume.