I'm stuck in an airport lounge in Texas, waiting for some weather to clear so I can go home. I had a conversation today with a colleague about what makes projects late (not usually weather).
Our conversation centered around scope creep. Because projects take so long, end users ask for a lot of requirements because they don't think they'll have a chance to get anything else once the project is done. Then they change their mind because it takes so long to deliver what they ask for that the business has changed and now they need something new.
The answer of course is to break the project up; deliver a little at a time. It took me a while the first time I tried to convince a sponsor this was the way to go with a project, but after I successfully delivered a small first release followed by a second release, he became convinced on this approach to running a project. No more huge list of requirements, no more long time periods between gathering requirements and delivering on them, and a happy sponsor. Now if only I could do something about weather delays!