Get Docker Right and Get on with Life
Building cool apps >> deploying them in a fancy way.
When starting work on a new Django project, I don’t use Docker.
Why would it be otherwise? Nothing has to be deployed. Reproducibility is not a crucial topic. Everybody is on the same page.
It will get fancier in time, but only when there are real issues which require more work.
My development environment is as simple as possible when starting out. Because there’s no real problem it can help me with at that point.
I want as few distractions between me and the main focus of my work as possible.
Yeah, Docker is Cool, But…
That does not mean it’s a must have.
Don’t get me wrong. When there’s a clear job for it, Docker is a tool I cherish very much.
After all, there’s so much cool stuff you can get done with it:
- Easily reproducible builds
- Less complex deployment setups
- Automated development environments
- Hassle-free testing environments
- Easy-to-orchestrate workloads (Sometimes. Most people don’t really need k8s & co)
But for each of those points, you should have stumbled over the pain you they address first, or should be anticipating it with high certainty. You don’t go and build them “just because” when you’re working on something which matters.
Just Enough Docker
“It’s awesome! Way faster than Vagrant when working locally, and soo cool for deployments.” – me, ~2014
Docker had me hooked from the first time I heard about it. But it’s just one more tool. There’s a “playing around for fun and learning” phase in the beginning, but then it calms down and you only use it if there’s something you want to achieve with it.
Once everything behaves as expected, I call it a day and move on to more important topics. Stuff that matters. Stuff which created a compelling context to reach for Docker in the first place.
What’s Your Goal?
When you are a solo developer, or member of a small team, you want to focus on what’s important – making progress on the actual project you’re working on.
If you’re the ops-y person in a larger team, your job is to make sure that your teammates are set up for success. You take care of infra stuff, so they don’t have to.
Building ever-fancier setups it not that exciting. Enabling people to get stuff done which matters is.
Docker can help you to stop wasting time on distracting issues, and focus on user-facing features.
Every hour you invest into Docker is an hour you could have used to make your app better. If Docker isn’t saving that hour for you or anybody else, you might as well have done something else. Without the upside of saving time & effort in the future, reaching for Docker would not make any sense.
Personally, I will always aim at getting all the infrastructure/development setup issues out of the way and get on with life. To work on stuff that matters.