Last week, I just hit “a point” where everything was clear. I understood what was wrong. I dissected my growing detachment with sanity and life. I identified the moment I finally got fed up with technology. I mean, it wasn’t one thing, not even a particularly bad day, it was just, in the middle of redesigning a Terraform module because a) somebody changed their mind about the architecture they told me to use, b) somebody else picked a hole in the logic we all had agreed on, c) both of them laughed, “I hope you didn’t spend too much time on that…”, d) both of them are objectively faster at Terraform than me, e) I’ve have spent the last 6 years in this position learning and re-learning how to do the same task, that in the good old days was a joyus box of cards, diskettes, wires, computers, and monitors that I got to assemble with tactile sensation like a four-dimensional jigsaw puzzle.
Man, I miss the old days.
Now, I live in this world where I got my initial training working from a GUI and a set of processes written out “Step 1 … Step 27.” Then we went to JSON to basically skip some steps. Then we went to ARM to standardize the JSON and reuse it. Then we went to Bicep, because somebody thought a language designed to look like plain English was too confusing. After that, we moved to Terraform on DevOps because we may want a hybrid cloud someday, even though it’s been six years, and neither the original “legacy” cloud nor the one that succeeded it is technically “live” yet. Then Microsoft decided to retire DevOps, so we’re moving to ZenHub…
What I’m basically saying is, I know how to do what you want; I’ve been doing it for 35+ years. I’m absolutely ready to pull my hair out when you not only tell me how to do it, but then change the way I do it every six months. My brain was fast and dexterous back in the old days when it was ANSI C … no C++, objects! … well VB.6 is good enough and easier to recruit candidates for … no, we meant VB.NET, it’s new … oh, let’s be trendy, they say it’s easy to migrate to J# … Did we say J#, we meant C#. My middle-aged brain is no longer fueled by a dopamine hit from learning something new to put on the resume. My middle-aged brain says, “What’s the point? They’re going to move the goalpost again on me in six months.”
So, after all that, I had to ask: “What, exactly, am I building right now?” I’m not talking about the read.me file in the repo, or what the pipeline says, or what the architectural diagram in the AIA looks like. Why is this important, now, in this form!? I honestly wasn’t sure, and that is a new experience for me.
I used to know every detail of a network or a software system (I was a developer before I became “the ops guy”) from the bottom up. I had to, because when something broke, I had to diagnose, fix, and restore the system while the dot-com startup bled money every minute it was down. If something broke, I didn’t have a pretty dashboard. I had a core dump. I followed logic through memory, registers, and hardware layers that I actually understood.
Fun, true story. I once watched a pointer, looping through a buffer and sending output to a soundcard, shoot past the end of its file and walk through the server’s entire memory stack, spewing gibberish as it went. The whole time, I was explaining to the people in the room what was happening. “Yeah, it was playing that audio file, but it kept going after the file ended. We’re just scrolling upward through lower memory. <pitch changes> Yep, there’s the video RAM. That’s an acoustic representation of what you’re seeing on the screen here. That will be the last thing before we hit upper memory <pitch changes again> Yep, there’s upper memory, so that’s ROM…”
I wouldn’t call that a magic trick, and I’m not Rain Man or anything. The point is, you could map systems then, and one person could keep it all straight. When I was getting my ComSci degree, they taught us to write file locks so two people couldn’t stomp on the same piece of data at the same time. We wrote hash tables so you can evenly distribute data across a database or a redundant drive setup. These days, that’s just built in. That’s progress. Problem solved, let’s package it and move on.
Except you don’t solve problems that way, you bury them, and the new guys don’t know why or where. For my entire career, I’ve watched people, from boardroom suits to system architects, get increasingly good at describing systems and increasingly bad at explaining them. The fundamentals are optional, someone else’s problem, a waste of time to discuss.
Ask any programmer where his display routine lives. Is that in your library? Your framework? The OS? The graphics card? Something you built as an override/extension, the way we did it back in the day, because “print” was too darned slow?
William Gibson, in his “All Tomorrow’s Parties,” posits that, by 2006 (still in the future when the novel was written), computers and systems would be so dense and complex, and people’s knowledge of them so many layers of abstraction higher through wrappers and interfaces, that only the best hackers can help by trying to write code to diganose and debug old code. Of all the silly science-fiction doomsday predictions I should have known would come true, this one seemed too “out there” for a mere “twenty years in the future.” It’s not that complex, right? Then, one generation later, these kids are deer-in-the-headlights when you discuss the bottom three circles of hell … I mean … first three levels of the OSI model (which, in itself, is no longer used). Sure, in the 23rd Century, maybe V’Ger comes back and tries to blow up the world because nobody knows off the top of their head how to say “Welcome home” in binary (seriously, that’s the plot if you think about it), but my kid’s generation?!
Fine, if you had told me twenty-five years ago I would one day deploy an entire corporate network from somebody else’s “slightly stolen and a bit modified” code without ever knowing where the machines it runs on are, how the traffic behaves under pressure, and what happens when memory goes sideways, I’d have asked, “On which planet? Yours?” Some people think this is maturity. I think we traded coherence for convenience.
So, I did the math. At this rate, I will face at least 8 more ARM to Bicep to Terraform-type transformations before I retire. On the other hand, one of my generational peers I used to tag-team consulting assignments with, depending on who was better suited for the gig, recently announced he got his Master’s in ComSci for $3600 bucks, and is now teaching remotely at a community college. Three lectures a week in the evenings via webcam (same ones he gave last semester, so no real prep), plus office hours a few times a week, and some administrative meetings. Its income and benefits, he doesn’t have to touch his retirement yet, and he thoroughly enjoys it.
So, is there really a place where my old-school, bottom-up, “I know what layer I’m standing on” way of thinking still has value? Is there really an employer who thinks understanding a system is still worth something in a world where you merely have to describe it in a YAML file? Also, and this is no small detail, I can get there for less money than I spent on my kid’s saxophone?! This is either a damning indictment of higher education or a glowing endorsement of the quality of musical instruments sold at Paige’s.
I may or may not follow through. I’m still on the fence. If I do, it’s not because I think I’m behind the curve on “modern network deployment.” It’s because I just don’t want to be the guy who can orchestrate anything but understand and explain nothing. I know what the system sounds like when it breaks, and I know enough not to pretend that silence means it’s working.
