// Start simple · lesson 03

YAGNI, or building for the load you actually have

There's an old engineering rule that got a lot more dangerous in the AI era: you aren't gonna need it. It says build for the requirement in front of you, not the one you imagine might show up someday. It matters more now because AI makes it cheaper than ever to build the thing you didn't need, which means it's easier than ever to bury yourself in speculative machinery.

The pattern looks responsible from the inside. You can see the whole future system in your head, so you start building for it, including the parts nothing is actually asking for yet. The scaling layer for traffic you don't have. The plugin architecture for the one plugin that exists. The abstraction for the second use case that may never arrive. It feels like foresight. It's usually just complexity you took on early and will service indefinitely, for a future that may look nothing like you guessed.

Why is speculative complexity worse than it looks?

Because it rots. Code written for a use case that doesn't exist yet can't be tested against reality, so it drifts out of sync with what you actually end up needing, and when the real requirement finally arrives it rarely matches the shape you guessed. Now you have two problems: the real feature to build, and the speculative machinery to work around or tear out first. You'd have been faster building nothing and adding it when the need was concrete.

The tell is simple. If you're building infrastructure for a load you don't have and a use case you can't point to, you're building on spec, and building on spec is how you end up with a beautiful system that does nothing.

The discipline

Build for what's real right now, and trust yourself to add the rest when it becomes real. The simple version teaches you what the complex version actually needs to be, and that lesson is worth more than any amount of guessing. Rebuilding a simple thing you understand is cheap. Untangling a premature abstraction is not.

The takeaway: build for the load you have, not the one you imagine, because speculative complexity rots and the real requirement rarely matches the guess. Add it when it's real, not before.