I am not a big fan of YAGNI, and I have stated it inmany occasions.  In so doing, I am in disagreement with most of the XP crowd, including Martin Fowler, who says:

You don’t want to spend effort adding new capability that won’t be needed until a future iteration. And even if the cost is zero, you still don’t want to it because it increases the cost of modification even if it costs nothing to put in.

Interestingly, in a recent entry, Martin is now praising what is called a "humane interface":

The obvious contrast to a minimal interface is that humane interfaces tend to be much larger, and indeed humane interface designers don’t worry too much about the interface being big.

Humane Interfaces clearly violate both YAGNI and the "do the simplest thing that could possibly work" principle, so I’m quite happy to see them gaining traction.  For these same reasons, you can expect XP advocates to come out strongly against the idea of Humane Interfaces (and Elliote is leading the charge), which probably guarantees that they will become mainstream in no time 🙂

By the way, Elliote, nobody writes list.get(list.size() - 1) any more:  we all have a method in a helper class somewhere and we invoke it everywhere we need it.  Wouldn’t it be nice if that method were included in the List class?

Now, can we please have java.io.File#readFile() that reads an entire file in a String so we don’t have to rewrite it over and over, like I just did this morning?