As a developer as part of a team comprising of a variety of roles e.g. project manager technical lead, business analyst, quality assurance etc, what are the most important things for a developer to be aware of about project management? How deep an understanding is appropriate for a developer?
There's no such thing as appropriate level of understanding of project management. Actually, if the project is organized very well a developer can perfectly know nothing about project management at all and it would be fine.
On the other hand the more every project team member knows about job of other project team members the better. From this perspective a developer should know about project management as much as possible as then they're better partners in any discussion with PM.
Anyway if I had to point the most important aspects of project management which should generally be known by as many team members as possible I'd point:
Communication, especially communication with clients. We have to know what we can tell and whom we can tell that.
Estimating/scheduling. We need to plan our work in some reasonable way.
Being aware of how project looks like in a big picture. It always help to know the context of our work, so we can choose our solutions better.
I totally agree with Pawel. Expanding on his "big picture" comment it is important to know:
- What the project product is supposed to look like, especially product quality/acceptance criteria. Without this you can wind up with a lot more problems integrating sub-products into a final release.
- What the project roles and organization are. Letting everyone know what their roles are and how that fits into the big picture helps to reduce the amount of overlapping and/or abandoned responsibility.
In addition, I think team members need to be aware of the ethical standards that a PM works under. The PM needs to have the team exhibit mutual respect, fairness, honesty and responsibility if the project is going to be a success.