Categories
Artificial Intelligence Programming

The increasing reliance on AI in programming

I’ve been seeing a concerning trend over the past couple of months, and perhaps you have too, where people are becoming increasingly reliant on AI for coding, and it might not be working out well for most of them.

A non-coder relying on AI

Consider this entry from a couple of weeks ago in the subreddit for Cursor, the AI code editor:

Here’s the text of their post:

Cursor f*ck up my 4 months of works

 

Disclamer, I’m a moron who worked on the same project without thinking about the risk that Cursor could break everything. Yesterday, Cursor (even though I only asked it to feed a view on my UI) destroyed months of development.

 

My question: How do you back up your projects/versions to ensure that the next action on cursor is reversible? Ops!

 

Also, I know that while I’m the concern, cursor isn’t the only culprit, it’s also Claude (while good overall) still has some flaws

Don’t take the misspellings and strange grammar as a sign of a lack of smarts — there are “tells” such as the pluralization of “work” that suggest that the author’s first language isn’t English. And in a follow-up comment, they wrote:

I’m not a dev or engineers at all (just a geek working in Finance)

So what I see is someone with the mental capacity to master another language, seeing a problem in their area of expertise that could be solved by an application, and then setting out to build that application with the assistance of AI, even though programming isn’t something they’re familiar with.

First, I think we should celebrate that kind of go-getter attitude.

Second, those of you who are programmers have already seen the post’s author’s rookie mistake. It’s in this question:

My question: How do you back up your projects/versions to ensure that the next action on cursor is reversible?

You probably thought: Of course, they don’t know version control exists!

At the moment, even the best LLM will simply focus on answering the user’s questions and not stray too far to make helpful asides or ask clarifying questions, such as “Have you heard of Git?”

Junior coders on AI

This article appeared on Namanyay Goel’s blog a couple of days after the Reddit post, and according to its stats, it’s already garnered a million views:

Here’s the text of the introduction:

Something’s been bugging me about how new devs learn and I need to talk about it.

 

We’re at this weird inflection point in software development. Every junior dev I talk to has Copilot or Claude or GPT running 24/7. They’re shipping code faster than ever. But when I dig deeper into their understanding of what they’re shipping? That’s where things get concerning.

 

Sure, the code works, but ask why it works that way instead of another way? Crickets. Ask about edge cases? Blank stares.

 

The foundational knowledge that used to come from struggling through problems is just… missing.

We’re trading deep understanding for quick fixes, and while it feels great in the moment, we’re going to pay for this later.

The first line in the following section shouldn’t really be shocking but it still feels shocking:

I recently realized that there’s a whole generation of new programmers who don’t even know what StackOverflow is.

(As user number 216 of Stack Overflow, with over 8,000 reputation to my name, this hurts a little.)

With AI, these junior developers gain speed of delivery, but at the cost of understanding what they delivered does. Which means that they can’t maintain or modify what they built — at least, not without even more AI assistance. Over time, what they build becomes a collection of quick fixes arranged together without any consideration of the system as a whole. That’s a whole lot of tech debt.

There’s more thought on this article in this video by Forrest Knight

A super-senior coder relying on AI

And finally, here’s a tweet from the very beginning of February, a couple of weeks before the prior two pieces:

In case you’re not familiar with the name, Andrej Karpathy has forgotten more about computer science and AI than most of us will ever learn. He was the director of artificial intelligence and Autopilot Vision at Tesla, and also worked at OpenAI, where he specialized in deep learning and computer vision. He also has a YouTube channel that’s worth checking out if you really want to boost your AI/ML skills.

Here’s the text of his tweet:

There’s a new kind of coding I call “vibe coding”, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It’s possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things like “decrease the padding on the sidebar by half” because I’m too lazy to find it. I “Accept All” always, I don’t read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I’d have to really read through it for a while. Sometimes the LLMs can’t fix a bug so I just work around it or ask for random changes until it goes away. It’s not too bad for throwaway weekend projects, but still quite amusing. I’m building a project or webapp, but it’s not really coding – I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works.

This is great for Karpathy, but I’ve already talked with developers who’ve fully embraced the first part of the tweet, where Karpathy throws a lot of work to the AI. The problem is that they’re ignoring these key points from the second part:

  • The code grows beyond my usual comprehension, I’d have to really read through it for a while.
  • Sometimes the LLMs can’t fix a bug so I just work around it or ask for random changes until it goes away.
  • It’s not too bad for throwaway weekend projects, but still quite amusing.
  • And let’s not forget the last three words of his tweet: it mostly works.

Karpathy is very, very good at coding and has lots of experience. He’s internalized a lot of best practices and has developed an instinct for programming and can spot “code smells” a mile away.

The people who’ve been talking to me about getting into “vibe coding” are not Karpathy, and some of them have mentioned that they have that increasingly common problem where they say “I know how to use my programming language and framework, but I don’t know how to apply what I know to build an application from the ground up.”

They’re not ready for vibe coding, but they’re doing it anyway. If your main gig involves working with code — and especially working with other people’s code — you’d better prepare for some interesting times over the next few years.