The role of an Agile Developer is not well-understood and many developers may have difficulty making this transition.
In a traditional plan-driven environment (aka “Waterfall”), a developer might be able to sit in his/her cube with their headset on listening to some cool tunes and isolated from the rest of the world and simply write code. That isn’t possible in a true Agile environment.
The role of a developer in an Agile environment is significantly broader than that and includes:
- Taking responsibility for estimating, planning, and managing all of his/her own tasks and reporting on progress. This role is essentially what a project manager might do on a very small scale.
- Collaborating closely with all the other members of the team to take shared responsibility for the overall efforts that the team has committed to. This role is also similar to what a project manager might do but rather than being done by a single person with the title of “Project Manager”, the responsibility is distributed among all members of the team.
- Taking responsibility for the quality of the software the developer produces. Instead of turning over some code to a separate and independent group for testing, the team, as a whole, takes responsibility for the quality of the work they produce. A developer may or may not do the testing himself/herself but the key point is that the quality of the code is not someone else’s responsibility.
- Interacting with users as necessary to clarify requirements. Developers will typically not be given a well-defined set of requirements. More often, the developer will get some general user stories that are intended to be a “placeholder for conversation” and the developer will be expected to interact with the Product Owner and users as necessary to better define what is needed. This is essentially equivalent to a Business Analyst role on a very small scale.
The role of a developer in an Agile environment is significantly different and some developers may have difficulty making this transition.