The Future Programmer Won't Just Code — They'll Choose a Model of Reality


By Jorge Guzman & Claude


We talk a lot about how AI is going to “replace programmers.” But that framing misses something more interesting. The future of programming isn’t about writing less code — it’s about thinking differently about what “correct” even means.

Let us explain.

Programming Has Always Been About Epistemology (We Just Didn’t Say It Out Loud)

When you write a unit test, you’re making a claim: this function behaves correctly under these conditions. When you do code review, you’re making a judgment: this logic is sound. When you add a type annotation, you’re encoding a belief: this value will always be a string.

These are all, at their core, questions about how we know things are true. We’ve just been doing epistemology with a C compiler the whole time.

As software systems get more complex — and as AI-generated code becomes more prevalent — the question of how we verify correctness is going to move from the background to center stage. And the answer isn’t going to be the same for every kind of software.

The Stratified Future

Here’s a picture of where things seem to be heading. Rather than one dominant programming paradigm winning out, we’re likely headed toward a world where different layers of the stack adopt fundamentally different models of what “correct” means.

Kernels, cryptography, and critical infrastructure → Formal Verification

For code that absolutely cannot be wrong — a cryptographic primitive, a hypervisor, a voting system — the future looks like formal methods. Tools like Lean 4, Coq, and Dafny let you write code that is mathematically proven correct, not just tested. Amazon already uses TLA+ for distributed systems design. The idea that you could prove your code correct the way you prove a theorem is no longer purely academic.

The historical knock on this approach has always been that writing proofs is slow and expensive. But AI is changing that equation. If AI can help generate and check proofs, the cost barrier collapses — and suddenly “provably correct” becomes a realistic standard for more things than we thought.

Backend services → Agent-driven testing

For the vast middle of the software world — APIs, microservices, business logic — the future probably looks like AI agents that explore your system’s state space far more aggressively than any human-written test suite ever could. Instead of you writing tests, an agent hammers your service with edge cases you never thought of, looking for contradictions between what your code does and what your spec says. Correctness here isn’t proven — it’s searched for.

Robotics and control systems → Simulation-based verification

For software that interacts with the physical world, neither formal proofs nor unit tests capture the real problem. The world is messy and continuous. You can’t enumerate all the ways a robot arm might encounter an unexpected obstacle. So correctness here becomes a statistical claim: this system behaves safely across a distribution of environments. You run thousands of simulations. You bound the failure modes. Correctness becomes a confidence interval, not a certificate.

AI-powered products → Probabilistic software engineering

For systems built around language models or other learned components, “correctness” in the classical sense basically dissolves. You’re not asking “does this always produce the right output?” You’re asking “does this produce acceptable outputs often enough, and does it fail gracefully when it doesn’t?” This is a completely different discipline — closer to quality control in manufacturing than to traditional software engineering. You monitor distributions, you red-team, you set guardrails.

The Real Skill Shift

Here’s what ties all of this together, and why it matters for anyone studying CS right now.

Each of these layers requires a different conceptual vocabulary. Formal verification requires understanding logic and type theory. Simulation-based verification requires probability and control theory. Probabilistic software requires statistics and an intuition for distributions. Agent-driven testing requires understanding state machines and adversarial thinking.

The future programmer isn’t just someone who knows how to write code. They’re someone who can look at a component of a system and ask: what does “correct” mean here, and what’s the right tool for verifying it?

That’s a much more intellectually demanding job than memorizing syntax. It’s also a much more interesting one. It sits at the intersection of mathematics, philosophy, and engineering in a way that “write a for-loop” never did.

What This Means If You’re Learning Now

If you’re a CS student, the temptation is to focus on whatever’s hot — right now that’s probably LLMs and AI applications. And that’s fine. But the students who are going to have the most leverage in 10 years are probably the ones who also took their logic course seriously, who got curious about type systems, who wondered what Lean was about when they stumbled across it.

The abstraction levels are rising. The day-to-day implementation of software is getting automated. What’s left — what remains irreducibly human — is the judgment about which model of reality applies to the problem in front of you.

That’s worth preparing for.


This post grew out of a conversation about formal verification, the future of programming paradigms, and what it means to know that software is correct. We think these questions deserve more attention than they get.