What if we had CMD+Z (Undo) in real life?
What's interesting about scale is that mistakes are magnified. It's not just that—this magnified pain belongs to the architect. Even in the case of personal inconvenience, the onus falls on the the architect.
Nature, industry, and many other things hit scale, but in this blog post, I'm going to stick to what I know about: scaling software.
I, as many others in my generation, am self-taught in web development going back to middle school. I learned about the web as it was built, along with professional developers of the time.
As the future marched forward, scale entered the conversation. How do we design data-intensive applications? It mattered not just in the sense of reducing mistakes, or inconvenience. Bad scaling was just plain expensive.
DevOps was introduced in 2009. It was the answer to the question "How can we best work together (at scale)?" I was surprised when I learned about the inception in 2009, because the answer seems to arrive late in the software era.
Tenets of DevOps are unintuitive. The average person says things like, "If something's worth working for, it's worth working hard for." DevOps says "If something's hard work, it'll either not get done, get done less often, or have mistakes."
As a person with disabilities (AuDHD, or something like that) DevOps really rocked my world. In thinking about systems, all of sudden I could see the world for what it was—and most of it was not designed well.
If you make a mistake, people assume you're careless. Mistakes are thought of as permanent and irreversible. And, if you're a person like me, who makes their fair share of mistakes, it's all your fault.
I think we could all stand a little DevOps mentality, which as a reminder, is contained almost entirely in the niche sector of web software development. So, I'd like to try and ponder on the following.
- If you make a mistake, you are not careless. It means the system failed to protect you. The system needs fixing.
- Mistakes should be undoable. Try to live like this—it takes some creativity but make sure you design your life so you can undo bad decisions. It's the realistic, pragmatic thing to do. Do not assume everything you do from here on out will be perfect.
- It's never your fault. Ok, if you're trying to be malicious and break the system, or take advantage of the system, then obviously your mistake may be your fault. (Maybe.) But if you play fair, then keep your head up and keep going. You're helping everyone out by testing the boundaries of the system.
Scale is a beautiful thing. It means reaching more people. It often means helping more people.
And to be clear, the mistakes you find at scale aren't caused by scale, they're just magnified. So if you can adopt a DevOps mindset in your daily life, you'll find yourself working with yourself (in a "royal we" sense) much more easily.