My company is starting to feel the pains of its developers not being on the same page. ie some develop on windows, some on ubuntu, etc... and then code lives on CentOS and we start to get problems like "works on my machine?!" and so forth. we want/need to develop and deploy to replicable environments to cut down on launch day issues. I was curious if anyone has good practices how they handle this? we contemplated images and then giving everyone VM's to make sure they can test everything in isolation vs one big dev environment where 3 people are pushing changes and overwriting/breaking code others are working on. it seems like the VM approach might not be ideal - we have to make sure all hardware is capable of handling this. I know every company is different, but is there an ideal approach to this problem that anyone could recommend? or worst case scenario - how do you handle this? what have you tried and failed w/ and what have you tried and succeeded w/?
I think our current idea is to figure out how to spin up VM instances inside our network infrastructure and allow devs NFS to them for development. This would take pressure off possibly needing to upgrade any of their systems or dealing w/ incompatibility issues. (ie, someone is comfortable developing on windows, others in linux, even more in mac, etc...)