Friday, November 03, 2006

Project Roles

Roles Within Project Teams


For a team to work effectively, they need clearly defined roles, and individuals need to be empowered to fulfil these roles.



Project Manager (PM)



  • Budget holder

  • Owns overall project plan with timescales, deliverables & outcomes.

  • Understands high level project progress and issues

  • Provides environment to enable team to deliver

  • Shields team from details of the business and politics.

  • Deals with resourcing requirements

  • Represents the project to senior management

  • Works with Development Managers and Dev Leads to pull together the required proposition and take it into delivery if appropriate.


Empowerment Required: Demand that their outcomes are achieved by the dev team.



Team Leader



  • People manager with technical background

  • Runs sessions (eg standup, retrospective, planning)

  • Supports and enforces development process by dealing with

    • people management

    • planning

    • progress measurment

    • external relationships

    • company politics

    • communication channels


  • Works closely with dev team - especially Team Leader

  • Attends relevant external meetings on behalf of team

  • Ensures that the team operates smoothly, and have the tools & resource to deliver the project outcomes.

  • Deals with issues that need resolving within and outside the team.

  • Understands the technical details more than PM, but not to the depth of the senior developers.


Empowerment Required:


  • Represents team

  • Authority figure within team

  • Runs project day-to-day

  • PM primarily interacts with team via Team Leader.



Truth



  • Provides the single point of requirements for the development team.

  • Is able to answer all questions relating to requirements in a timely manner.

  • Is available to the team at all times.


Empowerment Required:


  • Authority to answer questions on requirements.

  • Authority to make judgement calls on-the-spot.

  • Empowered to commit all their time to the project and team.

  • One Source for project requirements.



Lead Tester (QA)



  • Works closely with Truth and Developers to understand requirements and provide acceptance tests, both manual and automated.

  • Runs tests and sign off each story, iteration and release.

  • Raises bugs.


Empowerment Required



  • The acceptance tests they create are the single source of the requirements.

  • If Truth is unavailable within acceptable timeframe, has authority to make the decision.

  • Power to sign-off or reject stories, iteration and releases.



Marketing/Business



  • Combines business knowledge and market research to generate initial high-level ideas, outcomes and goals.

  • Sells the idea to the business and gets budget allocated to programme.

  • Understands the long-term plan

  • Generates the outcomes that are passed to the project team to fulfil.

  • Understands how the outcomes fulfil the business requirements


Empowerment Required: To demand that their outcomes are achieved.



Technical Lead (Coach)



  • The most senior developer on the team

  • Takes responsibility for technical decisions on the project in conjunction with Architecture and other departments.

  • Responsible for the technical output of the team, and ensuring that it complies with both internal and industry standards and best practices.

  • Responsible for ensuring that the technical practices that support the process are implemented within the team eg Test Driven Development, Pairing, Continuous Integration.

  • Works as a developers, providing coaching in Agile practices and coding.

  • Works closely with Team Leader.


Empowerment Required: Empowered to make the technical decisions.
Empowered to use best practices and apply both internal and industry standards.



Developer



  • Understands and embraces the Agile process, its benefits and core practices

  • Is able to produce good quality, well designed code in response to stories

  • Participates well within the team, adopts all required practices and attends all sessions.

  • Works closely with Tester (QA) on Story

  • Recognises the authority and expertise of Technical Lead (Coach) and uses them appropriately.

2 comments:

Mark said...

I’d say that your QA role should really be a Lead QA role. One project might have several QA’s assigned to it, would each one of them really be in a position to act as the truth in their absence?

Is it really up to the projects Technical Lead to ensure compliance with industry standards and practices? Surely their role within the project is to ensure compliance with internal standards. Where standards don’t exist new ones can be formed through discussion with an organisation’s other Technical Leads and Development Leads. Is it really up to an individual Technical Lead on a project to decide what industry standards their particular project is going to follow?

You seem to have missed out the role of Developer / Technical Implementer. What do you see their role as?

Team Leads ‘run development process’, whereas Technical Leads are ‘Responsible for the implementation of the process within the team’. Isn’t this the same thing? Doesn’t this create confusion as to who is responsible for ensuring that a given process is followed?

As an aside, Technical Lead doesn’t seem to have been done as a bullet pointed list…

Guy Caseley said...

Thanks for your feedback - I've updated the post to reflect the changes you suggested.
Regarding industry standards and best practices, I was referring to things such as patterns, good OO design, W3C web standards etc. I think that all web app development should follow these guidelines, and that the Technical Lead should be responsible for ensuring this. Internal company standards, like code formatting, telemetry and security should, like you say, be agreed amongst the Technical Leads and Architects within the company.