This is a little post on my thoughts about project management. I bear complete responsibility for overuse and misuse of commas and any rambling.

There is a well used metaphor that building a website, or any IT based development project, can be thought of as building a house.

You find an architect, they make some plans, you then find a structural engineer - who immediately says that you can't hang a chandelier from that wall, and that you need reinforcement beams here, here and here. You then find some builders and they sort it out, you'll occassionally come back to look at it in progress.

Development is just the same, a client will decide what they need, grab one of us and together we will decide what sort of solution they want; what it must do and nice-to-haves.
We will talk to a Designer about this and the designer will create a few ( or a lot !) of designs detailing what this lovely website needs to look like.
Fortunately, we'll have already added the reinforcement beams !

By now we'll have created a functional spec, just like the blueprints for a house - almost.
How many floors does the house need, which room is which - where does the water need to go and more importantly how does it get there.

By the way, in this model the foundations for the house are provided ready dug by whichever CMS we are using, our usual is Sitecore or Umbraco.
We may need to add a little extra for the finishing touches, but the brunt of the work is already done by them.

Now we get to building, in some large projects, there is a tendency to split a project into pieces, we call them phases.
These phases make development, testing and review quicker and easier; There is far more focus on a smaller piece of work, and issues are easier to fix the earlier they are caught.

However, the blueprints for a house wouldn't say build the first floor and we'll go on from there, if they did then every house would start life as a bungalow.
It's almost the same for web development projects, we know there's going to be a second floor, however we also need to know which walls are load bearing.
The less detail there is about the second floor, the less certain you can be that the first floor is correct. Also, if you change your mind and do want that floating staircase then the floors are going to need to be altered, the walls strengthened, you get the idea.

Hopefully, if you're building a website, you have all the blueprints, otherwise you'll find yourself rebuilding a few walls because they need to bear load, or a water pipe needs to go right there.

If this entire model holds up under scrutiny, then the later enhancements to the site could be thought of as garden remodelling and extensions.. maybe a patio?
This means that hopefully the extras that need to be added don't depend on the first floor and can be added without rebuilding anything.
Sometimes that isn't the case, but we try to avoid that, and if not make sure that the client is aware that the second floor may get a bit dusty.

At Mayfly, I'm one of the team of people who add the conservatories to your websites, I also occassionally paint a few walls if it's looking a little worse for wear.
When I'm not building other peoples houses, I build my own games, and let me tell you, arcades have exactly the same issues as houses.