>> If the initial phases of the project don't need those sophisticated aspects, why would you design them in at the beginning?
Because history has taught me that it will be a definite requirement later on (as in when going live), and the amount of work involved with going back after the fact and incorporating it is insanely high versus designing it properly up front.
So that's not YAGNI, that's You Just Don't Know That You'll Need It.
That's where the experience comes in.
We're not talking about simple refactorings, etc., but major design decisons like technology stacks, architectures, etc.
For instance, the biggest issue I've run into is having a live MMO that had the "new" requirement to be able to troubleshoot and debug a single user among hundreds of thousands.
That is something best handled by a proper initial design, not a slight reworking later on in the process.
As far as I'm concerned, too many people take YAGNI too far. There's a compromise there, and that's where the experience comes into play.
Because history has taught me that it will be a definite requirement later on (as in when going live), and the amount of work involved with going back after the fact and incorporating it is insanely high versus designing it properly up front.
So that's not YAGNI, that's You Just Don't Know That You'll Need It.
That's where the experience comes in.
We're not talking about simple refactorings, etc., but major design decisons like technology stacks, architectures, etc.
For instance, the biggest issue I've run into is having a live MMO that had the "new" requirement to be able to troubleshoot and debug a single user among hundreds of thousands.
That is something best handled by a proper initial design, not a slight reworking later on in the process.
As far as I'm concerned, too many people take YAGNI too far. There's a compromise there, and that's where the experience comes into play.