Vivek Haldar

The de-nerdification of programming

Programming with LLMs, and building systems with LLMs, has completed the long de-nerdification of the field.

The programmers at the dawn of computing were nerds. They had no abstractions. They dealt with raw hardware – switches, circuits, currents. Binary code. Punched cards. Assembly language was a respite.

The next step up were high-level languages like FORTRAN and C. Imagine having mnemonics like FOR and variable declarations, after futzing with assembly.

The arc of high-level languages was a long one. Of course, the languages, theory and tools have taken massive leaps over the last few decades. But they’re still languages, still authored by and debugged by human programmers.

The people who found this activity appealing were nerds. They were attracted to the unforgiving yet clean logic, the relentless detail, of the machine. Even after hitting the depths of despair during debugging, emerging on the other side was cathartic because while the solid ground of reason was obscured, you managed to find it! And most importantly, it existed.

The platonic universe of pure reason was manifested in a bunch of circuits, and your messy utterances to make the current dance through them. It was solid ground, unassailable, its rewards and comforts showered upon those willing to endure the hardship of – first, thinking clearly and logically, and second, expressing it in executable form.

This is what the programmers always had over the mathematicians. Math was pure abstraction and reason, and it was beautiful, sure – but programming was all that, and it was executable. It could run! It could talk back to you, reflecting back to you the rigor or sloppiness of your own cognition.

All this is to say that computers, and “talking” to them via code, was for nerds. Those who felt more comfortable with things rather than people. In fact, they avoided people. People were unreasonable, unpredictable, and inconsistent.

The activity of programming has become easier – dare I say, friendlier – over the years. The languages have soared higher and higher, away from the gritty details of the machine. The tools have become more approachable. We want kids to code, and they seem to be doing that pretty well.

Hardware has become cheap and plentiful. Plentiful enough to support higher and higher level abstractions. The languages aim to model not the machine, but your business, and your problem. The words in your program are from your domain, not from the machine. This is all progress, and the modern economy is built on it.

This has reduced the need for the monastic mental rigor needed when the field was more primitive. The field has been de-nerdifying over time.

Which brings us to large language models and prompt engineering.

Programming languages became higher and higher level… until they become natural language. That seems like a natural step, expected even. This step completes de-nerdification of the field.

The process is in its infancy, and will probably take a while to play out. There are also plenty of people who believe that this is a blip, as any nascent change appears to be. But it is inevitable.

But for the nerds of programming, the problem with building a system out of prompts is… that you have to coax the machine into doing what you want. In informal, natural language. Just like people.

A programmer has to program by talking to the computer as if it were a person. Just like the Star Trek computer. Yay!

But the nerd has a nostalgic feeling of loss at this impressive achievement. Someone called this feeling vesperance: “the solitary emotion of wistful recognition of the present as a fading era, tinged with anticipation for an unrecognizable, transformative future.”