I hate to tell you this, but the most important attribute is their ability to communicate; hands down. If they cannot communicate well, they cannot remove road blocks, and they cannot translate between interested parties and performers.
Short information is followed by organization / planning ability and tool knowledge; and, of course, domain knowledge (BS detector and general understanding of the project without having to ask ... what is it all the time.)
Without these three things, you are at a disadvantage.
So, I agree with Joel that having a background in programming is important for the Project Manager / Program Manager - especially with intangible things like software. However, you must have experience of 10 or 15 years? No. A couple of years on the floor should tell you enough.
source share