These findings may not generalize, but the taxonomy is still a valuable checklist for any team that's trying to figure out how to be more efficient.
Building the wrong feature or product
The cost of building a feature or product that does not address user or business needs.
User desiderata (not doing user research, validation, or testing; ignoring user feedback; working on low user value features)
Business desiderata (not involving a business stakeholder; slow stakeholder feedback; unclear product priorities)
Mismanaging the backlog
The cost of duplicating work, expediting lower value user features, or delaying necessary bug fixes.
Working on too many features simultaneously
Not enough ready stories
Imbalance of feature work and bug fixing
Delaying testing or critical bug fixing
The cost of altering delivered work that should have been done correctly but was not.
Rejected stories (e.g. product manager rejects story implementation)
No clear definition of done (ambiguous stories; second-guessing design mocks)
Defects (poor testing strategy; no root-cause analysis on bugs)
Unnecessarily complex solutions
The cost of creating a more complicated solution than necessary, a missed opportunity to simplify features, user interface, or code.
Unnecessary feature complexity from the user’s perspective
Unnecessary technical complexity (duplicating code, lack of interaction design reuse, an overly complex technical design created up-front)
Extraneous cognitive load
The costs of unneeded expenditure of mental energy.
Suffering from technical debt
Complex or large stories
Inefficient tools and problematic APIs, libraries, and frameworks
Unnecessary context switching
Inefficient development flow
Poorly organized code
The costs of burdening the team with unhelpful stress.
Low team morale
Interpersonal or team conflict
The cost of idle time, often hidden by multi-tasking.
Slow tests or unreliable tests
Unreliable acceptance environment
Missing information, people, or equipment
Context switching from delayed feedback
The cost of re-acquiring information that the team once knew.
The cost of incomplete, incorrect, misleading, inefficient, or absent communication.
The team size is too large
Asynchronous communication (distributed teams; distributed stakeholders; dependency on another team; opaque processes outside the team)
Imbalance (dominating the conversation; not listening)
Inefficient meetings (lack of focus; skipping retros; not discussing blockers each day; meetings running over (e.g. long stand-ups))