The developer role is responsible for working with other members of the team to build potentially releasable features in every iteration.
The developer role collaborates with technical roles and business roles on the team. Technical roles include testers, UX designers, and database developers. Team business role(s) include product owner or alternatively business lead, business subject matter experts or business analysts. The developer may also on occasion work with higher-level technical roles such as program architect or system architect, as needed to ensure the team-level products are compatible with the overall system.
The developer has primary responsibility on the team for evaluating requirements for technical characteristics like implementability, modifiability, or extensibility. As needed, the developer role will work with the primary business role (ideally the product owner) to find a way to clarify the requirement so it both accomplishes its intended business purpose, and also allows for a suitable technical solution. A developer will (along with the other team roles) assist with writing acceptance test cases as appropriate.
The developer role works with the other roles to create optimal feature- and story-level design solutions. The developer works with the team to ensure that the results of developing all stories will meet all functional and acceptance tests.
The developer also helps the team resolve impediments, getting help from inside and outside the team as needed.
A Note About Roles
As stated in People first: Roles in DAD,
- On a DAD team, any given person will be in one or more roles, an individual can change their role(s) over time, and any given role will have zero or more people performing it at any given time.
- Roles are not positions, nor are they meant to be. For example, there may be many stakeholders of your project and none of them is likely to have a position of “stakeholder.”
- Agile de-emphasizes specialized roles and considers all team members equal – everyone pitches in to deliver a working solution regardless of their job description.
For more information, see People first: Roles in DAD.
The developer role focuses on working with other members of the team to build potentially releasable features in each iteration. The developer collaborates with business analysts and testers on stories and tasks, ensuring that the results meet all functional and acceptance tests. The developer also helps the team resolve impediments, getting help as needed.
Here is a quick overview of the team’s responsibilities.
- The team drives the product from a tactical perspective. It is autonomous and self-organizing and is accountable to the product owner for committing to and delivering product increments in each iteration.
- The team works in parallel with all appropriate stakeholders to estimate the size of backlog items, make design and implementation decisions, and transform stories into high quality software solutions.
- Working with the team lead, the team tracks its own progress, raises awareness for impediments, and devises options to maintain forward progress. The team is responsible for establishing processes and standards, continuously improving them, and then following those processes and standards.
Participating in sizing, prioritizing, and decomposing stories into tasks.
At a high level, identifying enabling and systematic evolution issues that must be addressed.
Identifying process and environment issues which might need to be addressed in the upcoming iteration.
Using their insight to identify skills needed to achieve the iteration commitment.
Collaborating with the product owner and committing together with the rest of the team to deliver an increment of the product.
Focusing efforts on delivery of the highest priority stories while identifying dependencies.
Building rapport with team members to increase team collaboration.
Maintaining a positive and safe work environment and increasing trust.
Contributing to development and testing by swarming on stories and tasks.
Developing tests and code that conform to the code quality standards agreed to by the team.
Helping to resolve impediments that are within the team’s span of influence.
Contributing to the daily coordination meeting.
Clearly marking effort on remaining tasks and who the owner is.
Discussing issues raised during the daily coordination meeting about which the analyst can help.
Being aware of team cohesion and sustainability.
Ensuring the test strategy is implemented effectively and in a timely manner.
Ensuring the test strategy is implemented effectively and in a timely manner for SAT, CAT.
Controlling WIP to ensure flow of development.
Demonstrating the product / product increment to the product owner, product manager, and other appropriate stakeholders.
Participating in the iteration retrospection. Identify and commit to actionable improvement goals for the next iteration based on what worked well and what can be improved.
Practices for the Developer
- Controlling work-in-process (WIP)
- Daily coordination
- Decomposing a feature into stories
- Design patterns
- Issues of quality
- Iteration demonstration and review
- Iteration planning meeting
- Iteration retrospective
- Responsibilities and practices
- Unfinished work
- Visual controls
- Writing tasks