
Beware of Future Creep - Xichekolas
http://www.37signals.com/svn/posts/1324-beware-of-future-creep
======
smoody
_"At best, your 'foresight' can result in wasted time, where you spun your
wheels for a few hours (or days!) playing 'what if' and 'let’s pretend',
trying with too little information to think of how best to architect your code
to accommodate that future feature."_

Actually, at best, your time was _not_ wasted, your advanced-planning allowed
you to be more agile down the road, and you saved the day. Don't be fooled
into thinking that Jamis' 'best case' is everyone's best case. It's certainly
not mine.

It's true that some people go overboard when it comes to thinking about future
features they might need (guilty as charged...when I was younger). But, like
anything and everything else, it's a skill. You do it, you make mistakes, you
learn from mistakes.

What have I learned? Mostly I've learned how and where to focus my time
thinking about future features -- determining which features are wheel-
spinning features and which are likely to come to fruition. That skill comes
with experience.

At a practical level, I've learned to carefully plan-out the hooks I'll need
to implement likely future features. I don't implement the features, but I
make sure I've thought through the API to get me there even if there's nothing
behind it yet. Even that takes time, of course, but if properly focused, that
time is time well spent. In many cases, it's well spent simply because it
helps me to get back to the job at hand. :-)

