Build a *minimally functional* app based on client specs. Plan to throw it away; you will anyway.
Not even Brooks believes that any more.
In fact, near the end of The Mythical Man-Month's 20th-anniversary edition, Brooks acknowledges that his advice to "build one to throw away" sounds suspiciously like "make sure the one you keep suffers from the second-system effect", since it's going to be the second system you build. :-)
Non-dogmatic refactoring has worked well for me. Don't feel obliged to reuse code that sucks, but don't feel obliged to throw it out just because Brooks said so in the 1970s, either.
(While we're at it, why stop at three steps?)