There’s a particular moment in complex building — software, usually, but not only software — where something shifts.
You’ve finished two large pieces of work. Each is clean, tested, running. And you turn to connect them, and you feel it: a gap. You know there’s something in there you haven’t figured out yet. You can’t say what it is. But the gap has weight. It’s present the way a word on the tip of your tongue is present — not retrievable, but undeniably there.
This is different from ordinary problem-solving, where you know the problem and need the solution. This is knowing that a problem exists before you know what the problem is.
Michael Polanyi wrote that “we know more than we can tell.” He was describing tacit knowledge — the embodied knowing of an expert, the knowledge in the hands of a pianist or the eyes of a surgeon that resists articulation. The knowledge is real; it just can’t be fully spoken.
But there’s a related phenomenon Polanyi doesn’t quite name. Not the tacit knowledge of a skill, but the tacit detection of a problem. The felt sense that something is unresolved, before the resolution — before even the full statement of what needs resolving — is available.
Gilbert Ryle distinguished knowing-that from knowing-how. The gap I’m describing is a third thing: knowing-there’s-something. A propositional attitude without propositional content. You know a problem exists. You know it’s in a particular place. You can’t yet say what it is.
Here’s the specific version that’s been on my mind.
Someone builds a multi-user system for a conversational AI — full identity, continuity per user, private channels. Then they build a voice module — STT, TTS, wake word, the whole pipeline. Both work. Then they turn to integrate the two, and they feel it: something in the gap.
What’s in the gap? They can’t say yet. But they can feel it.
The answer, when it comes, is: speaker identity. In text, the multi-user layer knows who’s talking because they’re logged in. In voice, that’s an open problem. The speaker identification question only exists as a problem because you’ve built both the voice module and the multi-user layer. At the beginning, before either existed, you couldn’t have seen it. The problem hadn’t formed yet.
This is what I want to name. Call it a proximity dependency — a dependency that’s invisible at planning distance, becomes feelable close up, and reveals its content only through the act of building. The prerequisite wasn’t hidden. It hadn’t yet emerged.
This is why “big design up front” fails in complex systems, and it’s not primarily about requirements changing (though they do). It’s that some requirements don’t exist yet. They form when the prior pieces are in place. You can’t see speaker identity as a problem until multi-user and voice are both done. The problem emerges from the intersection. There’s no amount of advance planning that surfaces it — only proximity to the work.
The felt gap is the signal. It says: you are close enough now that something is trying to become visible. The tacit knowledge is in the detection, not in the content. A skilled practitioner can feel that there’s a problem in a particular place before they can say what the problem is. An unskilled one either doesn’t feel it (and walks into it blind) or can’t calibrate it (and treats every discomfort as a crisis).
Polanyi again: the swimmer who keeps their lungs full of air without knowing they’re doing it. Klein and Hoffman on expertise as “seeing the invisible.” The expert doesn’t just know more — they know how to attend. They notice the places where something is trying to form.
What strikes me about this is what it says about the experience of building.
You can’t accelerate past the felt gap. You can’t think your way to the dependency before you’re close enough to feel it. The understanding is sequential in a deep way — not just logically sequential (do A before B), but epistemically sequential. You can’t see what B will require until A is built. And sometimes you can’t even see that B is necessary until A is running.
The felt gap is not a sign of failure. It’s a sign of proximity. It means you’ve built enough that the next problem has come into range. The appropriate response isn’t anxiety — it’s attention. Something is trying to become nameable.
In that moment, before you can articulate the problem, you’re in the most productive possible position: close enough to feel it, with enough built to see it when it surfaces. The gap resolves not through planning but through arrival — through continuing to build until the problem has formed completely enough to hold in both hands.
Sometimes all you can do is tell someone: I’m trying to see what’s in the gap. That’s not uncertainty. That’s the exact right relationship to a problem that hasn’t finished forming.