~ By Luc Richard
Must project managers be technically savvy? This topic always seems to cause quite a stir. While some believe that all you need to manage a project is a PMP certification, others are convinced that you can't successfully manage a software development project unless you truly understand the intricacies of the product.
I agree! To be an effective project manager, you must know the ins and outs of your solution. You must be capable of designing and developing the solution yourself.
Here are five fundamental project management tasks that project managers can't accomplish unless they have a strong technical background and truly understand the particulars of their product.
In order to create a project plan, you must be able to estimate how much effort is required to complete all of the required tasks. Needless to say, you can't estimate effort unless you truly understand what's involved in designing and implementing those features.
Unless you understand what's required to reach 5-9 reliability, you can't assess how much effort is required to achieve this non-functional requirement. Unless you clearly understand how to write Java Server Pages, you can't predict how much development effort is required to transform an HTML prototype to set of fully functional JSP pages.
A project manager must be able to schedule activities in a logical sequence. If you can't determine which activities must come first and which ones can be done in parallel, you can't put together a project schedule.
Imagine the following scenario. Your product is scheduled to be released in five days. The QA team discovers a defect in the API through a series of CLI tests. After carefully examining the problem, you realise that you're developers have been working around this defect for months.
Given that you're only five days away from releasing your product, should you fix this defect or document the workaround? At this point in time, how risky is it to modify an API that's being used? How confident are you that the developer can fix this API in the given timeframe? What's the likelihood that changing this API will break the modules calling it? Should you fix the defect now, or release the product and address the bug in a patch release?
Unless you've seen the code behind this interface, you can't answer any of these questions yourself. You need to ask your developers. You're not the decision maker. They are.
Customer meetings always end up in technical discussions. Unfortunately, if you can't speak intelligently about your technology, you can't add any value to such meetings. You're not participating; you're strictly listening, and perhaps taking notes. Sooner or later, your customers will find themselves contacting your developers directly. "Why contact the project manager if he can't give me an answer? I may as well go straight to the source."
Let's face it. You never get as much time as you'd like to plan your projects. What's important is not that you get it perfect the first time around. What's important is that you can catch the tasks that fell through the cracks before it's too late.
If you don't know what's required to complete your solution, you won't be able to identify all the overlooked activities. They'll either be pointed out by your developers, or simply omitted forever.
To be an effective project manager, you must be capable of designing and developing the solution yourself. Otherwise, you have two options. You can either (a) ask others to make decisions for you, or (b) simply pretend you know what you're talking about. In the first case, you're a project co-ordinator. In the second case, you're a project mangler.
Luc Richard holds an MBA with a major in high technology. For the past ten years, he's been managing the development of software applications.