AI Coding Tools: A Warning from a Veteran Developer

A seasoned programmer warns that reliance on AI coding tools like Claude and Copilot may diminish critical thinking skills among developers.

Introduction

The rise of AI programming tools is undeniably changing developers’ daily routines. Tools like Claude, Copilot, and Cursor make coding significantly easier, but they also lead many programmers into a state of numbness: input a prompt and wait for the code to generate automatically. While efficiency may increase, the ability to think critically is quietly diminishing.

The author, drawing from over a decade of programming experience, reflects on the days spent tackling Project Euler problems and contrasts that with today’s reliance on AI, raising a sharp concern: without the struggle against difficult problems, are we losing the essence of becoming excellent programmers?

The Joy of Problem Solving: Memories of Project Euler

I remember when I was 16, sitting in my room in New Delhi, engrossed in a problem from the renowned Project Euler—a classic programming challenge site combining math, data structures, and algorithms. Problem 15, “Lattice Paths,” seemed simple: how many ways can you walk from the top-left to the bottom-right of a grid, moving only right or down?

In a 2x2 grid, it’s easy to visualize; a 3x3 can be drawn out by hand. But when considering a 20x20 grid, the real challenge emerges. I spent weeks on this, filling pages with diagrams and pestering my math teacher until they avoided me, even dreaming about algorithms.

Can you imagine today’s developers willing to struggle with a problem for weeks, just to think, fail, and think again?

I tried various methods: brute force enumeration, recursion, drawing grids until my hand cramped, but nothing worked. Until one afternoon on the school bus, it suddenly clicked: this isn’t just a path problem; it’s a combinatorial problem.

To reach the endpoint, you must go 20 steps right and 20 steps down. So, the question becomes: how many ways can you choose 20 steps to go right from 40 total steps? The answer is C(40,20).

I was so excited that I rushed home, coded it in ten minutes, and calculated the result: 137846528820. The moment I submitted my answer to Project Euler and saw the success message, all those weeks of effort crystallized into pure joy.

The actual number was unimportant; what mattered was the “aha” moment: the puzzle that had puzzled me for weeks suddenly made sense. That deep immersion is what made me fall in love with programming.

The Emptiness of AI Programming

Fast forward to a few months ago, when I was debugging a complex state management bug in React. Debugging React states is often at the bottom of the “pain scale.” So, I took the easy route and pasted the problem into Claude.

Claude began to “think,” while I switched to Twitter. After a while, Claude provided an answer, and the code ran successfully. But I only felt, “Oh, okay.” I should have been satisfied, but upon reflection, I felt empty. It was akin to mindlessly scrolling through TikTok or leveling up in a mobile game—somewhat satisfying, but cheap.

My AI programming process typically goes like this:

  • Input a prompt, trying to articulate my thoughts with a bit of “vibe.”
  • AI pretends to “think.” Although we all know it doesn’t think, I still like to believe in this setup.
  • Wait for a few seconds until the AI’s answer emerges. When I see it complete, my brain releases a bit of dopamine: “Cool.”
  • I glance at the code (not really reading it), and find it runs.
  • Unsurprisingly, the AI often has some erroneous assumptions. So, I provide another prompt to fix it.

This cycle continues: input → code output → fix → code output.

Clearly, this process lacks struggle, insight, and growth.

Changes in the Brain Under AI Mode

When you indulge in “Vibe Coding” (feeding prompts based on feelings and relying on AI for code), your brain is actually receiving rewards from the wrong places.

Before AI, programming brought me two types of joy:

  1. Understanding—discovering why an algorithm was incorrect and finding an elegant solution.
  2. Success—after hours of debugging, finally seeing the code run correctly.

But now, AI has stripped away the joy of “understanding.” What remains is only a superficial pleasure.

Moreover, the 30-second wait for AI responses is essentially a psychological Variable Ratio Schedule—random intervals, random rewards. This is almost identical to the addiction mechanisms of slot machines, short videos, and mobile games.

At least for me, this situation is already dire. What about novice developers who have never experienced the “pain of independent problem-solving”? I suspect they will get used to submitting AI-generated code without understanding it, functioning like “human merge buttons,” blindly pushing features live.

They will never experience that “lightbulb moment” I had with Project Euler—yet that struggle is the key to a programmer’s true growth.

The Illusion of Productivity

Worse yet, AI makes everything seem wonderful.

Code is written faster, features are delivered quicker, GitHub contributions are green, and productivity skyrockets. But this is merely speed growth, not an increase in your capabilities.

When you outsource your thinking, you lose not only practice opportunities but also confidence. The voice that once said, “I can handle this” becomes quieter with each reliance on AI.

Using AI Wisely Without Losing Yourself

Of course, I’m not suggesting we abandon AI; it is too powerful to ignore. The key is to use it consciously.

Here are a few suggestions:

  1. Understand code before merging. If you can’t clearly explain what the AI-generated code does and why, don’t merge it just for convenience.
  2. Regular “no AI” training. Recently, I’ve returned to tackling Project Euler. This deliberate practice helps me regain my ability to solve problems independently.
  3. Make good use of the waiting time for AI. Instead of scrolling Twitter or Reddit, use those minutes to think about architecture or the next task. If necessary, use tools to block social media (I use Opal).
  4. Remember your original intention. The purpose of coding is to create meaningful solutions from nothing, solving seemingly impossible problems—don’t forget this original intention.

Looking Ahead

Even if one day AI completely permeates every aspect of software development, the best developers will still be those who can deeply think through complex problems.

I remain optimistic about AI programming. It is revolutionary and has made my efficiency unprecedented. But having productivity without understanding is essentially just advanced copy-pasting. AI should amplify your intelligence, not replace it. It can help you tackle bigger challenges but should not allow you to escape thinking.

In my view, once we stop exploring the answers to complex problems, we cease to be true “programmers.”

Was this helpful?

Likes and saves are stored in your browser on this device only (local storage) and are not uploaded to our servers.

Comments

Discussion is powered by Giscus (GitHub Discussions). Add repo, repoID, category, and categoryID under [params.comments.giscus] in hugo.toml using the values from the Giscus setup tool.