
Most people, when asked why they do what they do, lie. This isn’t because they’re malicious but it’s because the honest justification for a career is rarely noble. It’s usually a combination of a decent paycheck, tolerable hours, and whatever neurosis you were nursing at that particular juncture of your life.
Take my friend the ER doctor in Chicago. He’ll tell you he went into medicine to help people. The truth? He became an ER doctor because he’s the kind of person who cannot do the same thing twice. He requires the chaos and strangeness of a city emergency room the way a 90s sitcom dad needs a beer and to watch the game. Helping people is a delightful side-effect of his pathological need to never sit still.
I fell in love with tech work the same way a 13-year-old falls in love with anything. It was the late-90s, and I was in a small-town computer shop that smelled of burnt ozone, cheap carpet, and cups of noodles. I didn’t love technology as its own thing. I didn’t believe it was a transformative tool for the human mind. I liked fixing desktop computers because I got a dopamine hit from solving the riddle. Why is the video not showing up? Why can't I do this in the UI versus that? These were problems people were grateful to have solved, but honestly, their appreciation meant nothing to me. I was fascinated by the puzzle until the moment it was solved, at which point the entire affair ceased to matter.
Technical problems, if you have the sickness, are among the best. They can be insanely complicated, but really, nobody dies if you fail. If you poison a soup, someone goes to the hospital. If you bork a database, it's just a bad night. Since everything in the entire stack is knowable at some level and designed by humans, intuition often gets you further than rigorous logic. They’re immensely satisfying because they require hours reading documentation or source code i.e. there is a toll to be paid in the mines before you see the diamond. But the underlying solution is usually quite simple, easy to explain, and fast to test. You confirm your hypothesis, ship the solution with your name on it, and wait for the next fix.
If you like to test and iterate on your theories as you work, software is a dream. I don’t need a lab, or equipment, or really anything other than any laptop ever made. It’s like being a scientist if the only thing you needed was one test tube, one beaker, and some loose mercury rolling around on your desk.
The driver for me going further and further down the stack was that you don’t get a rush for solving the same problem twice. The first time I diagnosed a blown capacitor on a videocard, there’s a rush. The tenth time, it’s just a job. Fixing problems in a GUI was good for a while, but eventually, you want harder problems that exist exclusively inside of CLIs. Debugging closed-source software is boring because you capture the logs and produce a bug report like a good little citizen. Open-source software lets you go right down to the metal.
Then you get to the next level, which is: What if I can solve the problem by making a better version of the thing? This is the zenith. Now you are perhaps the most expert in the world on fixing this thing. You made it. The call is coming from inside the house. Every problem is a new problem, often one you never predicted. It’s nested endless puzzles stacked on top of each other. Then your job is sitting quietly in the dark, headphones on, listening to music and solving puzzles, which, sweet fucking Christ, is paradise on Earth.
If fortune smiles on you, maybe you don’t have to manage actual humans to keep getting promoted. Maybe you get to just wander around like a modern-day ronin and solve problems in other stacks for the remainder of your career.
I’ve met other tech workers with the same sickness as me, but we’re a minority. In my experience, most people who work in tech can be sorted into very specific buckets:
"I'm here because I love technology."
Sometimes they are obsessed with OSS and how it’s going to save the world. Sometimes they’re programming language nerds who delight in solving problems with clever quirks of their chosen syntax. These are the lunatics who say things like, "Writing my own programming language was a lot of fun."
"I like high visibility, low stakes work."
Some people absolutely get off on working for Company Name Everyone Knows, maintaining a product people rely on daily. If it stopped working, it would be a serious problem, but again, nobody dies. Maintenance and keeping the lights on is the name of the game. God bless them.
"Money is here, so I am here."
No shame at all. Some people needed a job, tech skills were hiring, so they’re here. They do just fine work. Honestly, they tend to get stuck in the weeds far less than the "I love technology" people, who pick weird esoteric ideological hills to die on all the time. This is the largest group by a lot now. They are the mercenaries.
"I'm here for a hard time, not a long time."
This is me. I want the worst problems in fast succession, which I will complain about, but if I solve them all and the job becomes easy, I will get bored and leave. I’m like the worst kind of restaurant customer. I order everything on the menu, eat it all, complain that I’m too full, and then when you don't change the menu next time, I never come again.
Now, the LLMs have arrived, like a fleet of Sysco food-service trucks backed up to the kitchen door, delivering pre-chopped onions and powdered hollandaise. They came for the "I love technology" people first. There’s no prestige in being an active contributor to an open-source community anymore because you are just a meat proxy for the Borg. Make sure your docs are formatted for them!
Now in LLMs defense, it's not hard to make the "I love technology" people upset. These are people who I've seen quit jobs over framework debates. I once watched a senior engineer get into a yelling match with another over whether we should mandate emacs as the official text editor of the team. Their desire for the most pure thing often overrides any ability to do cost benefit analysis. They're closer to musicians than factory workers.
However now, it seems they are coming for me.
So here’s the issue. LLMs make programming much easier. Because it is easier to make a thing, you care less about fixing the existing thing. There is no hit from solving a problem, because who gives a shit? Nobody is impressed that you sat there, studied the docs, and read the source code, because an agent will do that work for you while you eat a slop bowl on a Teams call.
I used to get really excited when someone made a new Mac application. Typically, these were deep passion projects by people who loved the ecosystem. Indie Mac developers are the best part of owning a Mac. SoundSource, BBEdit, Things, Dropover—the list goes on. It was craft. Now I am flooded with LLM-generated Mac apps and I just don't care. All it means is someone paid Apple the $100 developer fee and gave OpenAI $250 to stitch together a UI, then copy-pasted error messages into the prompt until the thing finally launched. Nothing was mastered. Their passion for solving the problem didn't push them through the hard part. They had an errant thought, manifested it into reality, and are now showing it to me. It's exactly like a coworker cornering you in the breakroom to tell you about a dream they had. You have to nod, but you are dead inside.
You see the same thing in the CLI space. How it worked before is someone would decide they needed to solve a problem. They would put in a ton of work, then launch the thing. You'd find it on Hacker News or wherever. There was a vested interest in working together on this thing because yes maybe it didn't do what you wanted perfectly but it was way closer than starting from scratch. A community is formed about taking this work and then extending it in the directions that allowed it to maximize its usefulness as a tool.
Now why bother? If this CLI tool doesn't do what I want exactly, I'll just wait the....72 hours until someone has the robot make a new one. It's like gaming before Steam and after Steam. If a game doesn't hit exactly for me now I just refund it before the trial period is over. There's no reason to stick around and follow its progress. There will be another Metroidvania in the next 36 hours. Important to note, games aren't better now that there is a firehose of them, they're more niche and the prices have been driven down. I don't get the impression that these CLI tools are more stable or trending up in quality, there are just a lot more of them, more than a person could reasonably try out.
I tolerated a lot of the ridiculous bullshit of the tech industry because, at the end of the day, I got to return to my endless series of puzzles. Stand-ups. Meetings with investors. Retros. Kanban boards. Agile vs Waterfall. Endless discussions over pull request formatting. Decision syncs. People saying stupid things like "don't let perfect be the enemy of good". Ground-up rewrites because a new language is the fashion. Those were the tolls I paid in order to do the interesting part in the back of the house. I didn't like working with rude people who ran little fifedoms—like I've had to do at some, but (thankfully) not most jobs—but the payoff was worth it.
My new job is to watch the robot work. Then I need to do a ton of reading about what the robot is doing so that I can, at a moment’s notice, seize control back from it and course correct. Calling this "programming" is a farce. I'm closer to those poor souls who have to sit in the driver’s seat of a self-driving car, hands hovering, sweating, waiting for the robot to try and mow down a pedestrian.
In reality, I am a SaaS provider, and the service I provide is responsibility. I am a flat-rate monthly responsibility service that agrees to assume full liability for the output of the robot. I am the human face with a pulse who can be lectured about why something did or didn't work. I will apologize. I will attempt to fix it. I will take the blame.