The Many Roles in Software Projects
[From the Archive: Originally posted at Amplify.com Feb 25, 2011]
I recently re-quoted (on Twitter) something Capers Jones has said recently in a LinkedIn Forum. His quote (about many software projects having more than 50 distinct roles) reminded me I had some years ago made a list of the many and varied roles found involved in software development project teams. (The list originally sparked by a Chapter from “XP Explained” by Kent Beck).
I thought I’d share that list here. Please feel free to suggest and share further additions or changes.
General Team Roles and Responsibilities
Any software-intensive product- or service- development project has at its core a team of people aiming to meet the collective needs of the project’s diaspora of stakeholders. This core team in turn relies on an extended team of other folks to provide it with the essential context in which it operates. Both groups need to do a great job to be sure of a great result.
N.B. Typically, each project should keep track of its own community of stakeholders and their respective needs.
The following tables describe the many and varied roles that need to be fulfilled in a successful project (n.b. in no particular order). Note that we’re generally talking about relative small teams, as small as just five to seven people. So we’re assuming that each team member will have to play a number of these roles, either at the same time or in frequent alternation.
The Core Development Team
- Ensuring the “interaction goals” of the system are clearly articulated and agreed by all stakeholders.
- Developing user personas.
- Co-defining and blue-printing the overall behaviour of the product and its value proposition.
- Choosing the overall system interaction metaphor.
- Determines the (stakeholders) needs that the product must meet and continually oversees the development of the product to ensure that it’s on target to meeting those needs.
- Listens to the stakeholders and then negotiates with the project team to address the stakeholders’ needs (and desires).
- c.f. “The Surgeon” in Fred Brooks’ “Surgical Team” model (The Mythical Man Month)
- Ensuring the product or service under development achieves its performance and other qualitative requirements.
- Guiding the interfacing and Integration of the solution components of this project into the existing architectural landscape.
- Guiding look-and-feel decisions.
- Helping write and clarify user stories and personas.
- Elaborating user interaction guidelines and standards.
- Analysing the system-in-use so as to continually refine usability and the user interface.
- Solicitation and elaboration of stakeholder needs and requirements.
- Illustrating user stories (e.g. graphically) during planning sessions, workshops, etc.
- Creating, enhancing and modifying e.g. graphical content to suit its presentation context.
- Providing early feedback to the core and extended teams about e.g. desirable features.
- Creating closer and more productive relationships with the various stakeholder communities (through e.g. creating tutorials, reference manuals, technical overviews, brochures, video, audio, etc.)
- Generating leads for additional features (a.k.a. value-add) amongst e.g. the stakeholder community.
Project Public Relations
- Promoting the system and its features amongst the stakeholders – to maximise feedback, their participation in the development, and the visibility of the team and its outputs.
- Generating interest in the product both amongst the stakeholders and the widest potential user community.
- Anticipating the general information needs of the projects stakeholder communities (re: e.g. schedules, budgets, timescales, progress, status, morale, events, etc.).
- Ensuring those needs are met.
- Anticipating the technical information needs of the team (and, ideally, stakeholders too) and fulfilling these needs.
- Maintaining the content of the project’s technical (internally-facing) wikis, etc.
- Ensuring that each and every relevant conversation, decision etc. within the project gets recorded and published to all the team and beyond.
- Ensuring the timely availability of all necessary content in the appropriate format(s).
- Separating content from presentation.
- Ensuring the team uses its available technologies to the best possible effect.
Methods and Practices Maven
- Advising the team such tat everyone chooses and then uses relevant development methods and practices to the best possible effect.
- Advising on suitable approaches to making things visible, collecting metrics, and the metrics that might best serve the team.
- Collecting metrics (measurements) according to the prevailing metrics plan.
- Ensuring the continuous availability of all the project development infrastructure – development servers, repositories, tools, workstations, printers, scanners, network connectivity.
Production Operations Maven
- Ensuring the team has all necessary information regarding the prospective production (live) environment(s).
Site Reliability (SRE) Maven
- Single point of responsibility and arbiter between the Dev and Ops teams. Ensures the product’s reliability and low latency. “Site Reliability Engineering is concerned with on the reliability and maintainability of large systems”.
Development Assets Security Maven
- Ensuring only duly authorised people have access to the information, work-in-progress, codebase, etc. within the development infrastructure.
- Ensuring the optimal transition of product releases into the production environment(s).
Stakeholder Security and Privacy Maven
- Ensuring the product or service under development safeguards stakeholders’ security and privacy.
- Ensuring the continuous availability of all the projects tools – incl. compilers, editors, IDEs, source code repositories, etc.
- Ensuring the project has the tools it needs to be optimally productive.
Test and Integration Maven
- Ensuring the continuous availability of the current status of all candidate releases.
- Ensuring the continuous availability of the continuous integration environment.
- Continually co-ordinating, communicating and championing the project’s test strategy, principles and practices.
- Creating or assisting in the creation of test scripts, test data and harnesses.
- Monitoring results from automated tests.
- Finding solutions to known requirements.
- Exploring the requirement space.
- Advising on economic feasibility of implementing designs / requirements in available programming languages.
- Implementing i.e. user stories – in whatever language is most suited to the problem at hand (c.f. Polyglot Programming).
- Reducing or eliminating waste and rework.
- Enhancing the chances of successful delivery of the system across all requirement dimensions.
- Representing the perspectives of themselves and /or their nominated stakeholder communities.
- Ensuring that feedback from e.g. usability sessions, early-access programmes and live operations get incorporated into subsequent product releases.
- Helping improve the well-being and mental functioning of the team.
- Monitoring and helping improve individual and team motivation and morale.
- Facilitating the interactions of the members of the core team
- Facilitating the interactions of the members of the extended team
- Facilitating the interactions between the core team and the extended team.
- Continually reminding people of the big picture.
- Maintaining synchronisation between the team’s plans and reality.
- Maintaining alignment of purpose between all the various participating groups.
- Helping people discover solutions to their challenges.
- Driving continual process improvement.
- Driving the continual identification and remediation of ineffective working practices – a.k.a. ScrumMaster.
- Ensuring all the little odds and ends get tied up.
Production Database Designer
- Ensuring the product meets production DBA requirements.
- Planning product features to support e.g. data schema migration.
- Ensuring that issues get recorded, tracked and closed.
- Ensuring all in-house and e.g. regulatory standards and constraints are understood by the team and adhered-to by the product.
- Maintain the project’s Style Guide for e.g. document and other publication media styles.
- Ensuring the continuous conformance of project styles to broader programme and corporate house style(s).
- Monitoring the conformance to prevailing style guidelines of all project publications.
- Encouraging awareness of and conformance to project style guidelines across all publishers within the project.
Budgeteer / Scrounger
- Ensuring the project has the resources it needs to progress effectively, and the continued support of its resource (budget) holders.
- Ensuring the product supports access by people with disabilities.
- Ensuring the optimal use of any contracted (third-party) suppliers and sub-contractors to the project.
The Extended Team
The Extended Team includes all those people not part of the Core Team that nevertheless have critical roles to play in the successful development and launch of the new product or service.
- Ensuring that the evolving product or service continually best meets stakeholders’ needs.
- Resolving prioritisation conflicts regarding e.g. implementation of features (could be a Core Team role on occasion).
- Providing resources, accountability.
- Articulating big-picture goals.
- Demanding continual improvement in the way things get done.
- Presenting the team, its methods and achievements, positively to the rest of the organisation.
- Protecting the team from the consequences of its success.
- Resolving inter-project conflicts.
- Presenting their own views, perspectives and needs.
- Reviewing plans, priorities, risks and deliverables.
- Representing the views, perspectives and needs of their potential stakeholder communities.
- Reviewing plans, priorities, risks and deliverables.
- Assisting in hiring, motivating and aligning the members of the core team.
- Advising of Employment Law and company employment policies and procedures.
- Advising and guiding the team on domain-related issues (better as a Core Team role whenever possible).
Value Chain Maven
- Ensuring the product works well w.r.t. inter-company (extended / integrated value chain) contexts
- Providing the content, etc. for the product or service.
Development Process Advisor / Champion / Steward
- Helping the project maintain a continual-process-improvement process awareness (Kaizen)
- Helping with the selection and adoption of a suitable baseline process.
- Anticipating the needs of each new project team w.r.t. suitable candidate baseline processes (Kaikaku).
Product Liability / IP Lawyer
- Ensuring the product minimises exposure to product liability law suits.
- Preventing patent and other IPR infringements.
- Oversight of the contractual framework of the project.
- Interpreting the legal, contractual requirements for the project to the core team.
- Relieving team members of personal administrivia and allowing them more time to focus on their own specialist contributions.