journal // Aug 30, 2024
Indie Hacker Diaries #16: How AI is Changing Indie Hacking
I’ve been keeping a close eye on Twitter/X about opinions on AI.
Seemingly overnight this week, I noticed the code editor I mentioned a few weeks back being talked about by everyone: Cursor.
If you’re not familiar, Cursor is a VSCode fork that integrates copilot-style code completion, but, let’s you hook in third-party LLMs like Claude (as opposed to just using Github’s GPT -powered integration). It also includes a nice in-editor chat where you can pipe in the currently selected code and get modifications, answers to questions, etc.
Amidst all this talk and hype about Cursor, there was another discussion taking place: the anti-AI discussion.
Early on in the hype cycle of LLMs, I was one of these skeptics.
I thought, “there’s no way this thing can write code that works.” At the time, I was right. The code you’d get back from the typical chat was approximately correct, but unless you were an experienced developer, you’d run into a lot of hurdles with what it spit out.
Just a year or so later, that’s completely changed.
Now, with the right prompt, not only can you get an LLM to generate accurate, working code, you can get it to write code like you wrote it.
This is a massive shift.
The obvious win here is the productivity boost for experienced coders. If you were competent before LLMs, the addition of one to your workflow—either in the form of a chat or a copilot integration—means that you can move and build things faster.
Instead of combing through documentation and debugging the odd StackOverflow post, you can just get the answer. And after a few tweaks? That feature that would have taken several hours by hand is done. In minutes.
As for new developers, I’ve been thinking a lot about how AI is going to impact learning. I tweeted this chart a couple of weeks back that I think perfectly describes the problem in front of us.
There's a competency vs. productivity curve that seems to be getting ignored. Short-term, the productivity gains blind us to the deterioration of skill.
— CheatCode (@cheatcodeco) August 5, 2024
We'll cross a point in the future where we can write code really fast, but have to blindly trust what the AI spits out. pic.twitter.com/t4sH95JUnB
Because LLMs are trained on the past efforts of developers, as more developers default to “asking the robot” how to write their code, fewer and fewer organic inputs will exist for the LLM to be trained against.
This creates one of two interesting problems. First, it means that eventually progress on programming will plateau. Some might argue that AI-powered code is the “final” version of programming, but that’s another discussion.
The second problem, the one I think most people caught up in the “woo” of LLMs are ignoring is the competency problem.
As more and more developers depend on AI to “write” code, we’ll cross a point where developers who actually understand what the code is doing—and could write it from scratch, if need be—will cease to exist.
We’re a long ways from this point (I hope), but it’s worth thinking about. It’s one of the things on my mind as I “buy in” to the AI hype with Parrot.
At launch, Parrot will put an emphasis on retaining knowledge about the code you’re writing. The code you generate with it will be accompanied by detailed documentation that explains what the code is doing and example usage.
This, I think, helps to solve these problems somewhat. Compared to a copilot that just injects code straight into your editor without preserving a reference for the future, with Parrot, you’ll always have an answer to “how is this working?”
Even if Parrot isn’t a wild success, I hope that it will at least inspire others working in the AI-code space to consider how their work will affect future developers.
For today, though, I think the best foot forward is to embrace AI fully, solving problems like what I’ve outlined here over time.
Why should we embrace it fully?
Because it’s a monumental step forward in how we as developers write software.
Earlier this week, I picked back up work on Push, the deployment service for Joystick apps that I’ll be launching after Parrot ships.
I made a last minute decision to research a move away from installing dependencies directly on the instances you deploy using Push and instead, use Docker images.
Two years ago, when I started work on Push, I had to figure everything out with good ol’ fashioned blood, sweat, tears, and Google.
This week, researching the move to Docker, I just had to write a clear prompt; and not even that detailed of one.
In less than an hour, I had the code to:
- Check if Docker was installed on a customer’s computer.
- If not, download the binary for their operating system.
- Run docker build to generate their image via an accompanying Dockerfile—also AI-generated—that had all of the dependencies I needed (as well as support for custom dependencies).
Could I have written it all by hand? Sure. But the time to do it would have likely been a day or two vs. that scant hour.
I also ended up deciding against using Docker, favoring the original approach. Had I done my research/experimentation by hand, I would have effectively burned several hours or days just to find out it wasn’t what I needed.
As someone who’s an indie hacker for life, that’s a total mind blow.
In the past, if I didn’t just work my way through it, I’d likely consider hiring someone to help with the work or at least consult on the best step forward.
Today, I just talk to my “pair programmer in a box,” get the work done, test it, and move on. Crazy.
For you, I want to offer some wisdom and a warning. One of the most important things you can do right now is familiarize yourself with using AI to code and start doing it.
One of the dumbest things you can do is take the anti-AI luddite stance and take a pseudo-religious, moral stance against it.
I say “dumbest” because I’m seeing a lot of people like me—experienced developers who know their stuff—taking advantage of AI and building software 10-100x faster than they did in the past.
In other words: building a successful software business is about to get really competitive.
For us indie hackers—or, dare I say, “real” business people—having a working, successful software product is our lifeline. If the business doesn’t work, well, we’re in deep shit—ain’t no VC Daddy Warbucks round’ to keep us afloat.
And this is why you should embrace AI. All chips in. Pot committed. At the very least to help you build your own products.
I can’t say exactly what comes next, but I know that for those of us who ignore this evolutionary step in how we build things, you’re putting yourself at a serious, potentially fatal disadvantage.
So, I reiterate. Start using this stuff. Learn it. Apply it. Don’t shy away from it.
You really, really don’t want to take the “meh” stance. Instead, take the enlightened one.
Realize that we’ve been presented with a Monolith that is going to change how we work, forever. Eventually—and I’d argue, rather quickly—that change will extend to the entire world.
Don’t let yourself—or your business—be a victim of the shift.
Start experimenting while it’s still relatively early in the game. You won’t regret it.
See you next week,
Ryan