Team and Technical Agility
Team and Technical Agility is one of the Five Core Competencies of the Lean Enterprise.
The Team and Technical Agility competency describes the critical skills and Lean-Agile principles and practices that are needed to create high-performing Agile teams who create high-quality, well designed technical solutions.
Why Team and Technical Agility?
In Lean enterprises, Agile Teams perform most of the work that delivers value to their customers. Consequently, an organization’s ability to execute depends on its collective teams’ ability to deliver solutions that reliably meet a customer’s needs with high quality. As a result, these teams have two essential characteristics:
- Team agility – Agile Teams are high-performing teams that are organized and operate with basic and effective Agile principles and practices.
- Technical agility – Agile Teams apply Agile technical practices to create high-quality, well-designed technical solutions that support current and future business needs.
Team agility enables teams to work in an environment that maximizes value delivery. Small, cross-functional teams aligned around a shared purpose apply a Lean-Agile, flow-based model. What’s more, they understand their role in the entire enterprise as well as the SAFe Agile Release Train (ART) which is a long-lived, team of agile teams which provides the larger vision, direction, and solution outcomes. Technical agility guarantees that team members have the requisite skills and technical practices to create the best possible solutions. They ensure systems are architecturally sound, high in code and component quality, and are easily modified to support future requirements.
These two competencies, team and technical, are the yin and yang of Agile teams, the complementary and dependent forces that create the high-performing units that power SAFe and, ultimately, the entire enterprise.
Team agility is the first half of this competency. Agile teams operate as a collaboration between the Business Owners, developers, and testers to create alignment, common understanding, and quick, predictable delivery of value. These teams have the authority and accountability to manage their own work, increasing productivity, and reducing overall speed-to-market. Agile teams commit to small batches of work, reducing feedback cycles, and adjusting to changing needs.
Agile teams are the engine that drives the ARTs, so it is critical that they are effective. A SAFe Agile Team is a cross-functional group of 5 to 11 people who are responsible for defining, building, testing, and (where applicable) deploying some element of Solution value, all in a short Iteration timebox. Specifically, the SAFe Agile team incorporates the Dev Team, Scrum Master, and Product Owner roles.
Create High-Performing Lean-Agile Teams
Merely grouping people and calling them an Agile team is no guarantee they will operate as an aligned, high-performing team. A true team is accountable and committed to common goals. Much like a sports team, they succeed and fail together. Agile teams are empowered, collaborative, aligned on a common shared goal, and have all the skills necessary to define, build, test, and whenever applicable deploy value in short iterations. A backlog organizes teams around a common goal and creates a shared understanding of what needs to be built, the relative value, and prioritization. SAFe Agile teams operate in the large context of an ART, which supports scaling.
Work in a Lean-Agile Process
SAFe Agile teams typically employ a blend of Agile methods, including Scrum and Kanban. Most teams base their work on Scrum and include the following Scrum practices:
- Work in short two-week iterations
- Break work into small user Story backlogs
- Plan the work for the upcoming iteration
- Meet daily to assess progress towards the iteration goals in daily stand-up meetings
- Demonstrate a working system at the end of the iteration
- Discuss how to improve the process before starting the iteration cycle again
To optimize flow, teams also visualize and manage their flow of work in a Kanban system. Kanban helps teams identify bottlenecks by defining work-in-process (WIP) limits to help teams stop working on new user stories and start finishing work in the queue. Teams are cross-functional and have all the skills necessary to complete work on a feature or component. Agile teams do not group by functional skill (tester team, developer team, etc.) or technical infrastructure, as silo-based teams create dependencies that slow overall value delivery.
Operate as Part of an Agile Release Train
Nothing beats an Agile team, except a team of Agile teams. To deliver complex systems, multiple teams need to collaborate under the umbrella of an ART. These trains bring together all the people needed to define, build, test, and deploy a solution for customers.
It is not enough for a team to plan and execute by itself. Instead, all teams on an ART need to plan together, integrate and demo together, deploy and release together, and learn together. Each team understands and commits to achieving not only their objectives but the larger ART objectives as well.
Team agility provides the way for teams to work and deliver value alone, or with other teams in short timeboxes. For the delivery to be effective, however, it’s essential to build quality in, which requires technical agility.
Technical agility, the second half of this competency, defines the Agile Software Engineering principles and practices teams use to deliver solutions quickly and reliably. Software Engineering is “the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.”  Agile Software Engineering adds Lean-Agile values and principles and eXtreme Programming (XP) practices, agile modeling, proven approaches for software design, and more.
Agile teams operate in a fast, flow-based system to quickly develop and release high-quality business capabilities. Instead of performing most testing at the end, Agile teams define and execute many tests early, often, and at multiple levels. Tests are defined for code changes (Test-Driven Development (TDD) ), Story acceptance criteria (Behavior-Driven Development (BDD) ), and Feature benefit hypothesis (Lean-UX) to build in quality (Figure 1). Building in quality ensures that Agile’s frequent changes do not introduce new errors. Agile teams create designs that continually evolve to meet current and future business needs.