Minor discussion branch from YouArentGonnaNeedIt.
After reading YouArentGonnaNeedIt, and some of its child topics, I wonder if some of the debate is about doing things right, versus doing the right thing.
For example, you decide what features to implement based on current user needs. This is "doing the right thing" (at least according to the supporters of XP). Assuming you have decided to do something, you then have an obligation to "do the thing right." I'm specifically thinking of the Y2K question here. If you decide you're going to date arithmetic, then you should do it correctly (including centuries, leap years, etc.).
This leaves a couple of questions in my mind. First, it seems to me there are times when it is hard to tell the difference between doing the right thing, and doing the thing right. If I were writing a space flight simulation, a physics model incorporating AlbertEinstein's theories of relativity and gravity would probably not be necessary -- a simple Newtonian model might do. On the other hand, if I am writing the control systems for an interstellar probe designed to reach relativistic speeds, I should use AlbertEinstein's model. Methodologically speaking, how does one ensure the right decision is made? Obviously if I do choose to use the simpler model, I still have an obligation to implement it correctly. So was Y2K caused by selecting a (overly) simple model, or implementing a model incorrectly?
The second question in my mind is "If Y2K is an example of a YouArentGonnaNeedIt fallacy, how would other methodologies prevent it?" Having been involved in some projects that made decisions about year representations, I know that we weren't following XP, but we still decided we didn't need to worry about the century. So if other methodologies are no better at preventing Y2K, is Y2K a valid criticism of the XP methodology?