Programming, at its essence, is conversation with computers. It’s how we translate human intention into machine action. Throughout computing history, we’ve continuously built better translation layers between human thought and machine execution—from physical wiring to assembly language to high-level languages to the World Wide Web, which embedded calls to backend systems into a frontend made up of human-readable documents. LLMs are simply the next evolution in this conversation, making access to computer power more natural and accessible than ever before. (View Highlight)
And here’s what history consistently shows us: Whenever the barrier to communicating with computers lowers, we don’t end up with fewer programmers—we discover entirely new territories for computation to transform.
There’s a kind of punctuated equilibrium, in which some breakthrough resets the industry, there’s a period of furious innovation followed by market consolidation, and frankly, a bit of stasis, until some new technology upsets the apple cart and sets off another period of reinvention. (View Highlight)
Consider how dramatically programming has evolved over the decades. It used to be really hard to tell computers what we wanted them to do. The earliest programmers had to physically connect circuits to execute different operations. Then came the von Neumann stored program architecture. That let programmers provide binary instructions through front panel switches. That was followed by assembly language, then compilers that took high-level, more-human-like descriptions and automatically translated them into the machine code that matched the architecture of the underlying system. With the World Wide Web, the interface to computers became human-readable documents that had some of the characteristics of a program. Links didn’t just summon new pages but ran other programs. Each step made the human-machine conversation more natural. (View Highlight)
Take the digital spreadsheet—a revolutionary tool that changed business forever. Dan Bricklin and Bob Frankston first prototyped VisiCalc in BASIC, the 1970s equivalent of today’s “vibe coding.” To create a viable product, they then rewrote it in assembly language for the 6502 microprocessor, the CPU for the Apple II. They had to do it this way to optimize performance and fit the program within the Apple II’s memory constraints. This pattern is instructive: Simplified tools enable rapid prototyping and experimentation, while deeper technical knowledge remains essential for production. (View Highlight)
Pre-AI, investigating an idea like this would have meant taking it seriously enough to write a grant application, hire a researcher and a programmer, and give it a go. Now, it’s tossed off to a high school intern! What that shouts to me is that the cost of trying new things has gone down by orders of magnitude. And that means that the addressable surface area of programming has gone up by orders of magnitude. There’s so much more to do and explore. (View Highlight)
And do you think that that experiment is the end of this project? Is this prototype the finished product? Of course not. Turning it into something robust, reliable, and medically valid will require professional software engineers who understand systems design, testing methodologies, regulatory requirements, and deployment at scale. (View Highlight)
What’s emerging is a new spectrum of software creation. At one end is “vibe coding”—rapid, intuitive programming assisted by AI. At the other end is systematic AI engineering—the disciplined integration of models into robust systems. (View Highlight)
This mirrors the evolution of the web. What began as simple static HTML pages evolved into complex, interconnected systems with frameworks, APIs, and cloud infrastructure—what I called in 2005 “software above the level of a single device.” The web didn’t eliminate programming jobs; it created entirely new categories of development work. Frontend engineering, backend engineering, DevOps, information security. More JavaScript frameworks than anyone can keep track of!
We’re seeing that same pattern with LLMs and agents. The raw model is just the beginning—like HTML was to the web. The real magic happens in how these models are integrated, refined, and deployed as components in larger systems. (View Highlight)
A tool like ChatGPT, Perplexity, or Cursor highlights just how much more there is to an AI application than the model. The naked model is dressed in fashions dreamed up by entrepreneurs, shaped by product managers, and pieced together by AI engineers. Any AI app (including just a chatbot) is actually a hybrid of AI and traditional software engineering. (View Highlight)
Eran Sandler used a car metaphor: “The model is the engine, but you need a whole lot around it to make it a sports car—context management, codified workflows, and more. Those are the ‘real uses’ of AI models.” (View Highlight)
This reminded me of Phillip Carter’s insight that we’re now programming with two fundamentally different types of computers: one that can write poetry but struggles with basic arithmetic, another that calculates flawlessly but lacks creativity. The art of modern development is orchestrating these systems to complement each other. (View Highlight)
Sam Schillace added another dimension: “There’s now a tension between reliable and flexible—code is reliable but rigid, inference is flexible but unreliable.” He described how the new job of the programmer is to craft carefully designed “metacognitive recipes”—code that manages and directs AI inference. Doing this well can transform a task from 5%–10% reliable to nearly 100% in specific domains. (View Highlight)
It’s an extraordinary time to be in software development. After years of incremental advances that made the field feel somewhat predictable, we’re entering a period of radical innovation. The fundamental building blocks of how we create software are changing.
This isn’t just about using AI tools to write code faster—though that’s valuable. It’s about reimagining what software can do, who can create it, and how we approach problems that previously seemed intractable. (View Highlight)