Ask HN: How do you automate developer onboarding?
What tools do you use to automate the on boarding of new developers, and the setup of new machines?
We have a bunch of dependencies that need to be installed, scripts that need to be injected into their bash profile, configuration files to update, etc.
Right now, we have a messy collection of Bash & Ruby scripts that the developer has to run (and continuously run as updates are made). Wondering if theres anything better out there?
11 comments
[ 3.7 ms ] story [ 34.5 ms ] threadIt allows you to automate installing libraries and running scripts by writing Puppet manifests.
[1] https://github.com/boxen/our-boxen
We build a custom vagrant box with dependencies pre-installed, and then run setup on top of that.
Admittedly we don’t have many “tools” like you mentioned - just a couple of shell scripts in the git repo itself.
If you need to install host OS level software I’d just write some shell scripts to automate the steps.
Automating on-boarding is possible, but it is usually better to have good docs that breakout into different systems like OSX, windows, Debian/fedora and just have good copy-paste from there. That allows for tweaks to be made more easily when things go wrong, and to update for future devs.
If you really need to automate, write your own installers to do the work inserting code, installing dependencies, etc and expand to support different systems where necessary. This can be as simple as a github repo that you pulldown and run an installer for, that automatically hooks in to the shell and provides an easy path for updates.
For things they have todo / resources they should look through, you could use ChiefOnboarding.com (Full Disclosure: I have built this)
- Literate bash: https://github.com/bashup/mdsh
- Ansible: https://github.com/bmacauley/ansible-playbook-mac-dev/blob/m...
- Kubernetes: https://abhishek-tiwari.com/local-development-environment-fo...
Example of solid and shareable at scale approach, takes a bit of rocket surgery:
-Nix: https://dzone.com/articles/isolated-development-environment-...
To be clear, we had a Nix committer to help work through kinks. But once all of your team members, local and remote, have lockstep dev environments versioned with the code commits, several other classes of hair pulling go away.
I recently moved to using docker for the common development tools and it has made changes a lot easier. I also read somewhere about using DISPLAY for X programs with docker and so now even the IDE can run in one as well. It takes a while to set it up but it doesn't have the overhead of VM solutions like vagrant and with docker-compose it ends up really easy to just have in a git repository making setup just a git clone and docker install and then docker-compose up.
I'll also second using Docker or virtual machines if possible. It makes the setup and continued support much easier.