I was trying to fix a bug in ART using Frida. I admitted I knew nothing about the intricate details or tricks of ART. I couldn't even understand why the original author wrote the code in a certain way. Feeling lost, I turned to GPT. But because I couldn't understand the AI's complex reasoning, I couldn't guide it. The AI stubbornly blamed a conflict between Frida and JVMTI and ran in the wrong direction for an hour with zero progress.
Eventually, I gave up on the AI and decided to debug it myself. I couldn't afford to read the whole ART codebase to understand the full context. But in the AI era, the cost of getting a quick summary is near zero. With AI helping me grasp the big picture, I pinpointed the actual bug: a compilation callback issue during ART's transition between runnable and native states.
Before, finding this bug would have required days of reading ART's code. Now, with AI helping me understand something I'm completely unfamiliar with, it took just 1 hour.
My key takeaway: AI is incredibly useful, but if you just say "I don't understand, you keep going," you'll be stuck forever. You still need to learn things.
This is exactly why we should still learn to code. AI is a powerful tool for lowering the cost of understanding, but it cannot replace the human ability to judge, guide, and intervene. You need to know enough to be the manager.
As an intellectual exercise, sure.
I don't have a crystal ball, but in my opinion, if you are asking in the context of employment, I think it's very hard to know, and I'd probably recommend against it if you are starting from scratch. Right now, I think that having experience with coding helps me work much more effectively alongside LLMs. Given the progress in the last five years though, I can't be certain that I will be needed in another 10 years. I already recommend against majoring in computer science with the goal of becoming a software engineer. I don't think that the role will go away, but the number of people needed might be much smaller in 10 years, and I wouldn't want to be a new grad in that kind of market.
> If you already know how to code, do you keep learning?
I'm sure others feel differently, but personally, I find it quite annoying to learn new things right now. 5 years ago, if someone came out with a new tool for say, durable workflows, or a new JS framework, I knew that they poured many days of labor and love into the project. They spent many hours thinking through what they were building and the tradeoffs and edge cases. Now, there's just an avalanche of new projects out there and it's hard to separate the wheat from the chaff. Personally, I'm more focused on developing soft skills right now.
The AI allowed me to sail right past the learning curve, building an app I’ve wanted for years in just a few hours. I haven’t really looked at the code at all. With that said, I feel I’ve already started to hit the wall. The app works, it’s fine… but it’s got weird behaviors the AI doesn’t seem to be able to fix. The animation at the end of the drag and drop is wrong and confusing.. it’s telling me that’s the default animation with no options to change or disable it… I exhausted my AI quota twice on this before giving up. Drag-and-drop feels clunky in general, after quite a bit of prompting to tweak it. I still seemingly have to know how an app should behave and tell it to add all the little quality of life things everyone expects to “just work” on macOS… the AI didn’t assume and add any of it. 25 years as a user on macOS and 20 years in tech is how I see the issues and know what is missing and what to ask for.
If I want the app to actually feel great to use, and be the level of quality I’d expect from others, I can’t keep promoting my way there. It made an MVP, but I feel like that’s as far as it goes. I need to read the human interface guide, learn the frameworks, learn Swift, learn SwiftUI, probably learn some AppKit… if you rely on the AI entirely, your app will only be as good as what the AI can do. Right now, that doesn’t what it can do is an MVP that makes for an impressive tech demo or a personal utility, where you’re ok dealing with the limitations and rough edges.
I did write up my initial request, and tweaked from there. Maybe if I started with a markdown file, describing the full specs, every expected drag and drop action, etc… it would be better. But I keep thinking back to Dave Plumber saying his spec for TMOG was 107 pages long. If I’m writing 107 pages of spec, I might as well just code the app at that point, and learn something along the way.
It happened the same to me when trying other programs. Swift and Xcode are my main tools, and I feel that AI is especially bad in the Apple environment. That is not related to those programs nor Apple but because in that world we care specially about design and details.
There is a "feeling" a sensibility, emotion behind the code that I think a machine will never get. That is why I think I should keep learning code in all environments and perhaps in Apple platforms, a tech I love. A machine will never feel that, will never love.
This is a huge simplification. AI is also trained on tweets, spam and explicit content, but ChatGPT isn't constantly swearing at you to send your bitcoin to a Nigerian prince.
The mistake people make here is that just because something is represented in the weights, doesn't mean it's representative of its output. And the reason for that is largely the same reason for why if I show you lots of bad code you don't become a worse coder. If anything you'll see bad code and learn to avoid writing similar code yourself.
So long as quality is being reinforced and that process is refined and improved then "model collapse theory" and arguments about how AI will write bad code because it reads bad code will continue to prove incorrect.
In life I learn a lot from my mistakes, not much from others' mistakes. Could we apply that to AI and code?
I do not mean to anthropomorphize their work, but I do need to improve what they produce. I think a lot of push-back to vibe-coded projects is that the person asking an AI Agent to make something do not or cannot improve what it produces, which goes back to the question asked. Is it worthwhile to learn programming now. I argue that it is.
So, it would be better if models were trained to produce provably correct code, and agent harnesses are improving to help do this, but the models themselves have been shown to be trained to provide the answer they think you want to hear, and declare a task done as fast as possible. They hallucinate (or lie) about running tests, even about writing code at all (sometimes).
How do cloud models "learn" to write better code? Where are the projects that fine-tune an open/local LLM to "learn" from its mistakes. I have yet to see any model improve on its own.
A lot of the best code I've seen is closed source, and unlikely to be represented in existing training data. A lot of the worse code I've see was online. Maybe newer coding models are getting trained better, but most I've tried are years out of date. Maybe my view is affected by trying so many LLMs. Very few have been great.
First, if the AI is unavailable, you at least have a backup plan. You can make changes to your website or web app even if Claude or Codex or whatever else is available. That's useful if you're using third party services.
Secondly, it lets you delve into the code and understand where things have gone wrong if the agent gets stuck in a loop or keeps making poor decisions. If you let the AI handle everything, then you're up a creek without a paddle if said AI gets stuck and can't make any progress.
Finally, it's sometimes quicker and more efficient to make a change without using AI, especially if it's a small scale one. Lots of times I've wanted to add a new form field or tweak some random CSS rule, and being able to do that myself made things a lot quicker.
As I say in the question I use AI as a teacher. What confuses me is that I see some programmers that I admire that say something like "I do not code any more" I do not understand how could they make good work?
I also wrote about my journey with (re)learning coding - https://aishwaryagoel.com/thinking-in-code/
If I understand he says this related to regular text but we could extend to writing code too.
I refuse to give my intellect over to the machine just to blindly consume its homogeneous excretions. I will keep doing what I've always done regardless of how well an AI could do it. I don't need to justify doing so, and neither do you, nor does anyone. It's OK to be a human.
I guess a lot of folks really did just get into programming for the money and hated every minute of it.
People today likely cannot relate, but a big concern back then was identical: If the non-tech users can write their own code/and or code is easier to write, why even learn to be a programmer? What's the point?
It seems absurd now but legitimately it was exactly the same stuff. Like then, programmers will fall into two camps, those that keep up and those that fall behind. The thing with LLMs (and agentic) is that it doesn't change WHAT we do but rather HOW we do it.
So will programmers exist in the early 2000s after RAD? Well turns out, yes, and in expanded numbers. Businesses just expected more from technology, and the personnel gap never really closed. With LLMs the same will likely happen - same number of people, higher expectation.
The limit on how many programmers they'd hire was never "wants." They always wanted more than they could get. The limit was budgets/money. Now more "wants" can be fulfilled (just like post-RAD/web), but the budgets are more or less similar.
PS - Although it should be noted that the economy is not in a good place currently, and we're seeing an unusual employment environment. A lot of which "AI" is blamed on, least of all because companies can save face that way.
Eat, Shit, Sleep: Doing only what is necessary is not much of a life.
Good luck.
If your goal is making small apps, websites, things that aren't too critical performance-wise, I don't think you should learn to code.
But code isn't disappearing. Calculation-heavy processes, large apps, video games, basically things that need a deep understanding of tradeoffs, still require a lot of human inputs.
Will it be always that way, I don't know. But I'd like to think AI won't totally kill the code, in the same way compilers didn't kill assembly dev.
But still, I am building relatively small apps and I do nor see any AI making clean, organized, long-term code. I do not see any path that they could do it in a near future.
Right now I'm strongly advising people not to care too much about narrow academic or intellectual pursuits because I think those skills will be almost entirely redundant to AI in a few years.
Learning to code today seems absolutely insane to me honestly. If you just want to understand at a high level how code works, then cool spend a week or two on it, but obviously outside of very niche edge cases which you can't build a career around humans won't be reading and writing code for much longer.
I'd even expand on this to say people should broadly avoid tech as a sector to learn anything in at this point. There will be a lot of disruption in the coming years. Hardware and software are going to change to better suite an AI-first world and this means almost any tech skill run a risk of disruption.
That said, I struggle predict past 10 years these days. In some ways we're now just weighing different sized infinities. In a world of AI and robotics perhaps the only good bet to make is that human are of no value anymore. This is the world I am personally preparing for. Any skills you learn today would ideally be in preparation for this.
Obviously there is some value in learning just about anything, but that isn't actually how people decide what to study in practice.