Confessions of an AI Hype-Bro
I’ve been described as an AI-hype-bro. It’s probably fair. The month ChatGPT came out I was mesmerized by it, and it was all I could talk about over lunch with colleagues. I hard-pivoted my career to working on the LLM app layer. I was fortunate enough to find a role on a team working on that and join them. I was at Google at the time. But then I left and jumped into the world of startups, joining a company building AI agents for enterprises. I jumped into AI, and all in all, it was good for my career. Browse through the archives here and you’ll find post after post of me exhorting software engineers to not dismiss AI, to adapt, adopt and learn.
BUT… I have to acknowledge the valley of despair and darkness I went through, and that many software engineers are going through now. A lot of those feelings are manifesting in the anti-AI sentiment that now is a common strain. “My handwritten code is better.” “AI code is slop”. “It is a slot machine”.
When ChatGPT came out I had been a professional software engineer for more than two decades. I had built up an entire identity around my competence at it. Even with the models back then, I could see how LLMs would eventually eat the act of writing software. I was beginning to understand how the Luddites felt. Livelihood, competence, identity all endangered. In old posts and videos of mine, you’ll see me torn between the melancholy of letting go of that identity, and the excitement of the fuzzy uncertain future being shaped by these new tools.
Software engineering was always a field where change was constant, and learning to keep up with new tools, languages and techniques was a core part of the job. We went from programming for individual computers, to networked computers, to mobile devices. We learned and adapted and stayed competent. But all that change had a human pace to it. Each of these waves took the better part of a decade or more to play out and for the job market to shift accordingly. For example: one could build a long, stable career as a Java programmer in an uninterrupted line since the early 2000s, keeping up with the trickle of new language and library features, and major language updates every few years.
With AI, that human pace of change is a thing of the past. If your expectations for model and harness capabilities are anchored to 4 months ago, you’re already out of date. It feels like there is never any stable ground to stand up. Like the Red Queen said, “it takes all the running you can do, to keep in the same place; if you want to get somewhere else, you must run at least twice as fast as that!” There are no best practices, no university courses, no anchors. You need to stay terminally online or follow a few key folks (Simon Willison, Geoff Huntley, Steve Yegge, among others) to understand how best to wield AI.
I acknowledge this– the uncertainty, the impossible pace, the threat to livelihood– is ultimately stressful, and often demoralizing and dejecting. All the life scripts and paths we were given are being torn up, and the new ones are not in place yet.
At the same time, the bitter truth in my opinion is that there is no return. I’ve been hiring software engineers, both at big-tech and startups, for a decade. Today, if I interviewed a candidate for a SWE role and they told me they were skeptical of using AI tools for programming, that would be the same level of red flag as someone in 2020 saying they don’t like IDEs and write their code in notepad. Is it possible they are a great software engineer? Yes, I’d keep an open mind. But it would still be a giant red flag. Also round the corner for eng managers lies the issue of handling perf with the increasing divergence between AI-maxing-SWEs and AI-skeptic-SWEs.
I’m writing all this to acknowledge that behind all the excitement, promise and hype of AI ushering in a golden new age, the on-the-ground reality of a lot of software engineers is difficult right now. What helped me through it was learning and embracing these tools and getting them to do my bidding. I realized that my deeper skills as an experienced software engineer – specification, design, discernment, taste, judgment, review, systems level thinking, architecture – are exactly what enables me to wield them as amplifiers.