Have you ever thought what kind of person is the best to lead software projects?
Different companies have different patterns. Some might think software project is a project like anything else, so a generic Project Manager is fine. Others think there are only business projects with an IT component, so business should lead. And most people within IT think they should lead the project.
But what is the role of the project manager? Ensure the delivery within time and budget, so basically the single person who is responsible for success. This is a very generic and very good statement.
Why do we need project managers? Because the software development (just like other projects) are result of a team. Software development is teamwork: extensive communication and cooperation between analysts, developers, testers, network engineers, key users, stakeholders and sponsors. It requires careful planning. The team needs a leader. The leader, the person who makes the planning, coordination and communication, he or she is the project manager.
What makes somebody to be good project manager? Normally the best combination is the technology, the domain and the project management: the person who fully understands what is going on, how we are going to do it, and in the same time understands all the administrative tasks of a leader.
If you find one person who is master of all of them, he will be highly effective, many times better then others.
Unfortunately very difficult to find such people. The trap is that you find somebody with good knowledge here and there, but not at the necessary level - this person will fail.
Great programmers without people skill will have conflict with the team and unable to lead them. Anyway, programmers as leaders tend to micro-manage things and do everything themselves.
Project Managers without understanding of software development will fall into basic pitfalls which are the nature of the software development: business requirements not specified in details, no testing performed. And the worst: realize the mistakes only at the time of delivery.
I think experience and skill can prevent failure, so planned, controlled, managed success is possible.
What is the appropriate background for a software PM? Degree in Computer Science is definitely good. MBA can be good. Many HR people believe Finance background is mandatory - I disagree with this. Finance background means you know a little part of the management very well (cost and budget), but you don't know the technology and you are not expert on management. Unless it is a Finance software, Finance folks should not lead projects.
The next problem is the question of career path and the necessary skill set. Software developers prefer to write software, therefore they improve their technology skills, instead of learning communication, coordination, planning and people skills. Being the best in a technology means you have missed an important aspect. And if you improve your soft skills that means you haven't improved the technology skills enough.
The good balance is somewhere between. Have a fair level of understanding of the technology, and then shift focus to project management. If you want to be a PM, you have to learn it!
After moving into PM, you must be ready to lead projects where you actually don't know all the technology. You are not a PM if you cannot trust in an other expert and cannot take responsibility of somebody else's job.
The good software project manager has the following characteristics:
- He is a good manager and team leader, with all the necessary knowledge
- Speaks the language of the techies and speaks the language of the users
- Knows the typical pitfalls and avoids them
- Understands experts and gurus
If we look at the certificates, PMI is appropriate.