You Ain't Gonna Need It != You Shouldn't Consider It

While I applaud the general move towards pragmatic over all encompassing architectures (e.g. REST over WS-DeathStar), it’s worth noting that the often invoked acronym YAGNI, You Ain’t Gonna Need It, does not mean You Shouldn’t Consider It.

That is, when deciding that a particular part of the architecture doesn’t need to be as complicated as some might think, you need to at least justify in detail your reasoning on this point – It’s NOT enough to just say YAGNI and be done with it. In architecture documents I want to see that the ramifications of certain decisions have at least been considered and can be explained, rather than seemingly deemed to hard and thus not worthy of even any thought.

A good quote from Code Complete (Steve McConnell, p.45 of 2nd edition): “One review of design practices found that the design rationale is at least as important for maintenance as the design itself”. That is to say, we want to know why you thought it wasn’t worth spending more time on a particular part of the system, and then we don’t have to assume you’re an idiot!