One thing that often comes up (for me) is a software development environment the is separated from the machine you are working on. Why would you want to have an isolated environment in the first place? Main reason is if anything catastrophic happens, you can just scrap the environment.
It also allows the opportunity for people that have complaints about the OS they work on (Windows, maybe) to get a different environment to work on that machine. With few exceptions, there is no reason to buy a mac unless you plan to do any exclusive programming for iOS devices.
In this instance when I think of a virtual environment I think of a headless workspace (on without a graphic user interface) and then do all the programming to interact with this environment. With modern IDEs like JetBrains PHP Storm, PyCharm, or several others, one can work in tandem with the remote development environment. One can even use the remote dev environment’s programming interpreters as well as command line.
Let’s discuss some of the virtual environments out there.
Parallels and VmWare.
Both of these are proprietary platforms and Parallels only works on Macintosh devices. That said they allow full utilization of an operating system like Linux or Windows. This can be used to create a completely new operating system environment to work in.
The computer the size of a credit card, the 3rd generation, is powerful enough to be used as a regular computer for most tasks. It can be considered a local/remote environment. What do I mean? The Raspberry Pi can be hooked into the back of your router and you can get a 192.168.1.* IP address to ssh into. This will allow several different kinds of possibilities to work with on the Pi. Generally it can be considered a standard linux environment.
Digital Ocean (and similar services)
Hosting has changed significantly over the last few years, digital ocean and other hosting platforms have been the culprit of this. Digital Ocean allows anyone to start and instance of several flavors of Linux or BSD. These programs can then be configured to install specified software packages through their source.list files.
If anything goes wrong people can delete the dev environment instance or simply install from a backup or do whatever works well for them.
Virtual Box with Vagrant.
Virtual Box is a free program that allows you to install other operating systems. Vagrant used with Virtual Box allows one to run headless dev environments, one’s that can be used to run given code and built to a specific environment type. All kinds of dev environments have been made, from PHP frameworks to Python frameworks and everything else.
Docker, while I’ll shamefully admit at this time it is something I haven’t personally invested time into, it is the rage and one of the most talked about technologies in 2016.
The main advantage is that it allows isolated environments that aren’t as resource heavy as regular virtual machines, by a wide margin, it uses existing system resources and hence better performance.
There’s little excuse for anyone out there programming if they have issues with their machines, simply create a new virtualized environment. Coding on Windows should be fine as you can just run a virtual environment and be done with it. For all the zealots and purists out there, the closing of technologies like virtualization makes their argument all the more moot.