I'm using dev-containers and you should too

A Dev Container is an entire, pre-configured development system encapsulated inside a Docker container. Unlike a production container that just runs compiled code, the Dev Container hosts your entire development lifecycle (coding -> testing -> debugging -> building).



I used to manage a team of ~10 software developers working on multiple unrelated projects. Each project had its own tech stack and it's own undocumented build system installation procedure. Keeping up with the different tools of each project was extremely hard and I was stuck with the feeling that there must be a better way to handle this mess.

Fast forward to 2022 - I joined the founding team of a small startup and it was time to put the lessons learned to the test. We wanted to create an organization where developers would be able to understand and change the entire codebase and not just their main domain. In order to do that, we needed to lower the gates between backend, frontend and any other infra in the dev organization and the swiss army knife for the job is the dev-container!

Since a dev container is essentially the entire dev environment compressed to a docker container, it means that all of the developers in our organisation will have the exact same development environment, allowing some small organisational hacks that we couldn't have any other way:

  • Instant project ramp up - just spin up the project's dev-container and get to work.
  • Tool upgrades - moving every developer in the R&D from go1.24 to 1.25 is just one PR away
  • Zero installation setup - new laptop? No problem
  • Resurrecting old projects in one click
  • Focused documentation - everything is pre-installed in the container so manuals can focus on tool usage instead of tool installation.
  • Mac and Linux alignment - did you know that the sed command works differently for Mac and Linux?? - dev containers set all tools to a fixed version including the shell.
  • GitHub codespaces made possible.
Once dev-containers is the standard, all of these problems become extremely rare.

Last note - this post might seem like a commercial for dev-containers but it's not. The bigger lesson here for me is that software development isn't just about the software, it's also about the organisation and often, the correct tool can solve an organisational problem.

Popular posts from this blog

Can a 1.4GB LLM Be My Local Search Engine? (spoiler: yes)

TL;DR Remote work key-points from GitLab handbook

Digital detox with a custom Android launcher