Project Management is a crucial role in any software development team. The role is one that is designed to help ensure that the software development process works as it is intended.
A project manager has the overall responsibility for the successful initiation, planning, design, execution, monitoring, controlling and closure of a project. He/she must have a combination of skills including an ability to ask penetrating questions, detect unstated assumptions, identify risks that impact the likelihood of success of the project as well as more general management skills like conflict resolution. Their role in any project cannot be overstated.
We need Technical/Functional PMs
Having said the above, many project managers I have come across in my career, are what I call “pure-play” project managers. What I mean by this is that they focus only on the activities mentioned above. They show little interest in the actual functional or technical aspects of the software project that they are responsible for. I can understand that project/program managers managing large multi customer/technology/domain projects might not have the bandwidth to dive into the functional/technical details of all of their projects. But I have noticed that even project managers managing a single project of 15-20 members do not take the effort to understand software they are delivering. One need not have an in-depth understanding of all the business rules or technical design of the software, but not even having had a good look at the functionality of the software one is responsible for, is unacceptable.
The real problem with the “pure-play project managers” comes during discussions with the customer. I have noticed that during custom development/maintenance projects, when the customer reports an issue or wants a change in the project plan to accommodate new feature and so on, the project managers are unable to handle the discussions by themselves. They need their business analysts and solution architects by their side in the meetings to engage with the customer. The other roles can be roped in when detailed functional/technical discussions are necessary, but the first level (in fact a few levels!) conversation should be handled by the project manager himself/herself. Doing so has two benefits. First, the customer gains confidence that the person managing my project knows about my software. Second, the project manager gains the respect of the development team for not dumping every single functional/technical query on them and being able to handle the customer independently. I have seen that teams with Project Managers having a good functional/technical understanding of the software they manage, demonstrate high productivity as the development team does not get dragged into trivial meetings & conference calls.
When a Project Manager is assigned to a software project, one of the first things that he/she should do is to spend a couple of hours each day with the testing team and go through the testing scenarios. Knowing how to navigate the software from the login screen to the reports generation (and everything in-between) will give a good overview of the functionality and also the business problem the software solves.
I agree with a Steve Jobs quote “As the owner, you should be able to demo your product or service”.