10

I work with a team of developers who are given choices as to what hardware and software they run. Our feeling is that this scenario lets us see a wide variety of target systems before ever hitting test. Our experience is that we find a number of strange problems in different browsers and operating systems soon after the introduction of the problem. But that is just one group's experience.

This variety of systems is difficult for our infrastructure and security teams, so it comes up often as a pain point.

Is it more beneficial to have homogeneous or heterogeneous development environments on a team of developers?

8
  • 1
    Most software development issues like this one are not authoritatively researched. If you're looking for a way to convince your superiors or coworkers, you need to find some other way to do it. That said, have a look here: netlib.org/utk/papers/practical-hetro/node2.html Jan 17, 2017 at 20:43
  • I think it's worth your group testing on your own. This way you can see if you maintain the benefits to the developer when required to use a homogenous environment along with determining if you're gaining the security and infrastructure benefits those teams claim they will get. Not that these things are simple, but finding good programmers is difficult and costly so I'm not sure if these other teams wanting to improve their areas are really just the tail wagging the dog.
    – JeffO
    Jan 17, 2017 at 23:49
  • 1
    An excellent question that should ultimately be answered by product/service requirements and management familiar with the benefits and costs of the heterogeneity you described. In my experience, the unnecessary diversity tends to increase costs especially when it's the interesting distraction from the otherwise boring requirements. And there's the cost of maintaining the technology diversity once its creators leave for another challenge. I'm also interested in related case studies. +1
    – bvj
    Jan 18, 2017 at 1:47
  • 6
    Many successful shops leave development security and infrastructure to the developers. You submit peer reviewed code to a repository and it doesn't mater if your laptop is hacked because we know your source is clean. We can do this because we don't trust you any more than whoever hacked your laptop. But because we work this way, you can have root. I've worked both ways. I'd rather have root. So the advantage of heterogeneous development is that it is a pain point for the people trying to take my root. Jan 18, 2017 at 3:24
  • 2
    I'd suggest the very fact that your team seems to prefer being able to choose their own environments is an advantage to some extent
    – user232573
    Jan 18, 2017 at 10:38

1 Answer 1

3

One advantage is that you encounter, and have to resolve, cross-platform compatibility and divergence issues early in the development process. Everyone is used to dealing with such monkey-wrenches and obstacles.

You're also seeing the downside to such divergence: The environment is harder to set up, maintain, secure, and develop for because of those divergences. Everyone has to be working on divergence issues early and often. Setting the Chaos Monkey loose at the outset can be a considerable distraction from making forward progress.

In my experience, divergence hassles are not worth the effort unless you are very specifically working on a product that must be eminently cross-platform. But, that is a judgment call different teams have to make for themselves. I prefer to have at least a modicum of sameness across my project teams—but the reality is that's a desire rather than something I can enforce. Some people have & use Windows, others macOS, others some flavor of Linux. Multiply that times all the tools developers might want to use.

You can lay down some core project standards like Python 3.5, PostgreSQL 9.5+, gulp-based asset pipeline, git, Github, rebased branches, ... to which everyone must conform. This helps cut divergence, thus the time/effort required to accommodate and wrangle it. The more corporate and lock-step your organization, the more standardization and commonality you can insist upon. Developers, however, tend to be the metaphorical unherdable cats. So keeping divergence "down to a dull roar" is often the best you can practically do.

3
  • I don't think it is a good answer since the OP has explicitly asked about some research and papers, and not a personal opinion.
    – KjMag
    Jan 18, 2017 at 23:28
  • 1
    @KjMag You're welcome to your opinion. This is a question I've been asked in a professional capacity many times over the years, including by corporate and government teams paying well to hear an answer. Stack Exchange sites are fundamentally set up to collect and share crowd-sourced experience. This is mine. If you want to do a full research report search and post your bibliography, have at. Jan 18, 2017 at 23:41
  • @KjMag asking for research and papers is off-topic here and I edited that out of the question. This answer would benefit from some outside links, but is self-sufficient and "useful."
    – user22815
    Jan 24, 2017 at 16:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.