Becoming a “Startup at Scale”
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
agilepatterns.org
Antipatterns
Agile Template Cherry Picking Cloned Avatar Death March Disguised Project Distributed Team Management by Reporting Micromanagement Sprint Zero
Time Theft Too Busy
Unbounded Team Unbounded Timebox
Patterns of Representation
Avatar Backlog Epic Forecast Increment
Information Radiator Metrics
Minimum Viable Product
Proxy Product Ownership Relative Sizing Value Stream
Patterns of Method
Controlled Failure Done
Inspect and Adapt Iterate
Kanban Sandwich Limited WIP
Pivot
Red Green Refactor Scrumban
Single Piece Flow Timebox
Trade
Patterns of Responsibility
Management by Exception
Peer Product Ownership
Quality of Service Servant Leadership Swarm Teamwork Release Orchestration
Limited WIP
DevelopmentTeam
accept(BacklogItem) test()
BacklogItem
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
| WorkInProgress |
WIPLimit : integer WIPCount : integer {WIPCount <= WIPLimit} | |
|
{ ordered }
Transformation Backlog
Transformation Backlog
Transformation Backlog Item
Selected patterns
name, which must be unique
a supporting diagram, using a commonly understood class modeling notation
a description of:
the intent behind the abstraction of the pattern
any proverbs that help illustrate its everyday relevance
any terms by which it might also be known - this entry is optional the motivation for using it
the structure of the pattern, with particular relevance to the supporting diagram
the situations in which the pattern is most applicable the consequences of using the pattern
common implementations of the pattern references to related patterns or items of interest
Change Target(s)
Delivery Team A
Pseudo Product Owners X, Y and Z
Acceptance Criteria
Single Product Owner is identified
name, which must be unique
a supporting diagram, using a commonly understood class modeling notation
a description of:
the intent behind the abstraction of the pattern
any proverbs that help illustrate its everyday relevance
any terms by which it might also be known - this entry is optional the motivation for using it
the structure of the pattern, with particular relevance to the supporting diagram
the situations in which the pattern is most applicable the consequences of using the pattern
common implementations of the pattern references to related patterns or items of interest
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Sponsored Vision
Sponsored Vision
Transformation Backlog
Transformation
Heartbeat
Rollout Team
Senior management must
clear strategic vision
articulate and sponsor a
for
agile transformation across the enterprise.
This vision must acknowledge and authorize
the Rollout Team as organizational change agents. It must be absolutely clear that the
need for deep and persistent change is recognized and sponsored at the highest level.
This strategic vision for change can help inform the Rollout Team about
the priorities and organization of the
Transformation Backlog.
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Change Actioning
Transformation
Heartbeat
Team
Cadence
Daily Cadence
Rollout Team
Transformation
Backlog
The current highest priority item is taken from the backlog by the Rollout Team and applied to the identified organizational target(s)
Suitable targets include Delivery Teams and their stakeholders
Delivery Teams
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Rollout Team
Transformation
Backlog
Transformation
Heartbeat
Daily Cadence
Rollout Team
The Rollout Team helps the
organization to change by adopting agile practices across
the enterprise. It includes a clear Agile Sponsor and at least one Agile Coach.
Targets for change include Delivery Teams and their stakeholders
Agile Agile Coaches Sponsor
Team
Cadence
The Rollout Team decide which agile patterns are most applicable at any given time and to whom
Delivery Teams
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Transformation Heartbeat
Transformation
Heartbeat
Daily Cadence
Rollout Team
The Rollout Team manages
organizational change through a regular heartbeat of inspection and
adaptation. This heartbeat must accommodate and inform the cadence of organizational delivery cycles as well as operational day-to-day work.
The cadence of a Delivery Team could be aligned to a Scrum Sprint or Kanban inspection cycle.
Agile Agile Coaches Sponsor
Team
Cadence
Changes are actioned as soon as the Rollout Team's WIP limit and the targeted Delivery Team's cadence allows
Delivery Teams
Transformation
Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Team Cadence
Transformation
Heartbeat
Daily Cadence
Rollout Team
A Transformation Heartbeat must be
no longer than one month. This alignment allows the Rollout Team to
assess the progress of organizational change at a juncture that is sympathetic to all teams and their delivery responsibilities.
Delivery Teams are free to choose shorter periods,
such as two or even one week cadences, as long as they all align with the Transformation Heartbeat. An example of a Team Cadence might be a Scrum Sprint.
Agile Agile Coaches Sponsor
Team
Cadence
Changes are actioned as soon as the Rollout Team's WIP limit and the targeted Delivery Team's cadence allows
Delivery Teams
Transformation
Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Daily Cadence
Transformation
Heartbeat
Daily Cadence
Rollout Team
Agile Sponsor
Agile Coaches
Team
Cadence
Changes are actioned as soon as the Rollout Team's WIP limit and the targeted Delivery Team's cadence allows
Each Delivery Team must review its efforts on a daily basis, and refocus them if necessary.
Examples of daily cadence include timeboxed Scrum
meetings and Kanban standups.
Delivery Teams
Transformation
Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Delivery Teams
Transformation
Heartbeat
Daily Cadence
Rollout Team
Agile Sponsor
Agile Coaches
Team
Cadence
Changes are actioned as soon as the Rollout Team's WIP limit and the targeted Delivery Team's cadence allows
In enterprise agile adoption, everyone involved in delivering products or services is a potential “change target”. The Delivery Team is the basic unit of agile transformation and change. Examples include potential Scrum Teams or Kanban Teams.
Delivery Teams
Transformation
Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Verification
Sponsored Vision
Transformation
Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Rollout Team
Each item on the Transformation Backlog has Acceptance Criteria. These are evaluated by the Rollout Team at least once every Transformation Heartbeat. Once the criteria are met the item is retired, and further changes
brought into progress from the backlog.
Transformation Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Actionable Metrics
The success of agile transformation should be measured in objective terms. Adjustments can then be made where needed, the Transformation Backlog can be revised, and the effectiveness of the transition thus optimized. A Rollout
Sponsored Vision
Transformation
Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Rollout Team
Team should carefully select metrics that are appropriate for this purpose.
Transformation Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Validated Learning
Rollout Team
Sponsored Vision
Transformation Heartbeat
Actionable Metrics
Validated Rollout Strategy
The implementation of agile change should result in tangible improvement. The Rollout Strategy, which informs the Transformation Backlog, should be updated accordingly. If the expected improvements do not transpire, then the change can be reinstated on the backlog with an improved pattern selection and/or acceptance criteria.
Transformation
Backlog
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Validated Rollout Strategy
Rollout Team
Sponsored Vision
Transformation Heartbeat
Actionable Metrics
Validated Rollout Strategy
The lessons learned from coaching change must be used to improve and further refine the organization's agile transformation strategy. By using actionable metrics to gauge success, refinements to the approach can be validated. The composition and ordering of a good Transformation Backlog is informed by such considerations.
Transformation
Backlog
agilepatterns.org
Antipatterns
Agile Template Cherry Picking Cloned Avatar Death March Disguised Project Distributed Team Management by Reporting Micromanagement Sprint Zero
Time Theft Too Busy
Unbounded Team Unbounded Timebox
Patterns of Representation
Avatar Backlog Epic Forecast Increment
Information Radiator Metrics
Minimum Viable Product
Proxy Product Ownership Relative Sizing Value Stream
Patterns of Method
Controlled Failure Done
Inspect and Adapt Iterate
Kanban Sandwich Limited WIP
Pivot
Red Green Refactor Scrumban
Single Piece Flow Timebox
Trade
Patterns of Responsibility
Management by Exception
Peer Product Ownership
Quality of Service Servant Leadership Swarm Teamwork Release Orchestration
The Agile Transformation Pattern
Sponsored Vision
Transformation
Backlog
Transformation Heartbeat
Team Cadence
Daily Cadence
Actionable Metrics
Transformation (Rollout) Team
Delivery Teams
Validated Rollout Strategy
Controlled Failure
ProductOwner
terminate() continue() pivot()
DevelopmentTeam
iterate() : increment
InspectableAdaptable | | ||
inspect(...) adapt(...) | |||
| | ||
| |||
Project close() | InspectorAdaptor | ||
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |||
Done
DevelopmentTeam
accept(BacklogItem) action()
test()
BacklogItem
isComplete : boolean
Backlog
DefinitionOfDone
terms : Enumeration
checkConformity(DefinitionOfDone)
{ ordered }
Inspect and Adapt
Team
publish(Metrics)
Project
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Iterate
Team
iterate() : increment
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
Sprint
InspectableAdaptable
inspect(...)
adapt(...)
Project
SprintBacklog
ProductBacklog
Backlog
Kanban Sandwich
Project
InspectableAdaptable
inspect(...)
adapt(...)
Portfolio
Support
Scrum
Kanban
Enterprise
Limited WIP
DevelopmentTeam
accept(BacklogItem) test()
BacklogItem
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
| WorkInProgress |
WIPLimit : integer WIPCount : integer {WIPCount <= WIPLimit} | |
|
{ ordered }
Pivot
Team
iterate() : increment
Product
hypothesis minimumViableProduct
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
| |
ValidatedLearning | |
test(increment, hypothesis) | |
pivot()
Red Green Refactor
Test
Change
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
TeamMember
Codebase
Team
red green
refactor(change) run(test)
run() : boolean
Scrumban
ScrumbanTeam
iterate() : metric action(item)
Timebox
trade(item, item)
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Project
QualityOfService
Backlog
Item
WorkInProgress
WIPLimit : integer
WIPCount : integer {WIPCount <= WIPLimit}
0..*
{ ordered }
Single Piece Flow
DevelopmentTeam
accept(BacklogItem) action(BacklogItem)
BacklogItem
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
| WorkInProgress |
WIPLimit : integer = 1 WIPCount : integer {WIPCount <= WIPLimit} | |
|
{ ordered }
Timebox
Team
iterate() : metric action(BacklogItem)
Timebox
length
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Event
Backlog
BacklogItem
abandon()
{ ordered }
Trade
Team
iterate() : metric action(BacklogItem)
Project
BacklogItem
size
| Timebox | |
| ||
Trade(BacklogItem : old, Collection<BacklogItem> : new) {old.size <= new.sum(size)} | ||
| | |
{ or
dered } | |
Backlog | |
| |
Management by Exception
Manager
manageWorkstream()
raiseException() { variable > tolerance }
InspectableAdaptable
inspect(...)
adapt(...)
Environment
variable
| |
WorkStream | |
inException : boolean tolerance : Numeric | |
| |
Scrum Master
Product Owner
Team Member
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
Peer
UnitTest
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
Unit
InspectableAdaptable
inspect(...)
adapt(...)
TeamMember
Codebase
Team
refactor(Unit)
| |
Peer | |
approve() | |
Product Ownership
Product Owner
Sprint Backlog
Product Backlog
BacklogItem
size
capacity
{ ordered }
{ ordered }
Team
iterate() : increment
Customer
Sprint Goal
Quality of Service
KanbanTeam
iterate() : metric
action(BacklogItem, QualityOfService)
QualityOfService
Backlog
BacklogItem
WorkInProgress
WIPLimit : integer
WIPCount : integer {WIPCount <= WIPLimit}
{ ordered }
Servant Leadership
DevelopmentTeam
iterate() : increment
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
Project
InspectableAdaptable
inspect(...)
adapt(...)
Servant Leader
External Stakeholder
Dependency
Swarm
DevelopmentTeam
accept(BacklogItem) test()
BacklogItem
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
WorkInProgress
WIPLimit : integer
WIPCount : integer {WIPCount <= WIPLimit}
QualityOfService
Fast Track
Standard
{WIPLimit = 1}
{ ordered }
Teamwork
Workstream
inException : boolean tolerance : Numeric
InspectableAdaptable
inspect(...)
adapt(...)
Environment
variable
| Manager |
monitorWorkstream() raiseException() { variable > tolerance } | |
|
Team
Member
| |
Peer | |
monitor() action() | |
Team
iterate() : increment
Release Orchestration
Transformation Heartbeats
Scrum of Scrums
Release A
Release C
Start
(no release)
1
3
2
Team 1 work queue
Release B
Pull
Pull
Pull
Team 2 work queue
Avatar
BacklogItem
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
WorkInProgress
WIPLimit : integer {WIPLimit <= team.size} WIPCount : integer {WIPCount <= WIPLimit}
Avatar
1..1
1..*
1
{ ordered }
Backlog
Backlog
+ groom()
| { ordered } |
BacklogItem | |
size: Enumeration | |
modify() | |
Epic
BacklogItem
isComplete : boolean purpose
size
Backlog
checkConformity(Done)
{ ordered }
Epic
Project |
goal |
|
0..*
1
DefinitionOfDone
terms : Enumeration
Forecast
Team
iterate() : metric accept(BacklogItem)
Forecast
deliverBy: Time
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Backlog
BacklogItem
WorkInProgress
WIPLimit : integer
WIPCount : integer {WIPCount <= WIPLimit}
{ ordered }
Increment
DevelopmentTeam
iterate() : increment
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
InspectableAdaptable
inspect(...)
adapt(...)
ProductOwner
release(increment)
Sprint
goal
Project
SprintBacklog
ProductBacklog
Backlog
Information Radiator
Team
update(BacklogItem, State) accept(BacklogItem)
InformationRadiator
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Backlog
BacklogItem
{ ordered }
State
External Stakeholder
Metrics
| |
Team | |
publish(Metrics) | |
External Stakeholder
velocity cycleTime burn
InspectableAdaptable | | InspectorAdaptor | |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | ||
| | ||
| |||
Metrics | |||
Process
Minimum Viable Product
MVP
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Backlog
BacklogItem
{ ordered }
| <<enumeration>> Category |
must should could | |
|
{ category = must }
Customer
Proxy Product Ownership
Proxy Product Owner
Sprint Backlog
Product Backlog
BacklogItem
size
capacity
{ ordered }
{ ordered }
DevelopmentTeam
iterate() : increment
Product Owner
1
1..*
1
1..*
Relative Sizing
Backlog
| { ordered } |
BacklogItem | |
| |
| <<enumeration>> |
Size | |
Extra Small = 1 | |
Small = 2 | |
| |
Medium = 3 | |
Large = 5 | |
Extra Large = 8 | |
Extra Extra Large = 13 |
Value Stream
BacklogItem
Station
{ ordered }
Value
Intime OutTime WorkTime costIncurred
Backlog
Agile Template
AgileTrait
1
To a naïve observer an institution may appear to be agile if it renames its existing characteristics by mapping them to supposedly comparable agile traits.
* | | ||
Characteristic | | ||
| |||
| |||
0..* | | ||
Role
Event
Artifact
Practice
Observer
Name
| Institution | |
| | map(resource, trait) |
| ||
Cherry Picking
BacklogItem
Backlog
{ ordered }
Avatar
reachedTopOfQueue
Team member
{reachedTopOfQueue = false}
Developer places avatar on an item that was not next for actioning
Cloned Avatar
DevelopmentTeam
accept(BacklogItem) test()
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
WorkInProgress
WIPLimit : integer {WIPLimit <= team.size} WIPCount : integer {WIPCount <= WIPLimit}
TeamMember
Avatar
1..*
1..1
1..*
{ ordered } BacklogItem
1
Multiple avatars per developer
Death March
ProductOwner
terminate() continue()
DevelopmentTeam
iterate() : increment
InspectableAdaptable | | ||
inspect(...) adapt(...) | |||
| | ||
| |||
Project close() | InspectorAdaptor | ||
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |||
PO does not review and terminate
Disguised Project
KanbanTeam
iterate() : metric action(BacklogItem)
Timebox
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
QualityOfService
BAUBacklog
BacklogItem
WorkInProgress
WIPLimit : integer
WIPCount : integer {WIPCount <= WIPLimit}
{ ordered }
Some items are large or mutually
dependent, and imply significant scope risk
Distributed Team
Team Member
Peer
collaborate()
Team
iterate() : increment
Location | 2..* | Project |
| | |
|
Team members are at multiple locations
Peering depends on team members being in a single location
1..1
Management by Reporting
Project
Environment
variable
Scrum Master
Product Owner
Team Member
| | |
| Subordinate | |
monitorProject() : status makeReport() : report | ||
| ||
Manager
Key roles subordinated to a manager who receives reports; authority to change and adapt is not fully vested in the team
Report
| |
ReportingConventions | |
time format | |
| |
Reporting standards are clearly defined in terms of both format and timing
Manager
Micromanagement
Project
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Team Member
Manager
Contributions of team members to the project are controlled by a manager
Micromanagement
Project
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Team Member
Manager
Contributions of team members to the project are controlled by a manager
Sprint Zero
Environment
Team
iterate() : increment
Sprint
Sprint Zero
SprintBacklog
ProductBacklog
Timebox
Sprint Zero is not necessarily time-boxed. It may address pre- conditions for sprinting, e.g. the establishment of a Product Backlog
0..1
1
No potentially releasable increment is produced due to the lack of a sprintable backlog
Time Theft
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
InspectableAdaptable
inspect(...)
adapt(...)
Team Member
Time Thief
| | |
Timebox | ||
work() | ||
| | |
| ||
Contributions of team members to the time box are interfered with by a non stakeholder
Too Busy
Product Owner
ProductBacklog
{ o
rdered } | | |
BacklogItem | | |
size | { ordered } | |
Team
iterate() : increment
Non Team Member
| |
Sprint Backlog | |
capacity | |
The stakeholder does not spend sufficient time with the Team, and engages with non team members instead. If the stakeholder has product or technical ownership responsibilities, backlog items may not have sufficient representation.
Stakeholder
Unbounded Team
Team
Member
BAU
Workstream
Project
1..*
Team members collaborate, but the team itself is not clearly defined
No constraint on the number of workstreams over which team members are expected to collaborate
Unbounded Timebox
Team
iterate() : void action(BacklogItem)
Timebox
goal
InspectableAdaptable | | InspectorAdaptor |
inspect(...) adapt(...) | plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable) | |
| ||
| ||
Project
Backlog
BacklogItem
{ ordered }
Timebox has no defined length
Iteration cannot produce meaningful metrics
Uncommitment
Team
Member
| | ||||
| | | |||
Project | | BAU | |||
| | ||||
Workstream | 1 |
| |
|
..*
Team members collaborate, but the team itself may not be clearly defined and the backlog may not be respected
No constraint on the number of workstreams over which team members are allowed to collaborate
Sprint Goal may be unclear
1..* | |
Sprint | |
goal | |
1
Weak Product Ownership of backlog and/or pull
Backlog
Product Owner
Undefined Done
Team Member
iterate() : metric action(BacklogItem)
Backlog
BacklogItem
isEnqueued isInProgress isComplete
WorkInProgress
{ ordered }
{ isInProgress == isComplete }
No Definition of Done to distinguish isInProgress from isComplete
Unlimited WIP
DevelopmentTeam
accept(BacklogItem) test()
BacklogItem
isEnqueued : boolean isInProgress : boolean isComplete : boolean
Backlog
WorkInProgress
WIPCount : integer
{ ordered }
No constraint on what the WIP count can be
Unresolved Proxy
Proxy Product Owner
Sprint Backlog
Product Backlog
BacklogItem
size
capacity
{ ordered }
{ ordered }
Team
iterate() : increment
Product Owner
1..*
1..*
1..*
1
Unclear which proxy is authorized
Vanity Metrics
Team
filter(Project, Stakeholder) publish(Metrics)
InspectorAdaptor
plan(InspectableAdaptable) review(InspectableAdaptable) retrospect(InspectableAdaptable)
InspectableAdaptable
inspect(...)
adapt(...)
Stakeholder
Metrics
Project
Team filters project metrics to match stakeholder expectations
WaterScrumFall
Team
iterate() : increment
Sprint
StageGate
preconditions postconditions
Project
SprintBacklog
ProductBacklog
Backlog
Sprints are neither inspectable nor adaptable, but are stage gated according
to a Project Plan.
Plan