Shared Development Space

development-environmentdevelopment-process

Currently the company I work in gives each developer their own development virtual machine. On this machine (Windows 7) they install the entire stack of the product (minus database) this stack is normally spread amongst multiple machines of differing OS (although moving towards windows 2008 and 2008r2)

So when a developer has a new project they are likely to be updating only a small piece of their stack and as such the rest of it can become out of date with the latest production code. The isolation from others means some issues won't be found until the code goes into shared test environments/production.

I'm suggesting a move from functional testing on these isolated machines to plugging machines into a shared environment. The goal being to move towards a deployment thats closer to production in mechanism and server type.

Developers would still make code changes on their Win7 vm and run unit/component testing locally but for functionally testing they would leverage a shared enviornment.

Does anyone else use a shared development environment like this? Are there many reasons against this sort of sandbox environment? The biggest drawback is a move away from only checking in code when you've done local functional testing to checking in after static testing.

I'm hoping an intelligent git branching strategy can take care of this for us.

Best Answer

I'm not sure if enforcing a shared development environment is a good idea, but I would like to suggest that you are focusing on the wrong tool.

It seems to me that what you really need is a well setup dev environment with nightly builds/continuous integration and automated testing.

It wouldn't matter if I'm coding with vim in Ubuntu or with Eclipse in Windows if when I make a mistake the build/unit test system sends me an angry email that I broke something. By the same token, the said system would ensure the goal of better quality software much better than dictating a development environment.

It seems to me that whatever effort you would put towards a shared dev environment would be better spent setting up what I have described here.