So that you know it.. you know.. works in that environment?
Edit:
additionally, using a VM (and particularly using a tool like Vagrant) means that the scripts/etc to setup a working dev environment need to be done ONCE, and then any developer can work on the project, on any host environment - you can use your windows machine, I can use my Mac, Fred can use his Linux box with whatever distro he wants. It doesn't matter: we all run vagrant and a provider (usually a VM hypervisor) (doesn't even need to be the same provider - you can use HyperV, I'll use Parallels, Fred can use VirtualBox, or heck even LXC), and the application runs exactly the same in that environment, with exactly the same setup. You can destroy your machine, walk to a band new one, clone the repo, run `vagrant up` and you'll have exactly the same dev environment as me again. Even if you don't use Linux for your prod environments, this type of setup is a must if you don't want developer productivity to sink to zero every time something happens that affects their host OS (OS updates breaking libs. New hardware. New software. New OS release. Switched machines. etc)
> There's a lot to be said for debugging on your home turf.
The whole point of tools like Vagrant is to allow you to run the application inside a VM, but work on it (i.e. write/debug the code) on your host machine.
> working dev environment need to be done ONCE
good point, I personally would rather integrate everything into the development platform (i.e. front end http server would be just another npm package/middleware, but not NGINX, everything gonna end up under a load balancer anyway on prod/test).
In regard to different machines/OSes, issuing everyone a mac really takes away a lot of headache for organisation, at a relatively small (compared to engineering hours) cost.
The problem is, that restricts you to what's available for your dev platform. How many nodejs http servers do ESI sub requests, or can parse and use the same VCL file as Varnish uses on prod?
> In regard to different machines/OSes, issuing everyone a mac really takes away a lot of headache for organisation, at a relatively small (compared to engineering hours) cost.
I mean, there are benefits to standardising your work force, but I don't really see your argument here because:
a) if you take this route, and then don't use Vagrant, you have to pay each and every one of your engineers to re-setup all their projects, whenever they need to re-clone them (failed hardware, wipe & install OS update, etc).
b) unless you buy everyone the same new mac at the same time, you don't have the same environment, and it's doubtful you all even have the same OS version.
c) I've never worked in a company where everyone was happy to use the same tools/platform for dev. Forcing people to use a platform they don't like, in favour of using an open source tool that solves the problem, sounds like making things harder than they need to be
d) not all projects are run by a company, or even by the same company. Freelancers collaborating is a thing.
Because OS X and GNU/Linux don't have the same APIs?
I know this not to be the case, and I disagree that it should be. I don't see why I should have to spin up a separate kernel and init just to run my application during development. I wouldn't use a Mac for it, but I've seen people develop portable software which happens to work quite well on Mac and Linux dev boxes for Linux production boxes. There's a lot to be said for debugging on your home turf.