R – Linux development environment for a small team

development-environmentlinux

Approach (A)

From my experience I saw that for a small team there's a dedicated server with all development tools (e.g. compiler, debugger, editor etc.) installed on it. Testing is done on dedicated per developer machine.

Approach (B)

On my new place there's team utilizing a different approach. Each developer has a dedicated PC which is used both as development and testing server. For testing an in-house platform is installed on the PC to run application over it. The platform executes several modules on kernel space and several processes on user space.

Problem

Now there are additional 2 small teams (~ 6 developers at all) joining to work on the exactly same OS and development environment. The teams don't use the mentioned platform and can execute application over plain Linux, so no need in dedicated machine for testing. We'd like to adopt approach (A) for all 3 teams, but the server must be stable and installing on it in-house platform, described above, is highly not desirable.

What would you advise?
What is practice for development environmentin your place – one server per team(s) or dedicated PC/server per developer?

Thanks
Dima

Best Answer

We've started developing on VMs that run on the individual developers' computers, with a common subversion repository.

Benefits:

  • Developers work on multiple projects simultaneously; one VM per project.

  • It's easy to create a snapshot (or simply to copy the VM) at any time, particularly before those "what happens if I try something clever" moments. A few clicks will restore the VM to its previous (working) state. For you, this means you needn't worry about kernel-space bugs "blowing up" a machine.

  • Similarly, it's trivial to duplicate one developer's environment so, for example, a temporary consultant can help troubleshoot. Best-practices warning: It's tempting to simply copy the VM each time you need a new development machine. Be sure you can reproduce the environment from your repository!

  • It doesn't really matter where the VMs run, so you can host them either locally or on a common server; the developers can still either collaborate or work independently.

Good luck — and enjoy the luxury of 6 additional developers!