The part I found most interesting was your opinion on the different roles at Microsoft (quoted below). As someone with some experience in the PM role, I found it especially interesting. I find the opinion you have described spectacularly oversimplified, specifically in that the goal is just to write software (something only developers are needed), instead of writing the /right/ software, and at the right time. It is interesting to examine the different roles and how they interact, i.e. how devs often think of PMs as meetings and overheads, whilst PMs sometimes think of devs simply as resources. Tests, of course, are often left out in their own world, just hacking on whatever, and fixing the builds :-)
--------- Did you notice I said “software developer” above? This advice is really targeted at people who are good at and love actually writing software. It somewhat applies to program managers, product managers, and so forth, but hey, we work in the SOFTWARE industry. The only clear-cut jobs are for those who actually write the shit. Everyone else just helps.