Dev reflection - January 31, 2026
Duration: 6:21 | Size: 5.82 MB
Hey, it’s Paul. January 31st, 2026.
I’ve been thinking about what happens when your tools start asking better questions than you do.
Here’s what I mean. I’ve been building autonomous development systems—tools that can take a product vision and break it down into roadmaps, tasks, priorities, implementation. The whole cycle runs without me except when something gets flagged as high-stakes. Yesterday, I tried to use one of these tools on a project that’s been shipping features for months. The tool refused to run. Not because it was broken. Because it couldn’t find any documented product principles to align against.
The project had been shipping. Features were going out. Work was happening. But when I asked the system “what should we focus on this quarter?”, it said: “I can’t answer that. You haven’t told me what you’re trying to accomplish.”
That’s not a technical failure. That’s a diagnostic.
Most organizations operate exactly like this project. Work happens. Features ship. Decisions get made. But ask “what principles guided that decision?” and you get silence, or worse, post-hoc rationalization. The strategy exists in someone’s head, or it existed six months ago in a slide deck nobody references, or it never existed at all—just momentum dressed up as intention.
Humans are good at working around this ambiguity. We fill in the gaps. We make assumptions. We ship things that feel right without articulating why. It works, mostly, until it doesn’t. Until you realize you’ve been optimizing for the wrong thing. Until two teams discover they’ve been working toward contradictory goals. Until someone asks “why did we build this?” and nobody can answer.
The autonomous system can’t work around that ambiguity. It needs explicit principles to validate against. That constraint—which felt like a limitation at first—turns out to be the feature. The tool forces the conversation you’ve been avoiding.
I saw this with another project yesterday. The documentation claimed the product was “primarily a thinking tool for personal use.” But when I tried to build a roadmap, the actual goals that came out were about audience growth, book sales, speaking opportunities. The documentation was lying. Not maliciously—defensively. It was protecting against the disappointment of trying to build an audience and failing. But that defensive positioning made strategic planning impossible. You can’t optimize for audience growth while pretending the primary user is yourself.
The tool surfaced that lie by making me answer questions I’d been avoiding. What are we actually trying to accomplish? Who benefits? What does success look like? These aren’t technical questions. They’re the questions every organization struggles with. Most of us have gotten very good at not answering them directly.
Here’s the thing about autonomous systems that applies way beyond software development. The value isn’t in automating routine tasks—that’s just scripting. The value is in automating decision validation. Making implicit criteria explicit. Forcing consistency where humans would drift.
Think about how decisions actually happen in most organizations. Someone makes a call based on experience, intuition, context they’re carrying in their head. Maybe it’s the right call. Maybe it contradicts something decided last month. Maybe it aligns with stated strategy, maybe it doesn’t. Nobody checks because checking is expensive and the decision already happened.
Now imagine every significant decision had to reference documented principles. Not as bureaucratic overhead—as active validation. Does this align with what we said we’re trying to do? Is there precedent? What are the tradeoffs? The decision still gets made by humans, but the criteria become visible, traceable, challengeable.
That’s what these tools are doing for my development work. Watching them operate has revealed something uncomfortable: a lot of what I thought was strategic clarity was actually just momentum. I was shipping features without asking whether they connected to anything larger. The system forced me to articulate connections I’d been assuming.
The same pattern showed up in testing. One project has zero automated tests. Features work in production, mostly, until they don’t. Regressions appear randomly. Another project has tests, but they were built on assumptions that broke when we changed how the database generates IDs. The tests passed locally, failed in production-like conditions, and the gap revealed that tests weren’t actually testing what we thought they were testing.
Both cases are about implicit assumptions becoming explicit. “Last record means most recently created”—true when IDs are sequential, false when they’re random. Nobody documented that assumption because it felt obvious. Until it wasn’t.
This is the work that planning reveals. Not the work you thought you were going to do—the work of understanding what you’ve actually built, what assumptions you’re relying on, what would break if those assumptions changed.
I spent ninety minutes yesterday planning what was supposed to be a simple file reorganization. Thirty minutes in, the exploration revealed that the files I was planning to move were actually legacy code that should be deleted. A parallel system had replaced them months ago. The spec said “move these files.” Reality said “these files shouldn’t exist.”
Ninety minutes of planning that saved days of implementing the wrong thing. But it only worked because the process forced systematic exploration before execution. Left to my own devices, I would have started moving files and discovered the problem mid-stream, with half the work done and momentum pushing toward completion rather than correction.
So here’s the question I’m sitting with: What would it look like to build this kind of decision validation into how we work, not just how we write code?
Not more process. Not more meetings. Not documentation that goes stale the moment it’s written. But active systems that query your stated intentions and flag when your actions diverge from them. Tools that refuse to proceed until you’ve answered the questions you’ve been avoiding.
It sounds constraining. It is constraining. But the constraint is the point. The system that asks “what are you actually trying to accomplish?” before letting you plan the quarter isn’t slowing you down. It’s preventing you from efficiently pursuing the wrong thing.
The window for this kind of clarity work is smaller than we think. Once you’re moving fast, stopping to question direction feels like waste. The momentum becomes self-justifying. We shipped features, therefore we’re making progress, therefore the strategy must be working.
The tools don’t care about your momentum. They just ask: does this connect to what you said matters?
That’s where I’m ending today. Not with an answer, but with that question sitting in my work. What would it mean to build systems—technical or organizational—that actively validate alignment between what we say and what we do?
Something to think about.
Featured writing
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Busy is not a state
We've built work cultures that reward activity, even when nothing actually changes. In technical systems, activity doesn't count—only state change does. This essay explores why "busy" has become the most misleading signal we have, and how focusing on state instead of motion makes work more honest, less draining, and actually productive.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Books
The Work of Being (in progress)
A book on AI, judgment, and staying human at work.
The Practice of Work (in progress)
Practical essays on how work actually gets done.
Recent writing
Dev reflection - January 30, 2026
So here's something that happened yesterday that I'm still thinking about. Seven different projects—completely unrelated work, different domains, different goals—all hit the same wall on the same d...
Dev reflection - January 29, 2026
So here's something I've been sitting with. You finish a piece of work. You ship it. Everything looks good. And then production starts teaching you that you weren't actually done.
Dev reflection - January 28, 2026
So here's something I've been sitting with lately. There's this gap—a subtle one—between a system that's running and a system that's actually working. And I don't mean broken versus not broken. I m...
Notes and related thinking
Dev reflection - January 30, 2026
So here's something that happened yesterday that I'm still thinking about. Seven different projects—completely unrelated work, different domains, different goals—all hit the same wall on the same d...
Dev reflection - January 29, 2026
So here's something I've been sitting with. You finish a piece of work. You ship it. Everything looks good. And then production starts teaching you that you weren't actually done.
Dev reflection - January 28, 2026
So here's something I've been sitting with lately. There's this gap—a subtle one—between a system that's running and a system that's actually working. And I don't mean broken versus not broken. I m...