This post is equal parts actually about Docker, and the hilarity of being a woman on the internet in tech.
Who knew anyone read my tweets
It is funny to me that I would get any kind of attention on Twitter, I don't post for engagement, I barely write about tech, and I'm otherwise barely on social media at all. I post on FB every six or so months so my out of state relatives know I'm alive and that's about it.
So I was certainly not expecting an offhand tweet complaining about Docker to get any kind of attention.
What are my qualifications to hate Docker
I never knew that in order to have opinions about Docker I would need to announce my pedigree, but apparently I do.
To my utter astonishment, someone on the Docker team found their way to my thread to call me a junior without the background to appreciate the problem set Docker addresses. And then asked to be unsubscribed like a heeeelllllla boomer. That part made me laaaaaugh.
Anyway here are my qualifications: Have been in this field for many years, made senior in two and a half, have worked on giant gnarly legacy code bases and alternately built multiple products out of nothing to be hugely successful.
I am a code mentor and have volunteered teaching code, I am (as of recently) a paid guest writer for a database company, and managed to get straight As in senior year of a Software Engineering & Security degree while also working full time. My GPA was something like 3.8 and my major GPA was 3.9. Actually, I've been in school at least half time since 2019 so I have experienced a meteoric rise professionally with much less time on hand than equally qualified peers.
In one past role, I was so brutally effective that I received an off-cycle promotion from Software Engineer, not to Senior Software Engineer but directly to Dev Lead. Within less than a year of working there.
So...yeah. I am both educated and experienced, and as entitled to my opinion on Docker as anyone. (Although hot take, anyone can hate Docker for any time and for any reason, who cares lol).
Most notably, I actually had to spend somewhat extensive time using a dockerized development environment when at a past job, we had dependencies with no good MacPorts option that did not run on Mac period. In that role, I was also responsible for software that dealt with tracing vulnerabilities through containerized environments which introduces a special, interesting set of challenges.
What I actually think of Docker
Surprise surprise, twitter is not a tool of nuance. There were more to my comments than "Docker is terrible", naturally.
I made the mistake of wondering why this hit such a nerve with people and googled latest Docker tweets period, thinking surely I wasn't the only one with these issues. (Bad idea). Aaaaaaand that's when I found the subtweets. They centered on a few themes:
Everyone in the discussion were junior engineers
No one was providing any concrete reasons for disliking it (spoiler, I did and will again)
If you aren't using Docker in x way/on y OS its your fault it is miserable (ok lol)
People goading me "what's your alternative then"
The internet is a wild place lol. Imagine me tweeting "I don't like broccoli" and a bunch of nerds demanding I explain why or can't make that comment. Or saying I can only dislike broccoli if I mention that cauliflower is a valid alternative. Or say "it is your fault you don't like broccoli you should have been cooking it with this technique, DUH!"
But as explained before, I AM ACTUALLY PERFECTLY QUALIFIED TO HAVE BOTH THE OPINION, AND A RATIONALE BEHIND IT. The internet neckbeards I'm sure will be so relieved to hear it (not).
- For starters, junior developers finding Docker un-intuitive and with iffy docs is also my problem, since what junior developers struggle with rolls downhill to me as their senior
- I have consistently found the cli poor, things I need to do regularly are not prefab commands or require large numbers of fiddly flags, I need to wind up making aliases for tasks I find common enough that they warrant a built-in command and it seems like something so easy to fix if you care about dx at all
- Resource consumption and old volumes hanging around remains annoying
- I find the docs very sparse, my particular criticism with them could probably be addressed by a 1-2 liner in various sections just showing one vanilla example of cli options. My experience in the docs is being redirected around like a pinball and eventually finding what I need outside of the official docs. If the rest of the internet is better than you are at explaining your product, imo that's an issue
- In light of I think, two Docker team members finding their way into my thread and being obnoxious, I now have a personal animus that I didn't even have originally so thanks guys lmao
I also have a criticism much more meta than Docker, and hate this opinion all you want but oh well:
Software is bad. Computers were a mistake, (To quote an old coworker). The less software my app depends on, the happier I am - and that includes Docker.
Particularly for my local dev setup, I tend to find that Docker wastes much more of my time than it saves. Tending to this tool and its various needs takes time I don't have. I'm busy, I'm sure if I had time to plumb the depths of the Docker documentation I could come up with a super cool setup that addresses every little thing about it that I don't like. For me personally, I have NEVER liked the "f@#$ you figure it out or you don't deserve the tool" mindset.
Give me things that work seamlessly. I have s@#$ to do.
I don't want to toil away customizing a linux box, give me an already usable computer. If you like that, great, but not everyone does. With more hours in the day I'm sure I could sit down with Docker and get into the weeds but I don't have time and for a tool so popular I don't feel like I should need to. Containerization is an area I have experience but not one I wish to specialize in, I'm hardly the best person around to come up with a complex Docker setup and feeling like I have to know it to do what used to be just running a flask app on localhost seems extremely overwrought.
Other criticisms I'll address
- If you like Docker, from the bottom of my heart I think that's awesome. My least favorite use case (local dev) emerged in the comments that equally frustrated and delighted people. I think its great that we all are so different and have different likes and I'm happy Docker works for some people
- Things were bad before Docker - perhaps they were, some of it I wound up liking better for whatever reason. I've worked with Vagrant, VirtualBox, deploying to vms up on GCP, and whatever else. Maybe my preference just settled on those. I certainly miss local dev without Docker to mess with. It doesn't need to be how everyone feels
- Docker has its place - I agree with you! Yeah, Twitter is not great for nuance but sometimes I have really enjoyed Docker being in the mix
- Come up with something better then - well that's ridiculous. Returning to broccoli, clearly I can't invent a better vegetable. It is beyond absurd to imagine I can only have an opinion on Docker if I have a competing container solution's software ready to go. News flash, there are plenty of things made by people smarter than you or I that we still won't like for whatever reason. Also, the hilarious detachment from reality here - I have a mortgage and am in school full time? I don't have time to invent a better container solution if no one is paying me to do so, some of us have day jobs babe
The hilarious thing about this experience
No one expects the internet to be nice to them, let's be real. But in the negative commentary I will say, themes certainly emerged.
I'd love to never have to talk about this again, but it was hard not to see a sexist tilt to the replies. For starters, seemed supremely random that so many people wanted to discredit me by calling me a junior and implying that that could completely explain me not liking Docker.
It is not difficult to find the podcasts I've appeared on, my long held Senior or higher title has remained in my bio for years. Disagree with me all you want but you do not have a leg to stand on if you want to come at my seniority. Which is fortunate, because honestly as a newer and less secure dev maybe a zillion dudes telling me I have no idea what I'm doing would have bothered me.
That critique is even sillier if you unpack it: if I were junior would I not have permission to dislike technology? The software I admire makes complex things simple, so the highest compliment I could give Docker would be that its a good tool for junior devs. Some of y'all really have it twisted on the topic of juniors not understanding software and how that reflects on the software.
Lastly I'll say, a lot of bias is sub-optimal associations. People associate women with less expertise in tech, and these replies showed it. I think sometimes non-URM people think it is a security blanket, like somehow URM feel better if we can blame things on bias issues. I will assure you it is not the case, it just means for me that people are coming down hard on me regardless of the validity of my opinions and even if I respond in-depth, they are going to discount my expertise and conclusions. Makes it feel very futile to put effort into defending my views.
Something about my personality, I have really always hated status symbols or things like pulling rank. I would normally never say "I'm a senior AF dev here's my credentials", I find it honestly very tacky and no one should feel like I'm cooler than them if they are less experienced. The fact that I have to trot out this litany of things to say I can have an opinion is honestly bizarre, but here we are.
It is also not at all fun or a trump card to have to bring this up, frankly it sucks, but I feel like the kid in The Emperors New Clothes who speaks an unpopular truth. I am successful enough that I can take the flak for raising this issue so if something hits me as sexist you bet your ass I'm going to talk about it.
Takeaways and positives
Despite some annoying replies (admittedly tame for the internet at the end of the day) I actually got some cool takeaways from this experience.
I had three people reach out to me about container tooling they want me to try, I'm going to set up three meetings next week for things I'd previously never heard of - considering my work uses Docker if any of them seem good I'd be thrilled to introduce them to our tech stack if they make Docker less of a headache.
A ton of people also responded in earnest with cases they love Docker for, which made me happy! Trust me, no one is happier than I am that fewer people feel how I do on Docker.
A lot of people just seemed relieved that anyone else struggled with this supremely popular tool that they hadn't gelled with.
And finally, there were some good-faith replies by people who really like Docker that had suggestions on things to make the experience better, or with alternatives - many I'd never heard of and sound extremely interesting and I'm really stoked to get into further.
At the end of the day, willing to write it off as a funny fluke and move along. But did teach me a valuable lesson that sometimes when you yell into the void, the void yells back.
Top comments (10)
I'm the notorious Docker-hater at my workplace. I don't like any of it. i don't like the CLI, I don't like Dockerfiles, I don't like how the registries work, I don't like the Docker daemon. It's complexity is unwarranted for 99% of all applications. And it's slow.
Everything about Docker is a lowest-common-denominator choice:
The image format. An OCI image is a tarball of tarballs, plus some json metadata. This is not an improvement on traditional packages. There is no native versioning concept in OCI images, it's just a string, and you're left to figure it all out. Not to mention that building an OCI image with a Dockerfile relies on all the Debians and Alpines and all the other Linux distros putting together an actually working system. OCI images don't really solve the problem of packaging. The format is space-ineffecient and network-inefficient. I'll admit that it is portable, but 90% of everyone's production is some Debian, Ubuntu, or RHEL-variant. In 2022, Linux portability is really freaking easy.
Also: just because Dockerfiles won't let you write inline for-loops, that doesn't make them idempotent.
Forcing all config through the narrow aperture of
docker run -e
env vars or-v
volume mounts is annoying, especially for local dev. Keeping track of UID and GID inside a container is now something we have to do locally - a problem we invented for ourselves out of whole cloth. It's taken a decade for user namespaces to come online and those aren't really widely supported.There's also this recent Orange Website post, which asked who was running at scale without containers. Hyperscalers like WhatsApp deployed with rsync. Hello? news.ycombinator.com/item?id=30767393
Of course it's early days yet. And "Docker" (or Podman, which I prefer) is not the only way to do containerization on Linux.
All the while, over the past 10 years, VMs also got a LOT faster. And everybody running Docker for mac is using one, every time. You're just denied all the tools (and the learning experience) of getting in there and optimizing things for your use case.
Now, you can even agree with all this and say, "Yeah, it's kinda crappy, but it works and it's widely supported, and my core business isn't deployment scripts. That's Undifferentiated Heavy Lifting (TM)". Is your core business Dockerfiles? That thing that only tars up a chroot and lets you figure out everything else? Maybe that everything else is writing a bunch of yaml, and then writing some bash on top anyway?
I implore everyone reading this to keep an open mind. Just because something is popular doesn't make it the best, or appropriate for you. Learn from the remarkable non-Docker success stories of the past 10 years - right in the middle of peak k8s hype.
Here's some links to videos that demonstrate cool non-Docker containerization stuff:
Hear here!
Docker fucking sucks. The more I work with it, the more useless and time suck it appears to be. Some of us however have environments that are absolutely dependent on it and we'll never be able to move away. It is what it is.
Wow, really really appreciate your response and yeah a lot of great points here
What a fascinating experience. It's always wild to me when the immediate reaction to "this tool is frustrating to use and I don't like it" is "oh you must be a junior". In a lot of cases, the reason I don't like a tool is because I've spent years being shackled to it!! I'm very familiar with the tool and all the reasons it makes my life difficult! And I agree, I think much of that reaction is rooted in sexism. It's an echo of the undercurrent that exists in the tech community that women simply do not know what they're talking about and have to constantly prove that they do.
I do consider myself a Docker lover, but I really appreciate your perspective. Not everyone wants to be tinkering around with Linux environments constantly just to set up a simple application. I feel like the best Docker experience you can have is when someone else makes the image for you haha. If you have to make an image yourself, especially as a junior dev like in the scenarios you describe, you could be in for a very bad time.
That said, I'd really love to hear some of the container tools/alternatives that were shared with you! I'd be interested to check out some other way of tackling this problem 😄
I have a horrific backlog on that tweet I never expected that much attention and kept expecting it to die down and so never muted, RIP my notifications. ANYWAY, I need to dig back through all the traffic and find everything people said, things that pop out were alternates I'd never heard of, other drivers for Docker storage, but I am happy to DM you a more concise list when I have a chance to pore through all the content on that tweet lol. Also thank you for your comment, and I truly feel you on the "yes I hate it because I have had to work with it so long" thing, although I am truly as I said glad other people aren't tormented by Docker like me
What you've discovered are the golden hammer gangs.
If you've never heard of the golden hammer term its a cognative bias that involves an over-reliance on a familiar tool. These people treat these tools with religious fanaticism.
For the most part don't engage with them and those not commenting constructively. Don't let such golden hammer wielding trolls get the better of you.
At the end of the day a tool is a tool and used correctly for the right situation makes life easier, and using the wrong tool just make life hard.
For example using a cheifs knife to cut a slice of bread will not be as easy as using a bread knife.
Try to avoid their public roadmap, it is not a very fun one.
To see the sort of things they're currently spending their resources on, and then the even worse ideas currently being researched is just sad, even disheartening.
And those hundreds of open GitHub issues about real problems, most still seeing daily activity even after 8 years? Yeah... nope 😉
As a tech lead I like developers to understand their environment, using Docker to setup local dev environments, have proven really hard for devs to eventually get there, as they now have to understand another layer of complexity on top of the OS and the tools they need.
This is the most baffling justification. Devs are a fickle bunch. We want all our tools to boil the oceans we work in while also getting mad at them for not knowing the exact temperature of our particular use case.
Every tool is going to exact some pretty ugly injustices upon me the longer I use them. I don't think that tool owes me a goddamn thing though. I don't want it to.
The docker documention issue is too true. As someone just starting out with Docker, I dread having to go through the official documentation.