Who do you need on a software delivery team?

Successful software delivery is a team sport. Meet the players!

  • Project manager (aka Scrum Master) – This role is responsible for instigating and delivering the overall body of work. This includes resourcing, issue resolution and reporting.
  • Product owner (aka Business analyst) – This role is responsible for ensuring that all of the stakeholders in the organisation are included when determining the necessary requirements and supporting acceptance criteria for a change. They will typically facilitate prioritisation of user stories as well.
  • Subject Matter Expert (SME) – Typically these are seconded from the business to provide direction to the product owner in defining the fine detail in the acceptance criteria.
  • Stakeholders (aka Sponsors) – Typically these will be heads of business functions who will provide high-level direction to the project effort. These will also be the requirement owners.
  • Technical Architect (aka Solution Analyst) – The technical architect is responsible for the translation of the acceptance criteria into working software. Typically this will be an individual with a development background who will define the technical solution to meet the requirements. This will include considering choices of competing technical solutions to determine the best one for this particular instance and identifying all of the development tasks needed to complete the build effort.
  • Developer – The developers are responsible for completing the tasks to build and test software to prove that it meets the provided specification. Developers do however play a wider role in overall project delivery as they will also be responsible for definition and build of environments and scripts to migrate software between environments.
  • Tester – Testers are responsible for proving that the software delivered by the developers in the development team meets the requirements specified by the product owner and the subject matter experts in the acceptance criteria. This task is typically completed by writing test scripts that define the behaviour of the software in given scenarios and then executing those scripts against the delivered software to ensure that the actual results match the expected results.

For a project to be successful it will require all of the above roles working together as a team. In some instances it can be possible for an individual to perform multiple roles however it would be extremely rare for a single individual to perform all of these roles. This is why communication and common understanding in a software delivery project are so important.