When I graduated from St Olaf College, there were about a dozen computer science majors per year. Fifteen years later, I came back to teach, and that number had grown to sixty. The tech industry boomed in the intervening years. Students flocked to computer science in pursuit of lucrative software engineering jobs1.
Recent advances in generative AI have thrown the software engineering industry for a loop. AI-based coding has gone from novelty to industry-standard in less than a year. Experienced engineers can use AI tools to work faster. Non-engineers can use these tools to “vibecode” software with minimal knowledge of the underlying machine. CEOs are eager to save money by cutting engineers and using AI to fill the gaps. Computer science educators and students are scrambling to figure out what the future looks like.
I don’t know the future, of course, but I’ve got a pretty good view of the present. I’ve got one foot in academia as a part-time computer science professor. My other foot is in industry. I’ve been a software engineer for ten years; I currently work at Meta, which is all-in on AI. I have grudgingly become a regular AI user for both coding and curriculum development. Here’s the important context that my academic colleagues may not be able to see.
Demand for Coding Skills Was Dropping Before AI
Over the course of the 2010s, software ate the world. Tech companies hired aggressively as they expanded into brick-and-mortar markets. For example:
- Netflix bankrupted Blockbuster in 2010
- By 2014, more people got their news from Facebook than from newspapers
- Rideshare apps surpassed traditional taxis around 2015
- Music streaming apps overtook music purchases around 2016
Then came the COVID pandemic. People were home all day glued to their smartphones. This meant more money in tech company pockets, which further fueled the demand for software engineers:
- Ad spending on social media saw double-digit growth at the expense of print media
- App-based food delivery tripled
- Video call apps saw usage increase thirty-fold
There were only so many software engineers to go around. Companies competed for them. Salaries and perks skyrocketed. Hiring standards dropped. I was lucky enough to experience this firsthand. A recruiter from Meta called me in late 2020. My resume was decent. My interview went badly. They ghosted me. But then, a few weeks later, their hiring quota went up. They called me back with an offer that doubled my previous salary.
College students took notice. They learned to code. The number of students graduating with a computer science major has increased five-fold since 2010. The total number of software engineers in the USA, in turn, went from one million in 2010 to nearly two million today.
As the pandemic wound down, so did the hiring frenzy. Software was already integrated into every part of daily life, so there was less room left to expand. Job postings have been trending down for the past few years, with entry-level positions hit hardest. Layoffs are rising. Salaries for new computer science grads are dropping.
Today’s computer science grads are in a rough spot. They chose their major when demand for coding skills was at its peak. While they studied, the market cooled. The rapid emergence of AI coding tools adds insult to injury.
AI-Based Coding is the Industry Standard
Senior software engineers don’t actually write that much code. We spend a lot of time on product roadmaps, system design, and cross-team bookkeeping. Once in a while, we get to prototype a new feature or debug a tricky issue. But once the path forward is clear, we pass the bulk of the implementation over to junior engineers.
That’s how things used to be, at least. These days, we delegate the mechanical work to AI agents instead. AI is good at learning a new codebase. It’s good at breaking up medium-sized goals into actionable steps. It’s good at turning those steps into code. It’s even good at writing up a summary of what it’s done. And it can do all of those things faster, cheaper, and better than a college graduate.
AI-written code is by no means perfect. Agents make mistakes all the time. But so do humans. The software engineering industry has well-established strategies for mitigating the risk of bad code. For example:
- Static analysis and automated tests. We have tools to check code for style, self-consistency, and compatibility with existing behavior. An engineer or agent can look at the failures and iterate before submitting code changes.
- Code review. Code changes are vetted, generally by senior engineers, before they go live. Code may be sent back to the author if it needs work.
- Mentorship. An important part of a senior engineer’s job is helping junior engineers get better. AI agents don’t learn per se, but we can update prompts and context to improve future behavior.
- Telemetry and feature flags. We have all sorts of tools for keeping track of app health. If we see a sudden increase in crashes, we can quickly switch back to the previous logic.
Every so often I’ll hear a friend in another industry suggest that AI produces only slop, or that we should avoid brands that use AI. It’s like we’re living in different worlds. Pretty much every piece of software you’ve ever heard of is using AI. I do not see any plausible situation where we go back to coding by hand. In fact, when today’s senior engineers retire, many of them may be replaced by people who never studied computer science at all.
Fewer Jobs Need Computer Science Expertise
Software engineers can be broadly divided into two buckets: infrastructure and product. It’s roughly a fifty-fifty split. Infrastructure engineers build nice abstractions to hide the nitty-gritty details of the machine. Product engineers use those abstractions to create the apps and websites that actually do the stuff that users care about.
Infrastructure jobs include site reliability engineering, DevOps, machine learning, databases, compilers, devices, kernels, and distributed middleware. Each of those areas requires computer science knowledge far beyond coding skills. Problems are often emergent from the scale and complexity of the system. In order to solve them, an engineer has to understand many puzzle pieces and how they fit together.
Demand for infrastructure engineers is holding up despite (or even because of) AI coding tools. We’re seeing more apps and data centers every day. Infrastructure engineers are the ones who keep the lights on.
The product side is a different story. Product engineers are insulated from the inner workings of the machine. In the past, these jobs needed computer science grads for their coding skills. Now that AI does most of the coding, a computer science degree may not be worth the price2. Instead of hiring a software engineer ($130k/year) to build a teaching app, some companies might prefer to hire a teacher ($70k/year) who brings product expertise and can use AI as a software engine.
Ten years ago, computer science grads had their pick of product-facing jobs and infrastructure-facing jobs. Product jobs are now blurring into vibecoding. New apps and websites can be built by people without coding skills. Demand for infrastructure engineers is still high, but applicants will need to bring a lot more to the table than just coding skills.
AI Does More Than Write Code
Software engineering adopted AI because of its coding skills. As we’ve gotten familiar with it, we’ve found that it can also handle all sorts of fiddly manual tasks that pop up during the day. For example:
- Turning some bullet points into a presentable document
- Parsing project timelines from half a dozen different docs into a flowchart
- Finding a “good enough” answer to a vague question
- Cleaning up an outdated wiki page
- Taking a bunch of old data and converting it to a more convenient format
Sometimes AI can shoehorn these tasks into an existing piece of software. Sometimes it writes new code on the fly. Sometimes the work happens within the agent itself. In any case, AI has significantly decreased the cost of outsourcing work to the machine.
Fiddly computer tasks exist in other domains, too. Architects, bankers, students, and salespeople spend plenty of time reading emails and writing spreadsheets. It will soon become clear that AI is better than humans at all sorts of white-collar bookkeeping. The forward march of AI isn’t unique to software engineering; it just hit us first. This makes sense for a few reasons:
- Big tech is investing a lot of money into AI. We have whole teams of engineers figuring out how to cram every bit of relevant context into an AI chatbot. This means our in-house tooling is a step or two ahead of what you’d see from that same model fresh out of the box.
- Pretty much every tool used by software engineers has a text interface via the Linux terminal. We use this interface to write little programs to automate tedious parts of our jobs. This same interface is very convenient for AI integrations. Buttons and dropdowns and other “pretty” interfaces are trickier to use programmatically.
- AI can respond very differently depending on how a prompt is phrased. We’ve had a lot of practice at it because our bosses pushed us to adopt AI tooling early.
- Software engineers are expensive! Six-figure salaries are the norm. For that price, companies do not want us to spend our time copy-pasting data from Excel into PowerPoint.
Other use cases will catch up. AI-friendly integration points will be added to proprietary software. AI tooling will be tweaked to abide by industry-specific regulations. Computers are getting cheaper and faster all the time (though AI costs specifically may go up in the near term). AI models today are fundamentally “smart” enough to absorb all sorts of different tasks. For better or worse, it’s only a matter of time before every student and professional is plugged in.
We Can Do Better Than Abstinence-Only Education
Generative AI is very good at outsourcing fiddly white-collar tasks to the machine: reading, writing, coding, and more. In a professional setting, this is (arguably) a good thing. Similar results can be produced with less human effort. In an educational setting, on the other hand, it’s a disaster. The purpose of homework isn’t to produce code and essays. The purpose is to force students to sit down and engage with the concepts. A recent study showed that the average student is completing homework faster and better, but their test scores are dropping. In other words, they’re outsourcing the homework to AI and learning less themselves.
That same study found that some students defied the average. About one in five AI-using students spent just as much time studying as their non-AI-using peers. In this case, the AI users saw higher test scores. The idea is that these students are using AI as a learning tool rather than an answer machine. They treat their AI agents as infinitely patient tutors, willing to climb down any rabbit hole the student cares to explore.
This aligns closely with my experience using AI for curriculum development. It’s a powerful tool for digging into new material. Chatting with a bot is both faster and more engaging than reading a textbook or Wikipedia page. It can piece together answers even when I’m not exactly sure what I’m asking for. It will tolerate a detour at any time to clear up a point of confusion. I’ve found it to be particularly useful when adding new content to an existing module, for example:
- “I’m writing a lecture about the TCP/IP model of networking. I’d like to talk about security. Can you list some important network vulnerabilities for each layer?”
- “My chapter on CPU architecture is feeling a bit light. We already cover the ALU, instruction pipelining, and hazards. Could you suggest some other topics I could add to flesh it out?”
- “My course outline has nine modules, but ten would line up better with the calendar. Can you propose a few different ways to divvy things up?”
Our students have easy access to AI whether we like it or not. There are plenty of strategies out there to mitigate the risk of bad usage. I think we can do better than just mitigation. We can teach good usage. With our help, students can use AI to exercise (rather than circumvent) their curiosity and critical thinking skills.
Wrap-Up
Today’s computer science majors started college when demand for coding skills was at an all-time high. Now they’re graduating into a hostile job market. Fewer jobs today care about a computer science degree, and those that remain require deep technical roots. Entry-level coding jobs just don’t exist anymore. Generative AI has absorbed that niche.
Coding is just the tip of the iceberg. As a senior engineer, I now spend more time chatting with AI bots than with my own peers. As a professor, I have to worry about the AI devil on every student’s shoulder tempting them with “free” answers. Other industries will be impacted soon enough. AI tools are fundamentally capable of taking on all sorts of white-collar bookkeeping.
Amid the upheaval, I think there’s room for optimism. This isn’t the first time a new tool has turned an industry inside-out. Past generations lost jobs to the printing press, the steam engine, and the assembly line. Now those technologies underpin our daily lives. Tomorrow’s workers will spend a bit less time clicking through chores on a computer, and a bit more time exercising their creativity and judgment.
-
Computer science is about the fundamental logic, math, and physics of computation. Software engineering is about using the computer as a tool to create a product. Your average software engineer doesn’t care how compilers work. Your average computer science major has never heard of tech debt. But the 2010s job market was ferociously hungry for coding skills, and computer science programs teach those skills, so we ended up with a pipeline from computer science to software engineering. ↩
-
Creative fields are getting clobbered in a similar way to software engineering. Compared to a professional illustrator or graphic designer, AI can do a passable job for a fraction of the price. Sometimes passable is all you need. ↩