Role: Developer
The Developer is responsible for developing a part of the system, including designing it to fit into the architecture, possibly prototyping the user interface, and then implementing, unit-testing, and integrating the components that are part of the solution.

This role develops software components and performs developer testing for integration into larger subsystems, in accordance with the project's adopted standards.

Relationships
Performs:Responsible for:
Additionally Performs:Modifies:
Main Description

The implementer role is responsible for developing and testing components, in accordance with the project's adopted standards, for integration into larger subsystems. When test components, such as drivers or stubs, must be created to support testing, the implementer is also responsible for developing and testing the test components and corresponding subsystems.

Further Reading

See Code Complete - A Practical Handbook of Software Construction [MCO93].

Properties
Multiple Occurrences
Optional
Planned
Staffing
Skills

The person in this role needs the following knowledge, skills, and abilities:

  • Enough expertise and experience to define and create technical solutions in the project's technology
  • Ability to understand and conform to the architecture
  • Ability to identify and build developer tests that cover required behavior of the technical components
  • Ability to communicate the design in a way that other team members understand

The appropriate skills and knowledge for the implementer include:

  • knowledge of the system or application under test
  • familiarity with testing and test automation tools
  • programming skills

In addition, to create a visual model of the system, the person in this role needs the ability to render the design in the Unified Modeling Language (UML).

Assignment Approaches

A person performing this role can have specialized skills in a particular technical area but should also have a broad understanding of all of the technologies involved to be able to work with other technical team members.

Even in the smallest team, multiple individuals should be working together to create the technical solution. In small, agile teams, this role is often shared among several team members who also perform other roles. 


See Guideline: Staffing a Project for more information about how several team members can fill this role.

See Guideline: Self-Organize Work Assignments for more information about how several team members can fill this role.

An implementer may be assigned responsibility for implementing a structural part of the system (such as a class or implementation subsystem), or a functional part of the system, such as a use-case realization or feature.

It is common for a person to act as both implementer and designer, taking on the responsibilities of both roles.

It is possible for two persons to act as the implementer for a single part of the system, either by dividing responsibilities between themselves or by performing tasks together, as in a pair-programming approach.

More Information