Why Study CS? Thoughts on LLM-assisted software engineering
Dear students of Computer Science,
Almost everything everyone is telling you about LLMs is probably<br>wrong. Some tell you it’s glorified autocomplete, others say it will<br>cure cancer or prove the loftiest theorems. As with many mass-market<br>takes, these claims contain a grain of truth–but they miss the<br>point. I encourage you to try a modern AI coding assistant for<br>yourself and form your own opinion; here, I’ll offer mine, as someone<br>who wants to give you an optimistic but unvarnished perspective.
Nine months ago (March ‘25), Anthropic’s CEO claimed that AI<br>assistants would be writing 90% of our code within three to six<br>months. We have recently seen that he was only a little too ambitious:<br>the winter break has seen an explosion of programmers uncovering the<br>power of Claude Code, surely a cause for talk around the Kombucha<br>dispenser at OpenAI’s offices.
Claude Code reveals a sobering reality for many software engineering<br>professionals: the vast bulk of the thing we call productivity has now<br>revealed itself to be nothing more than Claude in a loop with<br>command-line tools. The 2023-era copy-and-pasting into the textbox,<br>manually crafting a prompt, and carefully stitching the result into<br>our codebase feels downright manual by comparison. Now, we can boot up<br>Claude Code and iteratively build up ideas, tests, implementations,<br>and (possibly) a complete, working app. The TUI-based interfaces solve<br>one of the main problems inherent to the web-based chatbots: how to<br>meaningfully iterate, and incrementally build larger software<br>artifacts alongside the LLM. I think many of us were telling ourselves<br>that the real ingenuity was in the judiciousness we exercised when<br>carefully copying the LLM’s output and integrating it back into our<br>work: Claude Code shows that doing that for arbitrarily complex<br>domains is often just dirt simple, as long as the tools can<br>communicate via text.
This halcyon turn of events has left many students wondering: should I<br>still study computer science? As someone who sells computer science<br>for a living, I am obligated to sell the position of “yes,” but we all<br>know that there are plenty of good reasons to argue “no” as well. For<br>the sake of this essay, I will assume you lean towards yes, but<br>perhaps with some skepticism. Even if you agree, it’s an important<br>question, because it reveals an uncomfortable systemic issue: many<br>students operate at a level that Claude Code can easily beat, and in<br>the new world order, it will be increasingly hard to get a job. Just<br>so we’re crystal clear, there’s still some code Claude can’t write,<br>even though it can certainly write a lot of very useful code. But<br>“there will always be code that Claude can’t write” is not a very<br>convincing argument when the amount of code Claude does write will be<br>massively higher by comparison.
CS undergraduates face a real issue: beating Claude Code isn’t very<br>easy, even (and especially) on challenging leetcode problems. This may<br>push some students to conclude that the AI is good enough at reasoning<br>such as to absolve them from developing a deep understanding of the<br>technical details. I argue that this is the wrong perspective to take,<br>and that instead you should switch your efforts away from mindless and<br>repetitive generation, and towards problems which stretch your<br>intellectual capacity by making you feel stuck. To the degree the LLM<br>can help get you unstuck in a way which genuinely builds your mental<br>model (so that you’re in the driver’s seat, not a maybe-true<br>understanding you got from the AI): great, do it.
In some ways, I see LLM-assisted software engineering as the Object<br>Orientation of the ’20s: it offers a vast swath of opportunity to give<br>lesser-trained programmers the ability to write huge amounts of<br>good-enough code, thus enabling us to hire a vast army of folks who<br>never had to deal with the pains of memory management, pointers,<br>etc. Unfortunately, however, this time it’s different; we all know the<br>hiring boom of easy-money days is over. Seeing Claude Code, many of us<br>take a more pessimistic stance: those that can’t add value on top of<br>Claude will be out of a job. Who are these folks that will rise to the<br>top? I argue that it is the people who have expended serious<br>intellectual energy to exercise their capacity for understanding deep<br>ideas.
I personally believe the purpose of a university class is to stress<br>your intellectual capacity through repeated exposure to<br>increasingly-complex technical ideas which build coherent vision. In<br>doing this, we teach students skills that can be broadly binned into<br>generation (synthesis) and verification (checking). In many contexts<br>(e.g., debugging), we build our mental models via iterating between<br>synthesizing candidate ideas, then carefully checking our work, and<br>reflecting upon what to do next.
As a student, I saw learning as a way of “compiling” things into my<br>mental representation: I would spend days at the library (I do...