One of the core practices of eXtreme Programming. DTSTTCPW can be very hard to achieve, even though at first it sounds so simple. (Pun intended...)
It can be especially difficult for experienced engineers who have learned all about good object-oriented design, design patterns, and have the natural tendency to overengineer everything to force themselves to sometimes choose a simpler but less elegant solution.
The practice is similar to lazy evaluation: "If you don't need it right now, don't do it because you 'might' need it later. And then if you don't need it, you didn't waste that time."
Deferring the costs of developing something can also pay off, as in lazy evaluation because you can get more done now, and when things change, and they will change (embrace change!), you won't have wasted time pursuing the wrong things.