Ask HN: How do you provision new developer environments?

We're hiring 5-6 new developers, and I know that setting up a development environments can be a nightmare. Trial and error, things going wrong, what solutions have you learnt over the years that makes this as pain free and easily replicable as possible?

We will be providing all hardware/equipment for the new onsite developers, but looking at having a workflow in place that helps people write new code on day one, rather than spending two days installing everything and then having to repeat it again in a weeks time for the next recruit.

  • Manually and inefficiently. It helps that turnover is low.

    At least now the process is documented. Two years ago it was trial and error.

    All the dependencies take a while to compile, but we've done it enough times now and have the operations written down precisely enough that aside from some data indexing tasks that have to run overnight (and which aren't strictly necessary to get started developing) we can set up a new environment in about 3 hours.

    Next step is probably a bash script to automate most of the process on each of our 2-3 most commonly used platforms.

  • docker and Makefiles as task runners. I have a git repo that is the skeleton for this idea: https://github.com/undernewmanagement/flight-deck

    On mac we have homebrew to pull in all the desktop apps and cli tools. Then a simple bash script to automate all of it.

    I've managed to "retrofit" this into a team of 20+ devs and product owners for a variety of services.

    We are even piloting this with sales and support so that they can stay abreast of bleeding-edge development and provide valuable feedback.

  • Binary packages. Once you package all your software and all your software's dependencies into packages, a development environment (the one that needs deps in their compiled form and your software in its source form) is just one `apt-get build-dep' away, which is a bonus to the main point of easy production deployment.