views:

401

answers:

8

We have a relatively small team of developers with less than 5 people in it and a project manager. What do you think is the typical set of responsibilities a project manager should have in such a team ? I am looking at the thing more from the developer's perspective and want to know what should I expect from the manager and what should I care about myself (e.g. code quality, coordination etc.).

Currently, our project manager mostly just periodically asks the guys : "What is the progress in your task ?", and serves as a proxy between the business guys and developers who is held responsible for the delivery and just transfers the pressure to developers. He doesn't ever read the code so unless told by developers he doesn't even know about the problems there (the task is considered done when a developer responsible for it says it's done and there are no obvious problems with it).

Additionally, is it a good strategy to have a project manager in such a team at all or is it better to have a technical leader only which would cover some management tasks as well ?

UPDATE : I don't have a deep knowledge about agile methodologies but I think a danger in not being technically skilled (for a PM, SCRUM master etc.) is that you can't really distinguish qualities of the team members when the only indicator you have is what they tell you. It comes down to how good they are in communicating and persuading others but not whether they understand real long-term issues in the project (like maintainability, legacy code, architectural problems etc.)

+5  A: 

G'day,

(Insert usual he/she disclaimer here)

A good project manager will think that he works for the team and not that the team works for him. They understand that they will look good if they remove as many impediments as possible to allow the team to look good and do a good job.

The big responsibility is to make sure that the team has everything that they need to get the job done.

He should also be looking ahead to see if there are any obstacles in the way and try to remove them before they become an issue to minimise interruptions to the team.

He should be defecting management interference away from the team to allow you to get on with the task as well.

I've been in this situation a couple of times and one time the project manager did a brilliant job of all three tasks. Unfortunately, most other times the PM had no damn idea and just funnelled his pressure directly onto the team passing down all management requests no matter how stupid they were.

Edit: The code quality is initially the responsibility of the programmers themselves.

The assumption is that they are a) competant, and b) professional so that what they produce is good and fit for purpose. It should've been tested by them because, as the old saying says "if it ain't tested, it ain't done!".

Then comes the more extensive functional testing which should be a part of the normal QA procedures.

HTH

Rob Wells
The responsibilities you stated are reasonable, but it seems that it comes down to the developers to get the job done in the end, including all the high level problems. As there is no technical lead or architect in the team, just peer developers, nobody has the real responsibility for the code not being total crap..
Thomas Wanner
@Thomas, added a note about "code not being total crap" in my answer. (-:
Rob Wells
I have to agree to code quality is up to the programmers. However, when serious flaws are detected only lately, possibly even when the programmers who caused them are already gone, it's very hard to do anything about them. So what I have in mind is some kind of a recognition of these things..
Thomas Wanner
@Thomas, "serious flaws" shouldn't be detected late in the project. If they are then it can only be due to either a) no regular peer code reviews, and/or b) relying on one "big bang" integration phase late in the project life cycle. Agile techniques, particularly Scrum are designed to eliminate the issue by integrating "early and often".
Rob Wells
@Thomas, just saw your note about Agile and Scrum. Here's a link to an excellent 45 minute talk about Scrum by Ken Schwaber, the father of Scrum <http://itc.conversationsnetwork.org/shows/detail350.html>. Very entertaining.
Rob Wells
@Rob, thanks, I'm gonna listen to it right now, it's a cold winter sunday anyway :)
Thomas Wanner
@Thomas, did you enjoy the talk?
Rob Wells
@Rob, it was quite interesting to learn that it has actually worked in so many different environments, definitely motivating. I think I'll have to learn something about it anyway ;)
Thomas Wanner
+5  A: 

In a small team you shouldn't introduce any unnescessary overhead and opt for flat hierachies. Not only will this improve communication in the team but developers will also feel better if their word has weight.

Nonetheless you need to define a responsible manager for each project or the whole team. In my experience, he/she has the following tasks:

  • negotiate with customers (business-wise and software-wise)
  • overview of all the teams projects status and deadlines
  • task planning, distribution and estimation (can and should be shared with team members, but the PM is responsible)
  • general team management: who is when where and does what
  • mediate in case of technical decissions
  • write code

The last point is very important. If a project manager isn't capable of writing code, how else should he fulfill his tasks then (see project status, mediation, negotiate with customers).

Johannes Rudolph
The "write code" part is quite interesting. So you think the manager should not only read but also write some code ?
Thomas Wanner
I cant see that writing code has anything to do with project status and and negotion with customers. In the team you should have a senior programmer that can perform code reviews to maintain quality and standards. He can write code as much as he wants.
magnus
A manager has to straddle two disciplines: Technical and Commercial. A manager who understands the commercial pressures but doesn't understand the technical side tends to lead a dev team poorly, because he has difficulty communicating with the team. A manager who understands the technical side but doesn't understand the commercial driving forces will tend to have trouble meeting the business' and customers' needs. Obviously it might not need to be a 50/50 split, but a manager needs to understand their team to support them well.
Jason Williams
@magnus: his team is of less than 5 people. I doubt there is value in having one person of them be a "manger only". He/she has to be the manager and senior programmer at the same time. I think jason's comment provides a good insight on this.
Johannes Rudolph
I can only answer by my own experience. In 15 years I've never met a PM that writes code. That has been in projects ranging from 2-50 developers. I think it really depends on the complexity of the project. In a project with low complexity and few business requirements maybe a programmer can act as PM but i doubt many programmers have the skill to act as one. Speaking with customers/business people is a completely different ballpark. They tend to be very uninterested in tech talk.
magnus
@Jason: Either have a manager that straddles, or two managers/leads that work well together (i.e. understand each other) that take the main part of each "side" (i.e tech/commercial).
Marcus Lindblom
@Marcus: Yes, as long as everybody can communicate to the people they need to. However, I'd say two managers is a bit much for a 5-man team!
Jason Williams
@Jason: True, if they manage 100% it's totally overkill :), but you could have two leads, one tech lead that codes a lot, and one project lead that does acceptance testing apart from interacting with customers/stake holders.. Think of it as a dynamic duo. :)
Marcus Lindblom
+2  A: 

The responsibility of a project manager could be summarised as

  • Should develop a culture of responsibility, accountability and independence and concentrate on the task of clearing the pathways and hurdles faced by the team members in the best way possible.
Asad Butt
A: 

check out information about Scrum project managment method. I work in small company and it's doing well for 4-8 programmers in team. In Scrum methodology Scrum Master = Project Manager. There is a daily Scrum where Scrum Master asks:

-What have you done since yesterday? -What are you planning to do today? -Do you have any problems preventing you from accomplishing your goal?

Contact with client is also important, (see also Project Owner role) http://en.wikipedia.org/wiki/Scrum_(development)

dfens
+2  A: 

The size of a team is just a factor, a detail. There are many factors to be considered, which makes your question hard to answer.

To illustrate the bandwidth of a "correct answer" consider these two extremes: In Scrum (an agile approach), the Scrum Master is the equivalent of a project manager. This role does not primarily require technical expertise, because one important task is to establish the right environment for the team to be productive. In less agile environments, where a waterfall model is more prevalent, the technical focus of a lead programmer gets more important.

He seems to try shielding you off from outside distractions. That is OK. He also seems to hand off much responsibility to the team. That is also OK, if the team can deal with self-responsibility. The whole situation might be a (halfhearted?) attempt to introduce agility into the team. This attempt will fail if no one knows where the journey should go.

Theo Lenndorff
@Theo, +1 for "to try shielding you off from outside distractions" (-:
Rob Wells
A: 

Hi

The responsibility of the project manager is to ship the product on time on budget and on spec. From that single responsibility a set of other responsibilities follow; what follows is my first cut, you may want to add to it or subtract from it:

  1. Plan, manage and control the project.
  2. Report, in particular report off-specification, off-time and off-budget matters.
  3. Manage risks.
  4. Identify issues (fill in your own definition of issues) and take action to prevent them becoming problems.

Other respondents have written some very sensible things about the ways in which a PM might meet his/her responsibilities, but most of them seem to be means to an end rather than ends in themselves.

Argumentative and subjective ? Hell yes, just like a development project.

Regards

Mark

High Performance Mark
A: 

The project manager should work with the team not against it!

Also, one of his biggest responsibilities is to make sure that the project is going well not his current position. This means he/she should not adopt the most optimistic scenario in order to give a good impression to his/her superiors. Sometimes the PM will just say "2 weeks?! Noo... You are my best developer, I know you can do this in 1". This realistic diminution of time will propagate even further. The PM's superior will say: "1 week?! Noo... I know you are a capable manager and you will find a better solution to finish in 3 days". And so on...

The PM must be somehow technical in order to understand and find solutions for risks. He should be able to see upcoming risks and to choose what to do with them (Treat, Terminate, Transfer or Take the risk).

The PM must mediate all the conflicts team-team or team-rest of the company. Not only that the PM must mediate this conflicts but he should have a 6th sense of anticipating them and solve them in the incipient phase.

Depending on the project organization the PM must make sure that the team is still under the organization's control and respects its policies and inner rules. The PM is a proxy and he should not isolate the team.

Least but definitely not last the PM must do his best to be on schedule and to meet the clients' and organization's expectations.

Victor Hurdugaci
A: 

For a small team like yours, one engineer should fill the role of technical lead and project manager. There are so many decisions that straddle requirements, schedule, design, and quality that it's best if one person can keep it all in their head and coordinate with the team and external customers.

But since you have a project manager, I recommend you choose one other engineer as the technical lead and ask them to work together. The technical lead can own the design, the estimate, and the code quality. The two should work together on the requirements. The project manager can handle external communication, negotiate the schedule based on the estimate, and also handle care and feeding of the team. Working together, they can shield the team and make sure a good product is delivered on a date that meets your business needs.

Mike Ashley