Skills that Developers Need to Acquire in an Agile Transformation

Skills that Developers Need to Acquire to Achieve an Agile Transformation

Amir Kolsky, Rob Neppel, and Jim Trott talk about eight essential skills that developers need to acquire to work in an Agile transformation. Some of these skills are certainly taught in university; some are not as common… but are still essential. These are essential for any professional developer.

The essential skills are:

  1. Programming. The programmer needs to know how to program. The act of taking a design and implementing it in a language and environment.
  2. Design. Creating a good Object-Oriented design based on design patterns. Depends on understanding the specification. The challenge in Agile is that the specification is always changing. You need to know how to create emergent design. TDD helps here.
  3. Refactoring. Pre-factoring (before you make changes to the code) and Post-factoring on legacy code to deal with the code smells.
  4. Analysis: Domain analysis and technical analysis. Working with stakeholders to understanding the specifications and to create specifications up front on what is necessary. ATDD is essential here. Communication is critical here because developers are actively engaged in every aspect of the process. ATDD and TDD helps to facilitate communication.
  5. Testing. This can be learned from the testers in the organization.
  6. Estimation.
  7. DevOps. Looking further down the value stream, extending the definition of done into deployment. Continuous Intergration is just the start of this.
  8. Process Improvement. This is a discipline that the entire team must embrace.

How Can We Coordinate Multiple Teams? (Shared Backlogs)

Much of the time, the functionality required to deliver business value is substantial enough to require being worked on by multiple teams. A good way to coordinate those teams is usually to make them part of a larger cross-functional team).  However, organizing this way is not always possible or effective. Sometimes people try Scrum-of-Scrums, but that often doesn’t work either. And SAFe has its own way of coordinating teams, but can be too heavy for the smaller mid-scale organizations (50-100, while mid-scale can go up to 300).

A good alternative at mid-scale is to start with a program-level backlog and apportion the work into backlogs for the teams in such a way that the work done during sprints performed in parallel by all the teams will combine to deliver a larger piece of functionality that can be demonstrated to the customer. Continue reading “How Can We Coordinate Multiple Teams? (Shared Backlogs)”