Software Engineering, Project Management, and Effectiveness
What does it take to be an effective Program Manager at Microsoft? I'm responding to some requests for my take on what it takes to be an effective PM. I figured I could use a familiar 7 habits approach to help frame out a start.
To pick a set of habits, I started with a set of reference examples. I used the most effective and ineffective PMs that I've seen over time. I considered their track record, their ability to influence, and their leadership skills. Most importantly I looked at their ability to ship and make the right impact for customers. Next, I looked for the underlying patterns (I'm a principles, practices and patterns guy). I used the ineffective PMs to think of the anti-patterns and the practices of what not to do. This contrast helped me clarify the distinctions between effective and ineffective.
Here's what I found to be the 7 habits of highly effective program managers:
Habit 1, Frame problems and solutions. Frames are the things mental models, metaphors, and conceptual frameworks are made of. Simply put, they're frames of reference. Effective PMs create useful ways of looking at the problems and solutions. They create shared frames of reference that help narrow and focus, while keeping perspective. Frames help chunk up the problem or the solution. Frames also help share information quickly as well as avoid information overflow. The secret here is that frames provide contextual reference. Without context, it's hard to evaluate problems or solutions.
Habit 2, Sell visions. The most effective PMs dream up great ideas and they sell them. They sell them in the hall, they sell them to co-workers, they sell them up the chain. They have an elevator pitch that resonates. They can paint a vivid picture of how the world will be different. Sometimes a PM has an idea that people aren't ready for. Sometimes a PM has an idea they just aren't selling right. Sometimes a PM has an idea that ... well ... just isn't ready for market or planet Earth. Selling visions involves both thought leadership and people leadership. I think the secret here is effective PMs sell visions by answering "what's in it for you" for stakeholders and customers.
Habit 3, Deliver incremental value. How do effective PMs go from zero to Rome? While the big bang can make a lot of impact, the problem is the longer they delay, the more project risk adds up over time -- visions change, people change, markets change, stakeholders change, perceptions change … etc. Anything that isn't built in a day needs a serious chunking strategy. The sooner they can start delivering value, the sooner they can get feedback and adapt and change. Also, they have better chances of hitting key windows of opportunity.
The most effective PMs can chunk their solutions. This is non-trivial, particularly in software. It means knowing what the minimum shippable chunk is. It means right-sizing their chunks so that each one delivers value for the right customers. It means unbundling dependencies to remove unnecessary project risks.
I think the secret of effective PMs here is thinking in terms of value rather than quantity, as well as knowing dependencies. What can they cut and truly gain time and resources without risking quality? Here's a true test ... if their 12 month project were cut into 6 ... or their 6 month project cut into 3 ... what would they cut and what would they deliver? If the success of their project depends entirely on shipping everything in their plan for the full project cycle, that's a recipe for failure.
Habit 4, Manage communication. This is a crucial skill since this means managing perceptions, managing expectations, brokering knowledge, and making sure the right people are involved. This is why some PMs fail where others succeed. The most effective PMs make sure the right people are involved on the right problems. They also setup forums and channels for communication. I think there are a few secrets here. The first secret is, they tailor the language for their audiences. For example, for stakeholders, they know their relevant currency (time? budget? resources? business value?). For engineers, maybe it's how does it work or why. For customers it might be features, scenarios or value. The second secret is, they use a variety of communication tools. Effective PMs make use of a range of SharePoint portals, Wikis, Mind Maps, whiteboards, blogs, forums, etc. The third secret is, they use the right mediums for the message. Effective PMs consider whether their message is best delivered in slides, mail, meeting, phone, etc. For example, slideware is often more effective than a long email.
Habit 5, Connect with customers. This is where the rubber meets the road. The most effective PMs have strong customer connections. Not only do they work with customer directly, but they have a useful representation across relevant segments. The mistakes I usually see here include the following: no customers, pretend customers, one customer size fits all, or assuming their internal scenario can be generalized to typical customer scenarios. The secret here is that it is not the number of customers, rather it is scenario representation and trusted sounding boards with key customers.
Habit 6, Execute. Execution makes life easier at Microsoft. The most effective PMs have great work breakdown structures and the right resources working on the right jobs. I know this sounds overly simple, but there's a secret here. I've seen work breakdown structures that are focused on activities versus outcomes. If a PM does not have a good work breakdown structure, then that means they don't know the work to be done. If they don't know the work to be done, then their estimates are off. If they don't have a good work breakdown structure, then it's also easy to have the wrong people doing the wrong jobs.
Habit 7, Leverage the system. Effective PMs know the system they are operating in. For example, they know their product cycle, software development life cycle, key milestones, and key events. They also know who or what influences who. Basically, they know how the system works. While they could paddle down the river without a map, this map helps them anticipate the obstacles and opportunities. The secret here is that experience alone doesn't create this map. Anybody can start making their own map by asking questions about the system they're working in.
While this list of habits above is not a comprehensive list, I thought it would be a good start. I'd actually like to hear from you what you think are the habits of the most effective PMs.
Creating a Custom SharePoint 2007 Portal Site Definition using the PortalProvisioningProvider Class...
J.D. Meier's Blog is a great resource on VSTS and team based development. Some recent posts are: Guidance
His original intent was specifically to discuss program management skills (at Microsoft), but I think this general framework is a...
Here's a brief set of success patterns I've shared with a few colleagues. These are the patterns I see