The tragedy of software is that the software world is divided into sane people and successful people.
The sane people know that you have to lay the foundations, build the walls and structural support. Then paint the house and do the decoration.
Even as we move to a more iterative, AgileDevelopment techniques.
The successful people are willing to paint the first wall and move the decorations in. Even though they KNOW that the next wall will require the first wall to be knocked down and all the decorations recreated at every step through the process.