[caption id="attachment_725" align="alignnone" width="933"] dev-container[/caption]
Before you start daydreaming about Friday, take a look at an amazing little thing called a devcontainer.
Let's dive in.
Full-featured development environment at your fingertips
One of the worst situations that can happen to a developer is setting out to do something and not being able to do it. Instead, you spend several hours trying to find the problem and hopefully fix it. Finally, you get everything right somehow. Six months later, poof! Another developer has the same problem. The perfect solution for obstacles like this comes in the shape of a dev container.
A dev container is a fully functional development environment that is shared, versioned, reproducible, self-documenting and up to date. Containers give you the ability to provision any development environment you like. But enough of small talk. Why should you care about dev containers?
Simple onboarding
Dev containers have a positive effect not just for onboarders, but anyone else who wants to make changes to the backend code or if someone wants to go "back in time" and fix a bug. Another benefit is that dev containers are regularly rebuilt anytime someone makes adjustments to them. On the other hand, project setup, checklists, and scripts are quickly forgotten after configuring a project on a machine.
No need for language version managers
Any developer who regularly switches between projects and works on several languages is well familiarised with language version managers. For those that aren't, these tools ensure that each project uses just the right version of the language runtime. Sometimes you’ll work with a language ecosystem that is not your forte, making version managers an obstacle that decreases your productivity. Using dev containers eliminates this entire class of utility. Since a dev container is dedicated to a single project, it can have the correct version of Ruby or Python, or JavaScript installed globally.
Work from any location or any device
Remote work helps attract top talent, makes employees more productive, and also reduces turnover and increases engagement. People, especially those in IT, will probably never work the same way as before the pandemic. Remote work allows better work-life balance and makes employees more satisfied. Cloud-based development environments enable you to continue working like this, not limiting you to a particular place or a machine.
Easy collaboration
Cloud-based development environments make it easier to pair program, enabling easier knowledge sharing between people working together. It's also simple to share code, troubleshoot or even teach others.
Reposted to Blog