SDM > Roles

Process impact: This document defines the roles that people play in the software development process. Each role has a set of defined responsibilities. Documenting this aspect of the process helps identify roles that must be staffed on each development team. The explicit list of responsibilities helps each team member understand what they must do. See the artifact producer/consumer matrix for project document ownership responsibilities.
TODO: Read the list of roles and responsibilities below and consider how each relates to your software development process. Adjust the role definitions to fit your current process. Discuss role definitions with individual team members. Use the list of roles as a checklist when planning project human resource needs, or when writing job descriptions. Refine this document over time to help improve your process.

Project Manager

Description: Project managers own the effort of the project staff: the manager must plan and specify tasks for team members to work on, help improve the process, and guard against risks such as loss of resources. They work with individual contributors to estimate tasks and track progress. Project managers are the official interface between the project and rest of the organization.

Every project should have a project manager. For very small projects, the lead developer may also be given the project manager role.

Skills:
  • Strong understanding of requirements
  • Strong management skills
  • Strong technical communications
  • Strong understanding of corporate policies
  • Excellent understanding of the software development process
Responsibilities:
  • Allocate staff to fill all roles needed in project
  • Maintain project plan and schedule
  • Track project status and risks
  • Report project status and risks to upper management
  • Participate in change control board
  • Participate in software process improvement efforts
  • Participate in reuse board

Product Manager

Description: The most obvious thing that a product manager does is write the SRS: the product manager owns the software requirements document. To specify a product that will be successful, product managers must understand user needs, market opportunities, and the abilities of the development organization. Product managers often work closely with the sales force to determine how product features affect sales.
Skills:
  • Excellent understanding of requirements
  • Excellent understanding of market segment and competing products
  • Excellent technical communications
  • Strong negotiation skills
  • Excellent understanding of the software development process
Responsibilities:
  • Create and maintain the SRS
  • Negotiate with customers to prioritize requested features or changes
  • Negotiate with engineering management to prioritize deliverables and adjust schedules

Domain Expert

Description: Domain experts know the business domain well. They help the development team to understand requirements that might otherwise remain unstated (leading to misunderstandings).

When domain experts are not available, product managers or business analysts must take on these responsibilities.

Skills:
  • Detailed knowledge of their area of expertise
  • Strong technical communications
  • Some understanding of the software development process
Responsibilities:
  • Help the project understand key and/or subtle requirements
  • Help product managers understand the target market

QA Group > Test Engineer

Description: Test engineers work to test the product. Testing can be done during development as an aid to developers, or closer to the end of the release cycle as part of the release criteria. Testing seeks to both determine the quality of the product, and to pinpoint defects that need repair. Test engineers work with management to choose the testing approach, deploy needed testing infrastructure, design the test suite, automate testing processes, perform test runs, produce test reports, evaluate test reports, and report defects. Test engineers are often strongly affected by the software development process and should be active participants in process improvement.

If a dedicated test engineer is not available, these responsibilities may be given to one of the developers.

Skills:
  • Computer science theory: testing
  • Strong knowledge of testing tools
  • Careful attention to detail, even under pressure
  • Strong technical communications
  • Strong understanding of the product
  • Strong understanding of the software development process
Responsibilities:
  • Work with management to choose testing approach
  • Deploy needed testing infrastructure
  • Advise developers on achieving testability
  • Design the test suite
  • Automate testing processes
  • Perform tests
  • Produce test reports
  • Evaluate test reports
  • Report defects
  • Advise change control board on change impact
  • Participate in software process improvement efforts

QA Group > Tester

Description: Testers work with test engineers, but focus on the specific tasks of performing tests.
Skills:
  • Strong knowledge of testing tools
  • Careful attention to detail, even under pressure
  • Strong technical communications
  • Strong understanding of the product
  • Strong understanding of the software development process
Responsibilities:
  • Perform tests
  • Produce test reports
  • Evaluate test reports
  • Report defects

Dev Group > Developer

Description: Developers are the core of the development team. They do all the technical work of designing and coding the system. They provide the basic information needed for use by the technical writers, technical support engineers, and operations engineers. They perform core QA activities including conducting reviews, using automated analysis tools, and maintaining unit tests. Developers are also involved in the management of the project by providing task estimates, task dependency information, and accurate status reports.
Skills:
  • Programming languages, design languages, and tools
  • Computer science theory: all aspects
  • Careful attention to detail, even under pressure
  • Strong technical communications
  • Excellent understanding of the software development process
Responsibilities:
  • Design the system
  • Implement the system
  • Author most of the technical documentation
  • Supply information to technical writers for user documentation
  • Participate in peer reviews
  • Implement and maintain unit tests
  • Provide task estimates and status reports
  • Advise change control board on change impact

Dev Group > DBA (Database Administrator)

Description: DBAs are specialists in database design and operations. They work with developers to design the system's database structure, integrity constraints, stored procedures, and queries. DBAs must start by understanding the system requirements so that needed data can be expressed in the database. Later, DBAs often focus on the efficiency and scalability of key queries. DBAs may work with the operations team to tune database performance. As new requirements are added, the DBA may need to plan the evolution of the database.

If a dedicated DBA is not available, these responsibilities may be given to one of the developers.

Skills:
  • Computer science theory: databases
  • Detailed knowledge of database products
  • Strong technical communications
  • Good understanding of the software development process
Responsibilities:
  • Work with developers to design the product database
  • Work with developers to implement efficient queries
  • Work with operations engineers to maintain and tune the database
  • Design and implement utilities to evolve the database schema as needed

Dev Group > Release Engineer

Description: Release engineers play a key supporting role in the release process. They perform the technical tasks of tagging and packaging releases. They often also serve as a single point of coordination for the final steps in the release. Throughout the entire release cycle, they participate in software process improvement and often help choose, deploy, and maintain development tools, such as automated build systems.

If a dedicated release engineer is not available, these responsibilities may be given to one of the developers.

Skills:
  • Excellent knowledge of software packaging tools
  • Strong knowledge of software development tools
  • Strong technical communications
  • Careful attention to detail, even under pressure
  • Excellent understanding of the software development process
Responsibilities:
  • Manage version control tags and branches
  • Help choose, deploy, and maintain development tools
  • Help design and maintain the automated build process
  • Package the product for release
  • Work with operations engineers to deploy and upgrade the product
  • Advise change control board of impact of changes
  • Participate in software process improvement efforts
  • Advise software reuse board on packaging issues

Dev Group > Technical Topic Expert

Description: Topic experts specialize in specific technical aspects of the product. For example, a security expert or an expert webserver administrator. Topic experts are often brought into the project to consult for a limited time.
Skills:
  • Detailed knowledge of their area of expertise
  • Strong technical communications
  • Good understanding of the software development process
Responsibilities:
  • Help the project with key technical challenges
  • Help core developers understand the proposed solution

Dev Group > UI Designer

Description: UI designers are responsible for the system's user interface. They must have a very strong understanding of the users' tasks and expectations. They propose UI designs, which must then be evaluated before final implementation.

When UI designers are not available, these responsibilities are often taken on by product managers.

Skills:
  • Excellent understanding of requirements and user tasks
  • Excellent understanding of the product
  • Excellent understanding of usability
  • Excellent technical communications
  • Strong understanding of competing products
  • Good understanding of the software development process
Responsibilities:
  • Study user tasks, knowledge, and UI expectations
  • Propose UI designs
  • Evaluate current and proposed UI designs
  • Work with technical writers and tech support on the overall user experience

Technical Writer

Description: End-user documentation is the most obvious product produced by technical writers. That may include a printed user-guide, text for on-line help, content for the product website, technical support articles, and release notes. Technical writers may also help with other technical documents, such as API specifications, operations manuals, or developer cookbooks.
Skills:
  • Excellent technical communications
  • Good understanding of the software development process
  • Excellent understanding of the writing process
Responsibilities:
  • Produce end-user documentation, such as the user-guide
  • Produce additional documentation, e.g. release notes, product website content
  • Work with UI designers and tech support on the overall user experience
  • Help with technical documents such as API specifications

Sales Engineer

Description: Sales engineers are technically knowledgeable members of the sales force that provide technical support to sales people and potential customers. Sales engineers play a role that is analogous to that of technical support engineers, except that they work with potential customers to help them evaluate the product.

If a dedicated sales engineer is not available, the sales force may want to borrow one of the developers, to the detriment of the project schedule.

Skills:
  • Excellent understanding of the product
  • Strong understanding of customer I.T. concerns
  • Strong technical communications
  • Good understanding of the software development process
Responsibilities:
  • Provide technical support to sales people and potential customers
  • Perform product demos
  • Maintain the product demos script and any needed infrastructure
  • Explain key technical benefits of the product to technical staff at the customer site

Technical Support Engineer

Description: The most obvious task for tech support engineers is answering phone calls to help users actually use the product. They may also maintain a technical support website for the same purpose. Technical support engineers play a key role in alerting the development team and/or operations engineers to defects in the deployed product or opportunities to better serve users.

Dedicated support engineers should always be used to support products. However, developers and other members of the team may sometimes rotate through technical support to observe user experience first-hand.

Skills:
  • Excellent understanding of the product
  • Excellent understanding of past user problems
  • Excellent technical communications
  • Strong interpersonal skills: e.g., listening
  • Understanding of the software development process
Responsibilities:
  • Help customers with common problems
  • File defect reports on behalf of customers
  • Keep key customers informed of the status of reported defects
  • Convey user feedback to product management
  • Work with QA team to understand known defects and work-arounds
  • Work with technical writers and UI designers on the overall user experience

Operations Engineer

Description: Operations engineers deploy, configure, and administer servers in ASP (application service provided) businesses. Key operations activities include avoiding security and performance problems, monitoring system status, reacting to problems, performing system backups and recovery, and upgrading servers.
Skills:
  • Excellent understanding of the product
  • Excellent understanding of server technologies
  • Excellent understanding of operations processes
  • Strong technical communications
  • Understanding of the software development process
Responsibilities:
  • Purchase, install, and provision server hardware
  • Build and maintain operations infrastructure: e.g., private networks, public bandwidth, power supply, physical racks
  • Deploy, configure, and administer server software
  • Server security configuration and audits
  • Monitor system status
  • React to problems: e.g., server downtime
  • Back up customer data
  • Upgrade server hardware and software
  • Work with product management and developers to make sure operability requirements are considered

ROLE-NAME

Description: DESCRIPTION.
Skills:
  • UNIQUE-TASK-KNOWLEDGE
  • THEORETICAL-BACKGROUND-KNOWLEDGE
  • CURRENT-TECHNICAL-KNOWLEDGE
  • TASK-SPECIFIC-PROCESS-KNOWLEDGE
  • TECHNICAL-COMMUNICATIONS
  • GENERAL-DEVELOPMENT-PROCESS-KNOWLEDGE
Responsibilities:
  • OWNERSHIP-OF-SPECIFIC-TASKS
  • OWNERSHIP-OF-SPECIFIC-DOCUMENTS
  • SUPPORT-TASKS-DONE-BY-OTHERS
  • OWNERSHIP-OF-PRODUCT-QUALITIES
  • OWNERSHIP-OF-PROCESS-QUALITIES
  • ADVICE-AND-REPORTS-TO-MANAGEMENT

ROLE-NAME

Description: DESCRIPTION.
Skills:
  • UNIQUE-TASK-KNOWLEDGE
  • THEORETICAL-BACKGROUND-KNOWLEDGE
  • CURRENT-TECHNICAL-KNOWLEDGE
  • TASK-SPECIFIC-PROCESS-KNOWLEDGE
  • TECHNICAL-COMMUNICATIONS
  • GENERAL-DEVELOPMENT-PROCESS-KNOWLEDGE
Responsibilities:
  • OWNERSHIP-OF-SPECIFIC-TASKS
  • OWNERSHIP-OF-SPECIFIC-DOCUMENTS
  • SUPPORT-TASKS-DONE-BY-OTHERS
  • OWNERSHIP-OF-PRODUCT-QUALITIES
  • OWNERSHIP-OF-PROCESS-QUALITIES
  • ADVICE-AND-REPORTS-TO-MANAGEMENT

ROLE-NAME

Description: DESCRIPTION.
Skills:
  • UNIQUE-TASK-KNOWLEDGE
  • THEORETICAL-BACKGROUND-KNOWLEDGE
  • CURRENT-TECHNICAL-KNOWLEDGE
  • TASK-SPECIFIC-PROCESS-KNOWLEDGE
  • TECHNICAL-COMMUNICATIONS
  • GENERAL-DEVELOPMENT-PROCESS-KNOWLEDGE
Responsibilities:
  • OWNERSHIP-OF-SPECIFIC-TASKS
  • OWNERSHIP-OF-SPECIFIC-DOCUMENTS
  • SUPPORT-TASKS-DONE-BY-OTHERS
  • OWNERSHIP-OF-PRODUCT-QUALITIES
  • OWNERSHIP-OF-PROCESS-QUALITIES
  • ADVICE-AND-REPORTS-TO-MANAGEMENT

Other Roles

  • Legal: protects the legal interests of the organization
  • Manufacturing: Actually burns/presses CBS, prints manuals, etc.
  • Partners: Other companies that help build, sell, or integrate
  • Vendors: Companies that make and support the tools and components that developers use
  • Key customers: provide requirements, fund ongoing development
TODO: Check for words of wisdom for additional advice on this template.
Company Proprietary
Copyright © 2003-2004 Method Labs. All rights reserved. License terms. Retain this copyright statement whenever this file is used as a template.