I have spent my last 4 and a half months learning how you should never execute a (software) project.
Though a big disappointment and failure, the previous project had changed my view on a lot of stuff especially processes and documentation. I had always considered micro-level documentation as an avoidable overhead and never believed in process. If you think like me, may be your opinion will change if you know my story.
A project without any proper documentation (scope, requirements, design, project plan…. the list goes on). A very aggressive deadline. Here is where I landed into the project at the end of 2 months. Was anyone scared if the client will go bad? Nobody was. Fast forward >> Client denies the scope. Squeezes in double the original requirements into the scope. You know what happened in the end? He made us work for 6 months and coolly paid for just the original 3 months.
We were screwed big time just for the lack of process and documentation. You know.. I learned it.
Software Project failure reasons are usually different (in importance) depending on maturity levels.
I suggest you take a look at this article: Failure Causes in IT Project Management.