Software Development is currently one of the only technical professions where low- and mid-level management is not required to have the requisite experience developing the products they manage.
For example, engineering depts. are almost always managed by someone who has (alot of) experience engineering what they are now managing. This applies to most other industries such as manufacturing, electronic, chemical, etc.
From my experience, lack of meaningful communication is the major reason for SD projects that fail. And, again in my experience, this almost always happens because of unrealistic expectations by management who don't "know what it takes" to develop good software. In order to communicate effectively, all members of the team must have a common basis for communication, and this common basis must be experience actually developing software. Not just managing it, but /developing/ it.
The most successful SD companies /always/ hire their team leads/project managers from the ranks of programmers. And not only just "programmers", but most often progammers with experience in developing the same type of software as they'll be managing the development of.
Give me the resume of one person - the project manager - and I'll be able to give you pretty accurate odds on how successful that project will be. And most of that judgement will come from the experience actually developing the same type of software. This is not to minimize the importance of the actual programmers - they are crucial. Good and /experienced/ project leadership will insist on having control over which programming resources they will use simply because of their past experience developing the same type of software. You'll never hear them utter anything assinine like "A programmer is just a resource, churning out line after line of code - it doesn't matter who they are or where we get them".
All this talk of CMM and the like by offshore firms (and now some on-shore firms) is, frankly, crap, because it doesn't enforce the actual quality of the requisite components used to make up the CMM ratings. It is merely a marketing ploy, much like "New and Improved" on the box of your favorite laundry detergent, with the composition of the same ingredients altered a little, sometimes for the worse.
The reason I mention this is because CMM ratings and the like are becoming inadequate substitutes for what it really takes to develop good software.
Managers who've come up the ranks such as 'Catherine' aspires to do (w/o actual programming experience) are the ones who fall for the CMM BS and are probably the primary reason why offshoring is currently an issue, and why it will fail - in one way or the other, later if not sooner - for US corporations specifically and the US as a whole ultimately.