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:
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.