I was explaining “YAGNI” (You Aren’t Gonna Need It) to someone recently and I wanted to send them an XKCD cartoon which I think sums it up, but I couldn’t find it. Well, just so I have it handy next time, here’s the cartoon:
I find that when someone's taking time to do something right in the present, they're a perfectionist with no ability to prioritize, whereas when someone took time to do something right in the past, they're a master artisan of great foresight.

In case it’s not clear from the cartoon (which is called “The General Problem“), the idea is only to develop (design, document, code, whatever the verb is) enough to address the current requirements – you don’t know if there’s a future need, so how can you try to address it without making the current solution generic and unwieldy? And of course there’s a chance that the imagined future requirement won’t be exactly how you picture it, or just now exist at all, in which case your carefully crafted generic work is largely waste. Meet the current requirements and try not to paint yourself into a corner, but don’t worry about the future until you get there.

Related Post


I got a package from IBM a few days ago but forgot to post about it (until now). It’s a shiny metal tin (about 6″ x 6″ x 1.5″) containing