Disciplined Agile

Impediments to Progress and Quality

An impediment is any technical, personal, or organizational issue that inhibits progress being made on delivering a product to the customer. Impediments are inevitable. It is always the responsibility of the team to expose impediments as they arise rather than burying them hoping they will go away. The team is responsible for resolving impediments that lie within its “span of influence” (within which it can effect change). The team lead, acting on behalf of the team, elevates all other impediments to management to be addressed. The product owner or management agree to help.

Table 1 offers examples of common impediments by level.

Table 1. Examples of impediments

At this level…

Common impediments include…

Individual team member

Related to preparation

  • Lack of training
  • Development environment is not available: hardware, software, tools
  • Team infrastructure is not available: project board, tools

Related to communication and customer

  • Not allowing team members to talk with customers
  • Excessive interruptions
  • Having to multi-task
  • Being frequently interrupted by support issues
  • Analysts working on too many projects at once, being asked questions from too many developers

Related to project

  • Business analysts do not know the customer, what they need, or what is most important
  • Not knowing who represents the voice of the customer
  • Team members making promises inappropriately

Individual team

Related to the project

  • Lack of clear project vision
  • Too much work-in-progress
  • Unclear definitions of Done
  • Not checking in code frequently

Related to time

  • People do not come to the daily coordination meeting on time
  • People have different work hours, time zones, shifts

Related to the ecosystem

  • Not being colocated
  • Not having an open team room
  • Excessive interruptions
  • Abrupt change of plans through management directives
  • Management adding work to the backlog in the middle of an iteration

Cross-team

Related to collaboration

  • Lack of value stream maps
  • Lack of timely feedback from other teams
  • Lack of appropriate integration and test environments

Related to structural

  • Team structure that makes end-to-end functionality difficult to attain
  • Having to reform teams each iteration / release, causing re-learning, trust-building, and re-establishing team dynamics
  • Interfacing with non-agile teams

Management

Related to oversight

  • Product backlog not being updated
  • Team coach not being supported by management or team
  • Deficiencies in the code base
  • Having to deal with old, legacy code that no one knows
  • Required language skills have atrophied over time
  • Poor code quality
  • Lack of documentation (architectural, design)
  • Having to attend meetings not related to development of the project

Testing and QA

 Related to process

  • Developers not wanting to talk with testers or customers
  • Developers not talking to testers until late in the process
  • Writing tests only after code has been completed

Related to ecosystem

  • Lack of a testing environment
  • Taking too long to run tests
  • Lack of access to data for testing
  • Difficulty in performing manual tests
  • Inability to do automated testing
  • Lack of tools for testing databases programmatically

Addressing Impediments

The team identifies impediments in the process of actually doing work. They should surface at least during the daily coordination and iteration retrospectives. Whenever an impediment is identified, the team lead writes a story for the impediment. The team prioritizes the impediment story and decides whether to resolve as a team or elevate.

In the crush of work, teams are tempted to ignore impediments, or they identify too many impediments and never resolve anything. Both of these are mistakes and team lead must encourage the team to stay disciplined.

Techniques for addressing impediments include:

  • Improvement workshop to address the impediment
  • Root cause analysis