I've been using Vagrant
for a while now and it's been my go-to tool for everything related to setting up my development environment. It's just amazing how it manages to stay out of the way and help me be productive. That's a testament to the thought that has been put into it.
Dependency Management as a Service
If there's one thing, Vagrant really brings to the table, it's this notion of dependency management as a service. You focus on writing your app (Rails/Phoenix/Django/what-have-you) and Vagrant takes care of bringing in everything else. And by everything, I mean everything
. The OS, all of the system level packages, all of your app-specific dependencies, etc.
You get a fully isolated virtual machine that is pre-configured with all of the stuff your app needs, specified in the Vagrantfile.
. The best part is that everyone on your team can easily boot up an identical environment. And the icing on the cake? You get to develop code in as close an environment there exists to the environment where your production code runs.