"Yes, and..." — On Teaching Programming in the Age of AI

"Should I learn programming?"
I recently read an essay called "Yes, and..." by Carson Gross — htmx creator and professor at Montana State University. He received a question from his students: "Is programming still a good career path in the age of AI?" His answer was "Yes, and..." Programming is still worth it. But coding alone is no longer enough.
Reading his essay brought back memories from the last four years.
Four Years of Teaching — and ChatGPT Arrived in the Middle
From 2022 through last year, I taught a course called "Software and Artificial Intelligence" at Yeungnam University. It was a general education course aimed primarily at first-year students — not just CS majors but students from non-engineering disciplines too.
In November 2022, ChatGPT appeared. The shape of education visibly shifted before and after. Before, the main question was "why won't this code run?" After, it became "ChatGPT wrote this code — why won't it run?" The subject of the question moved from the student to the AI.
The direction of university education overall isn't something I want to get into here — I'd like to write about that separately someday. But teaching naturally leads to moments where the conversation drifts toward students' futures.
Things I Can't Tell Them
It's a light intro course, but sooner or later students ask about life after graduation. I find these moments genuinely difficult. It's hard to tell someone how the world will change and how they should prepare for it.
Especially for students who are already skeptical about coding and programming, I've found it increasingly difficult to make a convincing case for "it'll still be useful to learn." Three years ago I could say with confidence, "Basic programming ability is a weapon in any field." Now I hesitate before those words even leave my mouth.
This is exactly where Carson Gross's essay hit home for me. He argued that the essence of programming is "solving problems with computers" and "managing complexity." The core skill isn't the act of typing code — it's the ability to understand and handle complex systems. Even if AI can write the code, managing the complexity of the systems that code creates is still a human responsibility.
He's right. But conveying that convincingly to a first-year student from the front of a classroom is a whole different challenge.
The Sorcerer's Apprentice Trap
Gross warns his students: AI can generate code, but if you don't write it yourself, you'll also lose the ability to read it. He calls this the "Sorcerer's Apprentice trap" — building a system you don't understand, then having no way to intervene when it runs out of control.
From my position running a company rather than teaching, this is already a reality. Among junior developers, I'm seeing cases where someone is comfortable using an LLM but is completely unable to resolve problems when they arise. When AI-generated code throws an error, they paste the error back into the AI, the AI gives them more code, that doesn't work either, they paste that in again — and this loop just spins forever.
The lack of experience shows up here. Debugging ability is built up through countless failures and hard-won struggles, and if you delegate all of that to AI, there's simply no capability there when you actually need it. Gross's rebuttal of the assembly-to-high-level-language analogy applies here too. Compilers are deterministic, but LLMs are not. LLM-generated code contains "accidental complexity," and dealing with that still requires a human who can actually read code.
But the "and..." Is What Matters Most
Up to this point, it might sound like the conclusion is "so just work hard at coding." But there's a reason Gross's answer is "Yes, and..." rather than just "Yes."
He openly acknowledges that the relative importance of pure coding ability will diminish. In its place, other capacities are rising.
- Communication skills. The ability to clearly convey intent — to both AI and other humans.
- Business understanding. Identifying the real-world problems that technology needs to solve.
- System architecture. Managing the complexity of systems at scale.
- LLM fluency. Using AI as a design tool for seniors and a learning aid for juniors, while maintaining the fundamentals of writing code yourself.
Looking at this list, I kept thinking: this isn't really just about programming. Across every profession, the center of gravity is shifting from "skill at operating the tools" to "ability to define and solve problems using the tools."
Between Humans and Agents
Coding agents will keep growing technically. The "can't debug" problem that today's junior developers face will increasingly be handled by agents. That direction is clear. At the same time, the shrinking of the human role is already visible.
So what kinds of work should people be doing going forward? Honestly, I don't have an answer. What I sense on a gut level is something like this: agents will handle more and more, and the human role will remain at the interface between people and agents. Defining problems so that agents can understand them, translating what agents produce so that humans can understand it, and weaving together the outputs of multiple agents into a single system.
What Gross calls "communication skills" and "business understanding" might just be different words for this same interface.
The World Is Changing Fast — Truly
The world when I first stepped into a classroom four years ago and the world now are completely different. In 2022 I told students "understand the for loop." By 2025 I was telling them "understand why the for loop that AI wrote runs the way it does." The same word — "understand" — but the context has changed entirely.
Not being able to give students a confident answer isn't something to be ashamed of as an educator — I think it's the honest thing to do. When you don't know how the world will change, pretending you do is what's truly irresponsible.
But one thing I do hold onto: the "Yes, and..." framing. Programming is still worth learning. Not as the skill of writing code itself, but as the sense of how to handle the complexity of the world through code. And on top of that sense, building communication ability, business understanding, and systems thinking.
If I get the chance to stand in front of a classroom again, and a student asks "should I learn programming?" — I think I'll be able to say: "Yes, and..."