About
Why Merge Anxiety?
To some extent, no engineer I've worked with feels like they have the "right" engineering story or background. There is a stereotypical narrative that somehow became the standard: the ultra math genius 8th grader who hacks into the CIA database on a Wednesday night between doing homework and playing Doom. This person later goes on to invent some amazing app or become a founder in some billion-dollar company. Those are the REAL engineers.
There are other stereotypes that we accept:
- building a foundational library that everyone still depends on in one incredible weekend,
- dropping out of an Ivy League school because the curriculum couldn't keep up with you — and being right about it,
- writing a compression algorithm that mathematically shouldn't be possible,
- scrambling a security framework under pressure in sixty seconds of fast typing while looking incredible on camera,
- doing orbital calculations in your head while skateboarding in a bikini,
- being personally recruited by the NSA because you are simply too dangerous to leave unsupervised
And so on. We've all watched Hackers and Silicon Valley. Those of us in the engineering profession watch those characterizations with a sort of side eye, recognizing exactly how much bullshit goes into those stories but sort of secretly hoping we are awesome, too.
While there are elements to these stories that ring true, it's not what it looks like from the outside. I've worked with the brilliant engineer who pivoted from a PhD in mathematics and had an enviable ability with abstractions, data structures, and algorithms (looking at you, dmed). I've worked with photogenic young women with so much intelligence, capability, and swagger I have no doubt their Instagram reels are full of lifelong admirers (yeah, Bree, I see you). I can tell you, they both struggled with brutal insecurities too.
But this is the critical point: software is built by real people (even when they are using AI to do it), and real people have flaws, trauma, and anxieties about themselves. We get sweaty when people watch us type. We make stupid mistakes and want to look smart in meetings even when we don't have any goddamn idea what the hell the other person is talking about. We talk too much, or not enough, or fail to notice the obvious or pretend like we know things that we really don't know. We fail to communicate. We create the wrong solutions. We break things. We let crappy code through because we are tired and stressed and fear being replaced by AI robots.
And more than any of that, code is personal (yes, even when you use AI). Even without git blame, I could probably go through feature by feature in most of the codebases I've worked in and tell you who wrote it. The same way that writing has a "voice", code and engineering solutions do, too. Our flaws, our stories, our anxieties can be read just as easily as the "what I did over summer break" essay your ninth-grade English teacher assigned on the first day of school.
This blog -- not that anyone really writes blogs anymore so that is how you know I am old -- is an attempt to write down observations about myself, about engineering as a field, about what it feels like to be an engineer, to explore new concepts, or to dig deep into concepts I thought I knew but maybe there is more to learn.
I named it Merge Anxiety because one of MY flaws is fear of failure. Merging a disastrous bug to production is one of those sweaty nightmares that keeps me reviewing and testing and then reviewing again and testing again LONG past time when it was a good idea to just merge that shit. I am not exaggerating – early in my career I had a script I needed to execute on a client's production server to copy files and a few other filesystem cleanup tasks. It was not a complicated script. I had tested it a million times. I was absolutely positive it would execute as expected. And it STILL took me three days to run because I was terrified to delete something essential and irrecoverable. I would get all set, load the script, do a dry run (and then another)...and then just sit there with my hand hovering over the "return" button, sweaty and trembling. You already know the end of the story – I finally hit the button and everything worked. I pretended later like it was no big deal. The whole incident produced enough adrenaline that I ran a personal best on my standard three mile loop later that day.
When I told this story to my partner years later (who is also an engineer), they were delighted by the absurdity of it. Much teasing ensued and I deserved all of it. My fear of failure is a bug, not a feature. You have to make mistakes to progress. It's not optional. Some of those mistakes are uncomfortably public. You learn to get over it and keep going. That is the work.
In the end, there is no "real" story of being an engineer. There is the struggle and the delight in discovery, the daily pleasure of building things and solving problems and growing knowledge. We all do it differently because we are all different people, and that is precisely how actual software gets built by actual humans in actual life all the time, no matter what the stereotypes tell you, no matter how much AI gets used.
For me, these writings are part of the work. I hope you find them interesting.