Day one back in a classroom — what beginner's mind feels like at 45
AI
Returning to the classroom at 45 to learn AI fundamentals shattered my expert intuition. I learned that the future of durable architecture is a hybrid model.
The fluorescent lights hummed a tune I hadn't heard in two decades. I was sitting in a lecture hall, the oldest person in the room by a comfortable margin, with a notebook that felt alien in my hands. For 25 years, my job has been to have the answers—to sketch the architecture and see the failure modes. But here, wrestling with the calculus behind backpropagation, I was a complete beginner again.
It's a jarring feeling. The muscle memory from a thousand shipped projects becomes irrelevant. And that, I realized, was the entire point. In an industry defined by platform shifts, the most dangerous state is the illusion of mastery.
The Brittle Comfort of Abstraction
As architects, we live on a mountain of abstractions. It’s how we move fast. I trusted the black boxes underneath me because I had, at some point, built similar ones. My intuition for database deadlocks or queue failure modes was earned. But the new wave of AI is built on a different foundation: not just logic, but mathematics. Probability theory, linear algebra, calculus.
Sitting in that classroom, I wasn't just learning a new skill. I was confronting the fact that my hard-won intuition was not just incomplete, but often wrong for this new paradigm. To go deeper, I had to go back to the source. For anyone wanting to do the same, there is no better starting point than Michael Nielsen’s free online book, Neural Networks and Deep Learning, which explains the fundamentals with more clarity than any textbook I've seen.
From If-Then to a Validated Probably
The core mental shift is moving from deterministic to probabilistic systems. My career was built on code that produces the same output for the same input. Bugs are deviations. LLMs are different. Their output is a probability distribution, not a single correct answer. Their failure modes are not clean exceptions, but plausible-sounding hallucinations that can poison a downstream process.
You can't just put a try/catch block around it. For example, imagine a system where an LLM parses unstructured support emails to create a structured ticket. A user might write "I can't log in and my last order #G-12345 seems to be missing." The agent might correctly extract the "login issue" intent and the order number.
But it could also hallucinate a "high-priority" flag because the user sounds frustrated. If your deterministic backend blindly accepts that flag, you've just allowed a probabilistic guess to trigger a real-world escalation. The fix isn't to get a better model; it's to build a better boundary. The LLM's output must be treated as an untrusted proposal, immediately cast into a strict Pydantic model or JSON schema that validates every field, data type, and enum. The agent proposes; a deterministic validator disposes.
The Architecture of Containment
This beginner's mindset forces an intellectual honesty that leads to better architecture. Once you accept you cannot guarantee the model's output, you stop trying to fix the model and start building robust containers for it. This pattern of containment—using LLMs for what they excel at and fencing them in with predictable code—is the most durable one I've found.
It’s an idea that resonates with the work of practitioners like Andrej Karpathy, who has talked about building a new kind of "LLM Operating System". The concept is the same: the non-deterministic LLM is the kernel, but its power is only safely harnessed through a surrounding scaffold of deterministic tools, memory, and validation. The real architectural work is at these seams, defining the contracts between the probabilistic and the predictable.
My old intuition would have tried to build a complex chain of prompts to "force" the right behavior. The beginner's mind, fresh from the math, sees that as a fool's errand. Instead, you let the LLM do the fuzzy part, then immediately snatch control back for the rigid, deterministic workflow.
What I'm Building With Now
That uncomfortable return to the classroom recalibrated my sense of what an architect does. I don't need to be a machine learning researcher, but I do need to understand the fundamental properties of my building materials. Being a beginner again was the necessary step to designing systems that won't fall over at 3am.
These are the principles I'm applying now:
- Isolate the chaos. Every LLM call is a liability. Confine it to a specific, single-purpose function and assume its output is untrustworthy until proven otherwise by your own code.
- Define a strict data contract at the boundary. The handoff from a probabilistic LLM to your deterministic system is the most critical part of the architecture. Use a rigid schema (JSON Schema, Pydantic, etc.) to validate structure, types, and values. If the output doesn't conform, it's rejected.
- Use deterministic logic for control flow. Never let an LLM decide which business process to run next. An agent can suggest the next step, but a state machine or a simple
if/elseblock in your code should make the final decision.
Expertise is valuable, but it's also a trap. In a field that reinvents itself this fast, the humility to become a beginner is the most important tool we have.