As a very (I think) perceptive and curious person, I’ve been watching the programming world transform (and burn) over the past couple of years. With AI coding assistants like GitHub Copilot, JetBrains AI Assistant, and Cursor becoming commonplace, the way we teach and learn coding is changing fast. As someone who’s been coding for years, I want to share my perspective on how we should approach programming learning/mentoring in this brave new world.
Fundamentals vs. AI Tools
There is a lot of hype around AI coding tools and this new term called “vibe coding”, but fundamentals are more important than ever. Yes, these tools can generate code in seconds that would have taken hours to write manually, but here’s the thing that was relevant back in the “Stack Overflow” days and now: “Don’t commit code to production that you don’t understand”.
The reason? When things break (and they will), you need to know what’s happening and take responsibility. Software engineers must be able to explain their code, spot security vulnerabilities, and maintain it over time. Like using AI for writing or drawing, AI can help with the first draft, but you need to understand it well enough to debug and improve it. I wrote about this back in 2022 in my post about leveraging AI at work.
Don’t get me wrong, I love how it’s empowering non-technical people to build things. They can get a working prototype really fast without getting too deep in technical details. It’s democratizing programming, and it’s good. Some people are against it, but that’s a different problem.
This reminds me of when I mentor junior devs. The first lesson is always building a simple HTML/JS/CSS small webapp doing something trivial, giving them a quick win with immediate visual feedback. Vibe coding takes that concept to a whole new friggin level - you can build a three.js game without mastering every fundamental first. I’ve explored some crazy ideas with AI that generated a lot of excitement in this space, though the results don’t always match the enthusiasm.
However, when that AI-generated code moves to production, we start seeing problems:
- Security vulnerabilities that weren’t caught
- Scalability issues under load
- Performance bottlenecks
- Bugs affecting real users
Sometimes I just think about the money I would earn fixing those “vibe-coded” webapps!
This shift mirrors what I discussed back in 2021 about LLMs and their impact on the web as we know it. New technologies always create both opportunities and challenges as they reshape established paradigms.
So, Is Learning to Code Still a Thing?
tl;dr: Yes.
Interestingly, I predicted this shift a long time ago in my 2017 post Programming Is Dying, where I argued that problem-solving skills would remain the most valuable asset for developers even as coding itself evolved. Eight years later, that prediction is spot-on as AI tools transformed how we write code but not the fundamental need to understand problems and design solutions.
Here’s my approach to coding and mentoring:
-
Focus on understanding, not memorization: Instead of memorizing syntax, focus on understanding patterns and architectural decisions.
-
Use AI as a teaching tool: When explaining concepts to new devs, use AI to generate alternative approaches.
-
Combine AI with human creativity: Use AI for boilerplate and humans for creative problem-solving.