I have both worked with and had Software and Hardware Product Managers (PM) work for me. There are some high order bits that are critical to be a successful PM.
A PM is a very difficult job because you must be passionate, creative, intelligent, organized, pragmatic, work well with others and must be able to both speak and write well.
When it comes to actual development, here are "Edstrom's Commandments on Product Management"
- Owns the Application Development Lifecycle Framework to include:
- Requirements Analysis and Tracking
- Source Code Management
- Bug and Issue Tracking Management
- Beta Management
- Release Management
- Upgrade Management
- Patch Management
- EOL Management
- Drives product quality by ensuring:
- Don’t drop bits when moving/using customer data (ask me about Sun Microsystems e-cache (external cache) sometime if you have a couple of hours to talk about the right way to handle quality issues).
- Must provide the correct answers. Sounds obvious, but you would be surprised the number of times I have said or hear the phrase, "Wait, that can't be RIGHT!" Never assume the calculations are correct.
- Testing, testing, testing. Regression and automated testing are a must to go along with manual human testing. This includes customer and employee beta testing.
- Scalability - as Mike O'Dell famously states with his First Law "Scaling is ALWAYS the problem".
- Extensibility- did you create spaghetti monkey-code or do you have a real and viable product that can grow and be extended over time without a complete rewrite or new tapeout?
- Platform - this is the big picture architecture question. Are you creating a bunch of one-off components or is there a method to separating out the implementations from the interfaces with a growth strategy?