UniText - Tmp

The Magic Launcher Paradigm: Addendum 14

Gap-Driven Development: The Missing Design Primitive

The Missing Question

Every design meeting starts with solutions. Features. Integrations. Roadmaps.

Nobody asks: "What's the gap?"

What Is A Gap Statement?

A gap statement identifies what's actually missing. Not what would be nice. Not what competitors have. What's MISSING.

Good gap statements:

Bad gap statements:

The Papering Problem

Most software doesn't close gaps. It papers over them.

Papering: Adding layers on top of problems instead of solving them.

Example - The Notification Gap:

The gap never closed. It just got wallpaper.

Real-World Papering

Kubernetes:

JIRA:

Slack:

Gap-Driven Development Process

1. Identify the gap (one sentence max)

2. Verify it's real (not invented or aspirational)

3. Define minimum closure (what makes the gap gone?)

4. Build only that

5. Stop

That's it. That's the entire methodology.

The Stop Sign

The hardest part is step 5: STOP.

How to know when to stop:

Examples from ML-Extras

MLTimer:

MLView:

MLSticky:

Each tool stops exactly when its gap closes.

The Feature Request Test

When someone asks for a feature:

1. "What gap does this close?"

2. "Is it the same gap as our gap statement?"

3. If no: "That's a different tool"

4. If yes: "Does the gap already closed?"

5. If yes: "Then we're done"

Anti-Patterns

The Moving Gap:

The Invented Gap:

The Meta Gap:

The Competitive Gap:

Why Gaps Get Papered Instead of Closed

1. Unclear gap definition - Can't close what you can't define

2. Scope creep - Today's feature is tomorrow's platform

3. Job security - Closed gaps don't need teams

4. Marketing - "New features!" sells; "Still works!" doesn't

5. Misaligned incentives - Promoted for adding, not removing

The Magic Launcher Example

Gap: "I want to click and launch things"

What we DIDN'T add:

What we added:

Gap closed. Development stopped.

Gap Statements for Teams

In design meetings, require:

1. Written gap statement (one sentence)

2. Evidence the gap exists (user complaints, observed behavior)

3. Definition of closure (when is it closed?)

4. List of non-gaps (what we're NOT solving)

Template:

Gap: [Users cannot X]
Evidence: [Observed/reported by Y]
Closure: [Users can X via Z]
Non-gaps: [We are not solving A, B, C]

The Composition Solution

Instead of papering, compose:

Bad (papering):

Good (composition):

Each tool closes ONE gap completely.

The Economic Argument

Papering costs:

Gap-closing saves:

The User Argument

Users don't want features. They want gaps closed.

The Developer Argument

Developers prefer:

Case Study: The Terminal Gap

Gap: "I can't see what my script is outputting"

Solution A (papering):

Solution B (gap-closing):

The Test Suite

Before building, ask:

1. Can I state the gap in one sentence?

2. Can I define when it's closed?

3. Am I solving THIS gap or creating others?

4. Will my solution need its own solutions?

5. Can I compose existing tools instead?

If any answer concerns you, you're about to paper.

Conclusion

Gap-Driven Development isn't a methodology. It's a question: "What's the gap?"

If you can't answer in one sentence, you don't understand the problem.

If your solution creates new gaps, you're papering.

If you keep adding after the gap closes, you've become the problem.

The discipline isn't in what you build. It's in what you don't.


"Every feature is either closing a gap or creating one. There is no middle ground."

Remember: The next time someone says "We need to add...", ask "What gap does that close?" Watch the room go silent. That silence is the sound of papering being prevented.