I think it's deeper than that, once you know software is never done you have to design for constant change.
When clients ask why something takes so long, I explain that I'm not building what you asked for today, I'm building something that will be easy to turn into what you asked for today and possible to turn into whatever you ask for tomorrow.