Let's Dump the CS-Degree for Programmers
Computer science is not software engineering. We need the latter.
There's been a lot in the press lately about even Stanford CS graduates having a hard time getting jobs, so I looked up the Stanford curriculum. The problem isn't "AI." The problem is that you can get a CS degree from Stanford and know absolutely nothing useful for day-to-day work as a software engineer.
Don’t get me wrong, the world does have a use for a degree that focuses on the mathematics that underlies computing, algorithm design and analysis, NP completeness, and the other things that go into a Computer Science degree, but that stuff has little or nothing to do with the production of software. Put another way, computer science is to software development what materials science is to architecture. The connection is tenuous, and a degree in the first does not prepare you for a job in the second.
In the current job climate, the CS curriculum is a tragedy. Learning software engineering on the job to make up for educational deficiencies is a luxury that requires a strong economy and companies with money to burn. We don't have that. Sure, a university is not a trade school, but I'm talking about basic essential knowledge and skills, not the details of using specific technologies.
If AI requires the thinking of a "senior" and the schools don't teach the things a "senior" knows, even though they could, then they're failing as educational institutions. There's no reason for that. Similarly, there's no reason for schools to churn out people with no experience or knowledge of how to create real software. They can teach that, too. They can require significant projects as a graduation requirement. They can support and encourage internships (see: Drexel, Cal Poly, VCU). It's a truism that the only constant in software engineering is change, but that doesn't make it any less accurate. A hidebound university system (with a few notable exceptions) is failing us. The fact that many of the CS-degree requirements are the same now as they were when I was in school, back when dinosaurs roamed the earth, says nothing good.
PS. To address a misreading of the above that's popped up elsewhere: I am not saying that universities should teach a tech stack. I am saying that they should teach software engineering: how to work in teams, how to write production-quality programs that people can use, how to work incrementally, software architecture, basic processes like CI/CD and testing, and nowadays, AI-assisted software engineering. None of this has to do with specific tech.
We need to rethink the role of a Computer Science (a narrow specialty) degree in hiring and instead focus on Software Engineering degrees. Universities that don't offer a true Software Engineering degree are not really doing their jobs, in my opinion. They are not teaching an essential discipline.


I would say maybe we can leave the CS degree to universities for people who want to do science. Hence, the Software Engineering discipline might not be suited to universities, but rather to specialized technical schools and colleges, as it’s a more engineering-oriented profession.
In 1970, I started my BS in CS degree at a state university. The chair of the department made something clear during the first class meeting: "this is not a technical school. We're not going to teach you how to use our computer center (S/360 67 running VM + MFT guests), nor how to write a program that compiles & runs, nor how PL/1 compares to COBOL. You'll learn those things as you go, to get your assignments done.
We're going to teach you the underlying principles that allow you to understand any operating system, compiler, language, problem type & programming solution.
What you learn here & now will serve you forever. "
56 years later I'm a CIO (been one since 1982), and I still remember 'Goto statement considered harmful,' & Denning's 'locality of reference,' & why latency trumps bandwidth for conversational workloads, & some of 'Formal Languages & Their Relationship to Automata,' & why RSA works (until Quantum, anyway)...
I don't require (or even prefer) a CS degree for developers, because most coders can solve most business problems using straightforward techniques & the tools (+ JIT training) provided by employers.
But when I hear hype about a new technology, or review a glib 'technical' justification, or I'm getting briefed on an intricate problem, the principles I struggled to master 50 years ago still serve me.