Quite often when I start working with a new team, they ask me to help get their “dev enironment” under control. You know, the set of tools, scripts, configurations, and in some cases network permissions, required to do local development.
This is a big hairy topic, and is full of technical nuances that depend on your tech stack. But next time you’re working on improving your own dev environment, let me challenge you with one of the rules I use with the teams I’m working with:
If every engineer on your team cannot do meaningful work from an airplane, your development environment is broken.
There are two elements here that deserve special attention:
from an airplane
In 2021, some commercial flights do offer expensive, slow, spotty wifi. At some point, probably sooner than I expect, most flights will offer free, fast, reliable wifi. At that point, I’ll need to change my criteria. But for now it’s a nice short hand for: It should be possible to work without an Internet connection.
Even if you never fly, this is a big boost to productivity. It allows you to work during your commute. It allows you to work when your office Internet connection goes offline. It allows you to work when US-East1 goes down for a few hours, or any other network-based dependency is down.
In a perfect world, every engineer could do all of their work without an Internet connection. Few of us work in this perfect world, so it’s not very reasonable to expect to be able to do all work without a network connection. However, it should be possible to do meaningful work without an Internet connection. What constitutes “meaningful?” It depends a lot on your role and project, of course. It’s definitely more than “read documentation I downloaded before I left the office.”
It might just mean that most unit tests can run without a network connection. It might mean that you can fire up a full, or partial instance of your app, and do complete end-to-end and UI testing if you want to.
You and your team and project have to decide what “meaningful” means in your context. Just keep in mind: The more you can do without an Internet connection, the more productive the entire team can be.
If only your backend devs, or only your frontend devs can work from an airplane, your dev environment is still broken. If only Mac users can work from an airplane, your dev enfironment is still broken. Don’t discriminate. Make it work for everyone.
If you enjoyed this message, subscribe to The Daily Commit to get future messages to your inbox.