Roles

Within a team we assign all the roles we need to support the agile process and to achieve the high level goals of the team. Teams will typically consist of 3 to 6 core team members with additional specialist roles as required. Often individual team members will take on multiple roles.

At end of each team shuffle meeting each team member will assign responsibilities to themselves from a list that covers all the responsibilities needed for highly functioning development team. This process creates some autonomy and ownership in a structured manner.

Below we discuss each role in a little detail.

Scrum master

The scrum master handles the mechanisms of a sprint, makes sure all roles are filled and removes impediments.

When the following interactions are needed they will be facilitated by the scrum master.

  • Standup
  • Plan Session
  • Retrospective
  • Development process expectations with the client

Prior to interactions the scrum master will coordinate the following interactions.

  • Plan Session
  • Retrospective
  • Operational management meeting
  • Release
  • Sprint review
  • User acceptance process
  • Design sessions when needed

Coordination requires making sure there is good attendance by the correct roleplayers and that the environment for the interactions is adequate.

The scrum master will keep an eye, or delegate and manage a view on support query SLAs. The scrum master will communicate this information as is valuable to the team and the client.

Product Owner

Holds the vision of the product and prioritises future enhancements. Ensures that any new features are in line with the product vision.

For more on the product owner role, read here.

Lead Developer / Technical Lead

The lead developer guides the team on a technical basis ensuring the integrity of new code written as well as managing the support of production systems owned by the team. They are accountable for the team’s delivery of each sprint.

Responsibilities of the lead developer:

  • Code quality
  • Code architecture
  • Performing release
  • Platform support
  • Other non functional goals for the code base (e.g. test code coverage, performance, code reusability?)

Developer

  • Programs new features and bug fixes.
  • Develops the requirement as per spec.
  • Adds necessary automated tests.
  • Performs dev testing of requirement as per spec where possible.
  • Reviews all code changes with another developer.
  • Demos changes to a manual tester.
  • Provides estimates during the plan session.
  • Demos selected assigned tickets to the client.
  • Handles comebacks on assigned tickets from QA and confirms they work on the QA environment.
  • Participates in design sessions when required.

Manual Tester

Ensures that code written satisfies the requirements of a new feature or bug fix.

  • Tests tickets as per acceptance criteria where possible.
  • Performs regression testing of specified impact areas on a ticket.
  • Performs negative testing.
  • Performs exploratory testing.
  • Participates in developer demos.
  • Signs off a sprint in QA.
  • Writes test cases.
  • Participates in design sessions when required.