How I Learned to Give Up Programming and Accept AI

I’ve thought about writing this blog for quite some time and maybe not for the reasons you might think.

You see - my first and longest passion in life has been programming. I remember, in vivid detail, my dad sitting on the carpet with 6 year old me and a big, clunky, mold-injected, dark-grey laptop. He wanted to show me qBasic - something he didn’t know himself but he had a feeling it was going to be a big deal. My dad was an electrical engineer and was versed in hardware but he could see the writing on the wall for software.

I spent hundreds of hours on that laptop. I had no idea what I was doing but I knew my dad did “stuff like this” (he didn’t) and I knew I wanted to do the things he did. I asked him tons of questions and he pointed me to the very good and rich help documentation that came with that version of qBasic. I can’t claim to have made anything amazing those first few years - but I learned a lot and I knew that was what I wanted to spend my life doing. I don’t know how or why but I just knew.

I got into C and C++ years later so I could work on MUDs. If you’re not familiar, they’re text based games generally played through a telnet client. I spent a larger part of my youth scouring around textual worlds and I wanted to be able to forge new worlds, spells, and skills as the immortals did. I remember getting CircleMUD to compile for the very first time Christmas morning. That moment eclipsed the entire Christmas.

Fast forward to a few years ago when ChatGPT was finally starting to be useful. This was post “copilot” auto-complete but pre-vibe coding as we know it. The writing was, once again, on the wall. I was working on some decentralized clustering stuff - sending custom UDP packets around to save on latency and copilot was just shoveling really good code around. This wasn’t stuff that models would have been trained on because it was completely new protocols for nodes to discover one another. I sat stunned thinking - wow - this is…crazy.

Now fast forward to about a year ago. I was working on building a web based MUD (can get away from your past) and was bouncing between Grok for writing out massive amounts of code and VS Code. I built something playable with tons of features in just a few days. I was still hand managing the code because of course I should be doing that. I had, in fact, written a few things that allowed me to work with agents from the CLI (pre-stage harnesses) but it felt wrong to just…use that for writing code. I needed to see it, read it, make sure it wasn’t garbage code.

Then a few months later I vibe coded around 40 personal projects for home automation. Straight up vibes, no VS Code, never looking at the code, never reading it, just knowing what I prompted and that the stuff was working as expected. I remember telling my wife “this is crazy, I’m just building all these things I’ve wanted to build for years and…we just get them.” And I remember telling her “my career is done.”

My wife has no problem telling me when I’m wrong and she did then. She said “Austin, you’re still doing the same things - you’re just faster. Can AI just make these things?”. I thought about it “Well, not really, I mean…I still have to explain what I want and get it to actually work. It’ll do silly, impractical things so I have to steer it the right way…” And I started feeling a little better about AI.

Not better about programming though. That which I had spent over 30 years learning, practicing, loving. No - that is largely behind me now. Not because I want it to be but because it’s no longer practical. I could sit down and hand write some Java or C#. I could spend a few days working on a project I’ve been meaning to get to. Or I could have it done this afternoon. Maybe when I retire and am looking at ways to keep the mind busy…I’ll dust off VS Code tickle the keys. But…my wife and kids take priority over my time right now.

Fast forward more months, in the tech world about three decades, and I’m confident in the tidal shifts of software development and the continued necessity of the developer. AI is a wonderful auto-complete but you have to give it the context to get what you want. That’s not just describing the problem, that’s making sure it’s solving the problem in a good way, and that it’s actually solving the problem rather than hallucinating.

These are non-trivial tasks which rely on understanding computer science fundamentals, system design and distributed systems. Further - avoiding hallucinations and validating the work is non-trivial.

Sure - you can do this all by hand. You can look at the code, review it, validate the results manually. But this is the old way - and it’s much, much slower.

Even before AI - I was a firm believer in tests. Tests gave a developer confidence that their code did what it needed to and that changes couldn’t break that. After AI - I’m a firm believer that tests are the linchpin in a system built on non-determinism and unknowns.

Ok - but how do I know my tests actually test real things? This is part of the non-trivial work we as “post-programming developers” or maybe “agent wranglers” have to do. Human-in-the-loop verification of tests, the product, and getting agents to manually verify behaviors enough that the tests and product must be good.

It’s not perfect and it’s not what my original passion is. But it’s the world now and it means we can build things in days that would have taken months. We can build systems in weeks that would have taken years. We have the powers of creation at our fingertips and need only to think to create whole new worlds.

Show Comments