Isha Dewangan
← all thoughts

why i build small

1 min readengineering

I used to start projects by drawing the whole thing first. Every folder, every abstraction, every edge case I could imagine. It felt productive. It was mostly procrastination with a diagram.

the smallest thing that works

Now I write the version that barely works, and I ship it. This site is a good example. It started as one page with my name on it. No blog, no tags, no mascot. Just a name on a cream background.

Everything since has been one small step on top of something that already ran.

why it holds up

The trick is that a working thing tells you the truth. A diagram doesn’t. You find out that the abstraction you were so proud of has exactly one caller, and that the edge case you spent an hour on never happens.

# the version I would have written first, planning for callers who never came
class ThoughtRepository(Generic[T]):  # T bound to Persistable
    def __init__(self, adapter: StorageAdapter[T]) -> None:
        self._adapter = adapter


# the version that actually shipped
posts = list(Path("content/thoughts").glob("*.md"))

The second one is not clever. That’s the point. I can read it in six months without reconstructing what past me was worried about.

the part that’s hard

Building small means showing people things that aren’t finished, which I still find uncomfortable. But an unfinished thing that exists beats a perfect thing that’s still a diagram in my notes app.

Start small. Keep it running. Add one thing.