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.

Role Sets: Basic Roles
Relationships

Analyze Runtime BehaviorAssure a Quality SolutionDesign the SolutionDetail the DesignImplement the SolutionImplement Unit TestsIntegrate and Create BuildRun Unit TestsBuildCode Analysis GuidelinesDesignDeveloper TestImplementationDeveloper

Additionally Performs
Modifies
    Process Usage
    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].

    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