Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it recommended for developers to work on local virtual machines for development? [closed]

Duplicate

Reasons to Use a VM For Development

I'm trying to roll out a policy in my company where all developers have to work on a virtual machine (e.g. VMWare Workstations) that have the dev. environment such as IDE, tools, service packs already installed to make it easier for new team comers, smoother to provision new machines, etc...

do you recommend such an approach or do you work in a similar fashion in your company?

like image 829
Shadi Avatar asked Apr 13 '09 14:04

Shadi


2 Answers

I've got a colleague who likes to work this way. He's got a virtual machine for each project he works on.

I personally don't like using a virtual machine to do development.

  1. It's slower than working directly on my machine.
  2. It doesn't do multiple monitors well.

Don't protect your devs from knowing the gritty details about IDEs, tools, and service packs. They need to know these things.

Also, don't force your devs to work a certain way. Some may not be happy about it, and unhappy devs = less productive devs.

like image 173
Matt Brunell Avatar answered Oct 13 '22 11:10

Matt Brunell


I have worked with both methods for years. Currently I use VMs. They have many many advantages. However, don't force anyone into one particular way. They won't be productive if they are forced. If you can, convince them.

Advantages of VM for Dev:

  • Very quick deployment: One volunteer updates the image with the latest and customizes, and all get the benefit.
  • Each project can get a separate copy, no interference and no conflicts.
  • Very simple to "freeze" everything and restart! No need to save, close, run, load...
  • When things go wrong, it's an image, scape it, clone a new one and checkout your code.
  • Freeze while debugging or testing (sometimes you want to capture a specific state). Snapshots help if you want to go back and repeat some actions (think testing).
  • VMWare has remote debugging and backward execution!
  • Reproducibility! You devs and testers can reproduce bugs since the environment is controlled (assuming nothing other than work is on the image) and with saved states (assuming they use snapshots).

On the other hand, there are disadvantages:

  • VMs are bulkier, take a lot of space and memory.
  • You won't get 100% of your hardware performance.
  • You will lose some time on image maintenance.
  • Some people just hate it.
like image 32
Ash Avatar answered Oct 13 '22 10:10

Ash