A.I. Is Redefining What a Computer Science Education Is For
For more than a decade, the standard advice to anyone worried about their career was simple: learn to code. Programming was treated as the closest thing to a guaranteed job in the modern economy. But as A.I. has become more capable of writing code, many are beginning to wonder whether programming itself is becoming a dead-end skill.
Experienced engineers are still in high demand. Meta reportedly paid some software engineers base salaries as high as $450,000 last year, while recruiters scour GitHub and fly across the world to land a single experienced hire. But that premium is reserved for engineers who have spent years developing technical experience and judgment. For computer science students watching A.I. generate in seconds the code that once justified an entry-level role, a natural question follows: What exactly is my degree preparing me for? They’re already acting on that anxiety. Enrollment at some of the most prominent computer science programs is slipping.
I’ve spent more than 20 years building software, including as a principal engineer on Google Docs, and I think the panic has the problem backward. A computer science education was never really about writing code; it was always about learning how to solve problems, reason about complex systems and understand how computers work. A.I. automating more of the implementation clarifies what the education was for all along.
The shift is further along than most people outside the field realize. Ask working developers how much code they still write by hand, and the honest answer, for many, is very little. The A.I. tools most engineers use now draft, test and revise code faster than a person can type it. That change took about two years, and it happened quietly. So the question worth asking is: what should we teach people once A.I. handles the programming itself?
Consider why we still teach long division. Almost no one does long division by hand as an adult, because we carry calculators in our pockets. We teach it because working through the procedure teaches you how numbers behave. The same logic applies to computer science. Understanding algorithms, data structures, databases and how a machine executes an instruction is still foundational education, even as the day-to-day work becomes less vocational. Knowing how the system works is what lets you recognize when it’s wrong.
Other fields are already reorganizing training around that reality. KPMG, for example, expects that the routine audit testing that once trained its junior auditors will become largely automated over the next few years. Instead of emphasizing technical drills, it now trains incoming hires to evaluate machine-generated output and exercise judgment about when it can, and cannot, be trusted.
Computer science education is likely to evolve in the same direction. Alongside traditional software engineering, the strongest programs will teach students how to design and supervise systems of A.I. agents. This looks less like classical programming and more like systems design and process engineering. Instead of implementing every function themselves, students design workflows in which specialized agents triage problems, draft solutions, test changes, evaluate outputs and escalate uncertain cases to humans. You decide which decisions are safe to automate, which require human judgment, how success is measured, what the system costs and where failures are likely. Whether universities call this agent engineering, A.I. systems engineering, or something else, the best programs will increasingly teach students to design and supervise these systems alongside traditional software engineering.
One caveat is that this field reinvents itself about every six months, and no university curriculum moves that fast. That’s another argument for teaching durable fundamentals and how to learn the tooling, rather than any particular tool. The specific agent frameworks a student picks up freshman year will be gone by graduation, but the understanding of how the systems work underneath won’t be.
Here is the part I don’t have a clean answer for, and neither does anyone else in the industry. You can outsource the software development to an agent, but you cannot outsource the understanding. The engineers who use these tools best tend to be the ones with years of experience writing and reviewing code the hard way. They can look at what an agent produced and know quickly whether it’s right, because they built the judgment to see it. Reviewing an agent’s work isn’t far from reviewing a junior engineer’s work, which is what many senior people did for years.
That points to a problem the whole industry has to solve. For decades, the path from junior developer to technical leader was an apprenticeship. You wrote features, introduced bugs, fixed production incidents, reviewed pull requests and gradually accumulated the judgment that later let you guide teams and make architectural decisions. A.I. is now performing much of the hands-on work that juniors once learned from, but the apprenticeship doesn’t have to disappear with it; it just looks a bit different. The next version is an apprenticeship in supervision: a junior working alongside an expert to review A.I.-generated code and run agentic systems, building judgment by doing so under guidance.
But that supervision only builds real judgment when combined with firsthand experience, meaning the training also has to become more deliberate than it used to be. Schools should keep making students do the fundamentals by hand. The industry may need fewer people writing production code by hand, but there is still no substitute for learning the fundamentals directly. Understanding how software is built remains the foundation for understanding when A.I. gets it wrong. Pair that with the agents track so students learn to design, evaluate and supervise increasingly autonomous software systems.
The same shift applies inside companies. Organizations that continue to treat early-career engineers as low-cost production capacity risk undermining the very apprenticeship that develops future technical leaders. Give workers ownership of real outcomes, and measure their work by whether it helped a user and what it cost in both agent and human time, not by how much code they shipped. That’s a different mindset than engineering has run on, and it takes more mentorship than letting the tools run. But it’s likely how you end up with people who can direct these systems in a decade rather than just operate them.
The best engineers I know already work a level up: on architecture, on product decisions and on the systems that decide what gets built and why. One enduring limit of these tools is that they hold only a narrow slice of context at a time, while a good engineer carries the whole system in their head. That vantage point is what lets them catch what an agent misses. A.I. raises the value of that work rather than replacing it, but it still rests on a deep understanding of how computing systems function. If we stop teaching that understanding, we’ll eventually run out of engineers who can recognize when the machines are wrong. That’s what a computer science education is for.
