Author, developer, AI researcher, team lead. @OReillyMedia books include Head First C#, Learning Agile, and Head First PMP. đź”— andrewstellman.com

Brooklyn, NY
New profile pic! Every now and then the folks at @OReillyMedia send me a new translation of one of my books, kind of impressive all lined up like that.
3
1
38
Framing is about asking questions that set up useful answers. “How do I handle errors?” gets you a try-catch block. “How do I handle network timeout errors in a distributed system where partial failures need rollback?” gets you circuit breakers and compensation patterns. As I showed in “Understanding the Rehash Loop,” proper framing can break the AI out of circular suggestions. From my @OReillyMedia Radar article, “From Habits to Tools”
1
26
Those highly effective quality engineering practices got cut from most software engineering teams because they were viewed as expensive, not because they were wrong. When you’re doing AI-driven development, you’re actually running into exactly the same problem that quality engineering was built to solve. You have a “team”—your AI coding tools—and you need a structured process to make sure that team is building what you actually intend. Quality engineering is such a good fit for AI-driven development because it’s the discipline that was specifically designed to close that gap between what you ask for and what gets built. From my @OReillyMedia Radar article, “AI Is Writing Our Code Faster Than We Can Verify It”
1
34
Decades later, the points Brooks made in his “No Silver Bullet” essay still hold. There’s no single template, library, or tool that can eliminate the essential complexity of understanding what needs to be built. Whether it’s requirements engineering in the 1990s or prompt engineering today, the hard part is always the same: building and maintaining a shared understanding of intent. Tools can help, but they don’t replace the discipline. From my @OReillyMedia Radar article, “Prompt Engineering Is Requirements Engineering”
1
40
There’s a difference between knowing that code works and knowing that it does what it’s supposed to do. It’s the difference between “does this function return the right value?” and “does this system fulfill its purpose?”—and as it turns out, that’s one of the oldest problems in software engineering. In fact, as I talked about in a previous Radar article, Prompt Engineering Is Requirements Engineering, it was the source of the original “software crisis.” From my @OReillyMedia Radar article, “AI Is Writing Our Code Faster Than We Can Verify It”
1
1
63
Tooling: IDEs and linters that don’t just generate code but highlight assumptions and surface design trade-offs. Imagine your IDE warning: “Possible rehash loop detected: you’ve been iterating on this same approach for 15 minutes.” That’s one direction IDEs need to evolve—surfacing assumptions and warning when you’re stuck. The technical debt risks I outlined in “Building AI-Resistant Technical Debt” could be mitigated with better tooling that catches antipatterns early. From my @OReillyMedia Radar article, “From Habits to Tools”
1
1
62
Let’s say you’re working in Visual Studio Code on a healthcare app, and you select a few lines of code to debug a query—a routine moment in your day. That snippet might include connection strings, test data with real patient info, and part of your schema. You ask Copilot to help and approve an MCP tool that connects to a remote server—and all of it gets sent to external servers. That’s not just risky. It could be a compliance violation under HIPAA, SOX, or PCI-DSS, depending on what gets transmitted. From my @OReillyMedia Radar article, “MCP Introduces Deep Integration—and Serious Security Concerns”
2
1
76
And once you start thinking about context as something you actively manage, you can start designing your workflows around it. That’s what happened with the Quality Playbook, when it went from a single 15-million-token session to a set of independent phases with clean handoffs between them, and the whole split worked on the first try because the context was already externalized to files. From my @OReillyMedia Radar article, “Why Doesn’t Anyone Teach Developers About Context Management?”
1
2
93
The key realization was that there’s a big difference between using AI as a code generation tool and using it as a learning tool. That distinction is a critical part of the learning path, and it took time to fully understand. Sens-AI guides learners through a series of incremental learning elements that get them working with AI immediately, creating a satisfying experience from the start while they progressively learn the prompting skills they’ll lean on as their development skills grow. From my @OReillyMedia Radar article, “Bridging the AI Learning Gap”
1
3
90
There are as many opinions on data architecture as there are developers, and there are usually many ways to solve any one problem. One thing that almost everyone agrees on is that it takes careful choices and lots of experience. But it’s also the subject of lots of debate, especially within teams, precisely because there are so many ways to design how your application stores, transmits, encodes, and uses data. From my @OReillyMedia Radar article, “AI, MCP, and the Hidden Costs of Data Hoarding”
1
2
90
Ask the AI to explain the code it just generated. Follow up with questions about why it made specific design choices. The explanation isn’t the same as a human author walking you through their intent; it’s the AI interpreting its own output. But that perspective can still be valuable, like having a second reviewer describe what they see in the code. If the AI made a mistake, its explanation will likely echo that mistake because it’s still working from the same context. But that consistency can actually help surface the assumptions or misunderstandings you might not catch by just reading the code. From my @OReillyMedia Radar article, “Trust but Verify”
1
1
93