Of all the roles involved in development, that of Developer is perhaps the most difficult to implement well.
In a more traditional environment, the single Agile role of ‘Developer’ would include several other roles:
- Functional/business analyst.
- Systems/technical designer.
Agile does not recognise these distinctions:
- All ‘developers’ are expected to possess – or rapidly acquire – a very wide range of skills.
- And not only technical – also presentation (e.g., Showcases), architecture, review, leadership, etc.
- Responsibilities are driven by the team’s current needs, not formal job titles or role boundaries.
- So ‘It’s not my job’ is never the answer!
The role of Agile Developer is very challenging.
To give an idea of how challenging, here is a list of the tasks they may be asked to carry out, along with the role that would perform that task in a traditional environment.
Naturally, few developers have all these skills when they first join an Agile team. Most will never acquire them all. But fortunately, not only does Agile demand such a huge range, but it also creates the optimum environment for acquiring them.
Key knowledge & skills
In addition to general development skills, Agile requires awareness of many specialised skills.
|These are some of the more universal items:||But it is also desirable to have experience of:|
What do Developers do each day?
Here is a summary of a Developer’s regular tasks.
|Before each iteration|
|During each iteration|
|At the end of each iteration|
The right person for the job
As their target responsibilities & skill set suggest, Agile developers come from many backgrounds.
Most will have previously been:
- Business analysts.
- Designers & architects.
They will also tend to share certain key professional and personal attributes:
|Professional characteristics||Personal characteristics|
In a new Agile team – or when inexperienced personnel come on board – a Developer’s previous specialisation can be a major issue.
Differences in experience & professional perspective generates different – and potentially conflicting – approaches & priorities.
- In Agile, work is not assigned by a manager, but adopted by team members.
- So a team member from, say, a testing background may continue to prefer testing tasks for some time.
- So they may remain uncomfortable say, writing stories, for a very long time.
It is part of the Iteration Lead’s role to manage this…
- … but also the shared responsibility of the other team members.
- … and the individual team member’s responsibility to make themselves as Agile as possible.
- By identifying gaps & weaknesses in skill sets.
- By seeking coaching and support.
- By active collaboration with team members with complementary skills.
- By taking the lead as soon as skills are acquired.