Developer

Developer2017-10-12T22:05:27+00:00

Overview

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.
  • Programmer/coder.
  • Tester.
  • Etc.

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!

Key responsibilities

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.

Analyst

  • Identify & maintain business rules.
  • Plan releases.
  • Determine business value of epics & stories.
  • Help users & Product Owner articulate stories & acceptance criteria.
  • Estimate stories.
  • Advise on priorities.
  • Functional modelling & design.
  • Evaluate change proposals.
  • Support acceptance.

Designer

  • Create & maintain architecture.
  • Set design goals, rules & approach.
  • Design user experience & UI.
  • Design applications, data & interfaces.
  • Design infrastructure, networks, etc.
  • Prepare technical documentation.

Programmer

  • Build working software.
  • Programming & coding.
  • Unit testing & test-driven development.
  • Prototyping.
  • Fix bugs.
  • Present Showcases.
  • Support integration.

Tester

  • Define test strategy & plan.
  • Translate stories into acceptance criteria.
  • Translate acceptance criteria into tests.
  • Prepare test scripts & data.
  • Execute manual tests.
  • Automate manual tests.
  • Design, build & execute automated tests.
  • Facilitate user & operational acceptance.
  • Manage defects.
  • Report test activity, progress & results.

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.

PhaseTasks
Before each iteration

During each iteration
  • Collaborating with users to interpret & implement Stories.
  • Writing working software.
  • Testing software.
  • Performing peer reviews.
  • Refining the Backlog.
  • Presenting their Stories at Showcases.

At the end of each iteration
  • Attending Retrospectives to:
    • Identifying lessons and impediments.
    • Proposing improvements.

Between iterations
  • Restoring the working environment to its ‘normal’ state.
  • Implementing improvement & removing impediments.

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.
  • Programmers.
  • Coders.
  • Testers.

They will also tend to share certain key professional and personal attributes:

Professional characteristicsPersonal characteristics
  • Technically skilled.
    • Ideally multi-skilled.
    • Committed to technical excellence.
    • Familiar with a range of standards.
    • Comfortable with new technologies.
  • Broadly experienced in relevant domains.
    • Business & operational as well as systems.
  • Experienced in working directly with users.
  • Strong speaking & presentation skills.
  • Strong team player.
  • Fast learner.
  • Comfortable with uncertainty & risk.
  • Eager for responsibility.
  • Highly disciplined/professional.
  • Self-starter.

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.

Leave A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Want to do more than just build systems?