Coding, is? Fun!

Sunday, September 02, 2007

The role of project managers

What is the role of a project manager in a software development consultancy?
I have worked in different structures in India and the USA. In India, in Cognizant and other companies, technical staff became Project Managers (PM). They guide the project from collecting requirements to delivery. But they also technically mentored developers; they were in charge of technical architecture. They conducted the appraisals of technical staff.
In the USA I was exposed to a different structure (that my company called the Matrix structure). Developers reported to a tech lead and then a set of architects and so on upto the CTO. The PMs were part of a completely different reporting hierarchy. They actually went to a different VP. On projects, the PMs and Tech Leads work together. PMs have no say in technical decisions. They are in fact, completely non-technical. Appraisals and mentoring are done by the Tech Leads.
I, as a technical person, felt comfortable working in the second structure. But I need to mention that the second structure was not for a software consulting company.

When I came back to India and joined my current company, I noticed that the structure was similar to the American model. I fit in fine.
But I do see that there are some confusions about what a project manager's role is with respect to developers. I am trying to gain some clarity on that.

In the Software Development methodologies such as Microsoft Solution Framework(MSF) or Rational Unified Process (RUP), the project manager has an important role. That role is to handle requirements, change requests and risk. We should note that developers ALSO have a very important role. In the eyes of these processes, every role has a value. As such all the roles are in the same level. I want to reemphasize this - in a software project, the PM has a role at the same level as a developer or a Tech Lead.
As a part of their role, they have certain responsibilities.

In consulting organizations, PM is ALSO a Position. You enter an organization as a PM. That has commensurate pay and other perks. They also have certain administrative responsibilities.
Thus the PM has a position as well as a role. In a project, the PM has to play their role. The division of labor between the Tech Lead, developers and the PM is clear. As long as we stick to that we should be fine.
But, I have seen PMs forgetting this and get antsy with developers. I have seen this so often with Indian PMs that it is annoying. For example, PMs try to second guess the Tech Lead's estimates. I had one PM sending an email questioning a row in a database table. PMs also tend to take MORE ownership than necessary in a project lifecycle. Some of them yell and scream and write nasty emails to the technical staff. This commonly leads to unhappy developers.
As part of their role, PMs have to be in constant consultation with their technical staff - particularly with Tech Leads. It is important to have a good relationship with tech leads.
We have to keep the technical staff happy - that is a priority in any organization that depends on software development.

I have talked about this with some PMs and their response is that they are answerable to clients. This is such a cliche - I have never heard of any PM being fired because a technical mishap happened in a project. Developers deal with very uncertain technology; and they have to stick to very tight timelines. That is a given and MOST clients understand that.
Obviously there is another side of the coin - there IS unprofessional behavior among technical staff as well. But that can be combated using standard warnings and escalations.

Labels: ,


Post a Comment

<< Home