One small and wholly avoidable thing that can scupper any project is the misinterpretation or confusion of what the deliverables are. This may sound a little alarming, but projects can fail simply because one person expects something, but another person misunderstands or misinterprets and delivers something else. It's not normally down to ignorance; it's normally due to both sides interpreting the same thing in different ways.
For example, let's look at something relatively innocuous; the word release. To a project manager or a release manager, this could represent a bundle of software changes, which need to be tested and put live within a schedule or program of work. This will normally entail detailed project plans, close coordination with all departments inside and outside of the product delivery function and lots of meetings...