I've been playing around with AI coding tools for a while, such as GitHub Copilot and OpenAI Codex. Before ChatGPT I used the OpenAI Playground to generate some basic Python code. At the time, these were fun exercises but nothing game changing. I wrote about my thoughts on them almost 4 years ago and want to review what I said.
Firstly, it's very cute to have described how GitHub Copilot worked and it's capabilities. I think nowadays, everyone views the capabilities that I described as a bare-minimum for any programming assistant. But it was really novel at the time.
...being able to describe that you want a "REST API using Flask with a GET endpoint called 'books'" and have that starter code loaded up for you without having to read docs would be awesome. Unfortunately it's a little bit finicky and the suggested code requires you to still have an understanding of the framework and language you're using.
Well, it has improved! All the AI tools now can EASILY spin up entire applications with fully working and high quality frontend and backend code as well as initialise live services like databases, payments and authorisation and even deploy your application from a single prompt. It's not about "starter code" - it can give you an entire "starter app".
I was onto something when I said that it would be nice to not have to read docs. Because people have objectively stopped reading docs. Tailwind Labs (the company behind Tailwind CSS) is experiencing severe financial difficulties due to the impact of AI on their business model. They rely on people visiting their documentation and then purchasing the premium services they offer, like high quality UI libraries etc. But because AI tools have already scraped all the docs, they don't need to actually open any docs website anymore. So no one is purchasing their UI kits and their revenue has dropped by 80% and they've had to layoff 75% of their engineering staff!
This came to light when Tailwind rejected a request to implement functionality to make it even easier for an AI to access the Tailwind documentation via an MCP. This would have given developers even less reason to access the Tailwind website and made it even easier for AI to use it. So they're in a predicament: make their project easier to use with AI, continue to grow, but lose more revenue, or make it harder to use with AI, risking users abandon it for an alternative? (IMO the likely outcome is the AI just continues to use it because it's so good and Tailwind and the dev community as a whole has to figure out a way to fund the project so it can continue.)
Other projects with alternative revenue models have actually embraced AI - Posthog, Vercel, Clerk, Supabase, Stripe and many more actually have very deep integrations with MCPs and actively make their documentation easy for AI to use. They want the AI models to prefer to use them so that all the people who are new to programming (and even those who are already seasoned developers) will prefer to use them because of how much easier they are to now work with. And they don't care if less humans view their docs, because they make their money in other ways. This is actually so common, there are services like Context7 built specificaly just to provide up-to-date documentation to LLMs and AI code editors.
I've only recently started to embrace the use of MCPs and I have been thoroughly impressed. Posthog is a web analytics platform. I recently tried the new CLI experience and it is absolutely sublime. Not only will it automatically configure all the code it needs to start tracking analytics in your app, it now uses AI to actually understand what your application is about and the important workflows and funnels, and then adds logging throughout your application automatically. E.g. imagine you have an e-commerce page, it will add logging for things like which products the user is clicking, which users are making it to the sign up page, which sizes people are clicking, how many people are checking out etc. Not only that, but it's possible to then have AI set up the dashboards on Posthog to view these analytics. I did not write a single line of code to set up Posthog. At a company, it might have been someone's job to spend a day or two setting it up. Now it takes a few minutes.
I had a similar experience with the Stripe and Supabase MCPs - without needing to even open up or use the platforms myself, the AI can configure products and pricing, set up databases, run migrations, create schemas, inspect data and of course write relevant code. I actually switched from using Clerk as my auth provider to just relying on Supabase for my entire backend because it means I can make my tech stack more streamlined for the AI. (I'm not even a massive Supabase fan! I don't like the dev experience when coding with it but I'm no longer the one coding with it - Claude Code is, and Claude doesn't mind.)
I don't think these tools are anywhere close to replacing software engineers or redefining what it means to be a SWE.
Regardless of what you think "anywhere close" means, I was wrong. AI tools have started to redefine what it means to be a SWE. Every developer needs to be using these tools otherwise they will fall behind. The uptake for these tools has been absolutely massive at my work. I'm surprised when I hear people haven't been using them. Here's been my rough journey with AI at the workplace:
- ChatGPT/Claude - used it to copy-paste code back and forth. I actually enjoyed this experience even though the UX of copying things back and forth was horrible in hindsight - I actually just found the results fascinating because it was actually decent compared to the nothing we had before.
- GitHub Copilot - it was alright, but only for minor things. Glorified autocomplete, but I still liked it because the UX was right there in my IDE.
- Windsurf/Cursor - I much prefered Cursor at work, Windsurf sucked. It was laggy and the model choices we had were bad and it would often just fail to run. Cursor was solid, but we didn't have it for long. For my personal use, I actually still use Cursor but I no longer pay for the subscription and don't use any of it's AI tools except for the autocomplete/tab functionality. At work, I'm back to just using VSCode.
- Claude Code - I used the very early versions of Claude Code and frankly wasn't in love with it. It wasn't helping me with work and I didn't want to pay for it at home. Gemini CLI was similarly mid.
At one point, I had stopped using practically all the AI tools at work. I had tried them all and found myself spending more time going back and forth with the AI instead of just programming myself and saving that time. In my personal projects, I wouldn't mind going back and forth because I would get to learn about how the AI works and what it's good at, but with work, I had shit to do. I didn't want to keep wasting time talking with the AI.
At the end of last year, I decided to give AI another shot. I upgraded Claude Code - and it was a big upgrade, from an early version to version 2.0+ and with the new Opus model. And holy shit is it a game changer. I really felt the AI augment my job at this point. I'm a little surprised that the terminal is the UX we've settled on, but it's solid. I typically run 2-4 instances of Claude Code, at least one for the frontend and one for the backend. And it just fucking GRINDS OUT PRs for me. Anything that you may assign to an intern or junior, the AI can absolutely one-shot and even make a PR with an incredible description. I've completed multiple PRs without having to write a single line of code myself.
Other things I use it for are:
- Reviewing PRs
- Coming up with plans for more complex changes, including writing PRDs/RFCs - it would be nice if this integrated with note taking platforms but currently I just copy-paste
- Searching through and explaining existing code and implementations with ASCII diagrams too!
- Larger backend changes - this is trickier but I have been so impressed with it. I'm not super familiar with our backend, but I've been able to put multiple PRs that do comprehensive changes and they just work!
- Writing documentation - I give it the code and ask it to describe the new functionality for users. I haven't allowed it to actually run the project itself, so I ask it to tell me if it wants any screenshots of the feature so that it can include those in the docs it writes. I'm basically work for it as a photographer.
- I have not tried any MCP stuff at work, but that would be cool to set up. Once I have that I might truly be cooked.
Because code is now so cheap and quick to generate, I produce more code. So I'm tackling tickets and issues that we've left sitting around because "we don't have time". While working on a big task, I can have another few instances of Claude Code running and solving various long standing small tickets that we always said "we'll get to that when we have time" - well, now we have time as we wait for another Claude instance to finish its work.
The Codex demo "Creating a Space Game with OpenAI Codex" is impressive, but it's essentially just programming with extra steps. Rather than write out JavaScript, you're using an incredibly high level language (English) to describe what you want to code. You still have to break up the problem into multiple parts, do those parts in order and address edge cases. That IS programming, not a replacement. And any mistakes or misinterpretations will have to be corrected by someone who understands the language that the AI is writing.
This analysis was on-point, using Claude Code does feel like programming but with a new focus. That's why I think it has completely augmented my job. Not totally replaced it but changed how I do programming dramatically. I now feel I'm managing a small team of developers who never get tired and can keep switching tasks and pump out code. My job is to give them the right stuff to work on, lightly guide them, and review their code and make sure it gets released.
I look forward to being able to just ask "test my code" and have an AI figure it all out for me.
Well buddy, that's the least it can do for you today!
In a future post, I want to think more about the future and some of the non-technical impacts that this tech is having. I'm rethinking my advice about studying computer science and my career as a whole.
