July 18, 2006
YAGNI
Since some requirements are bound to change over time, Big Design Up Front (BDUF) can end up being a waste of time.
Another problem with BDUF is that it can be overly complicated (mentioned in my "7 Deadly Sins of Design") and/or "goldplating". The balancing force on the road to Just Enough Design Up Front is the "You Ain't Gonna Need It" (YAGNI) principle.
I have to admit my take on YAGNI is a little different from the eXtreme Programming principle:
Always implement things when you actually need them, never when you just foresee that you need them.
I think that there are things that you know you going to need and that are hard to add later on (for example, if you design object for local use and then later you suddenly decide they should reside on separate tiers). However, these thing are relatively few and it is well worth your time thinking whether you know you going to need something or you just foresee it and if the thing being designed (or coded) is something that would be easy to add later or not. When something can be added later just as easily it is better to postpone it unless it is needed right now.
*I'm wondering if I'll manage to blog about all the acronyms before I retire :-)
Posted by Arnon Rotem-Gal-Oz at 05:33 AM Permalink
|