‘Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations’
by Nicole Forsgren, Jez Humble, and Gene Kim
Continuous Delivery Capabilities
Use version control for all production artifacts (including application code, configurations, build/environment setup scripts, etc.)
Automate the deployment process
Implement continuous integration
Use trunk-based development methods: fewer than about three active branches, short lifetimes (ideally less than a day)
Implement test automation: tests should be fast, reliable, and automatic
Support test data maintenance: as much as it takes to automate testing, but no more
Shift left on security
Implement continuous delivery
Architecture Capabilities
Use a loosely coupled architecture (!)
Architect for empowered teams: let them choose their own tools as much as possible
Product and Process Capabilities
Gather and implement customer feedback
Make the flow of work visible through the value stream: “Teams should have a good understanding of and visibility into the flow of work from the business all the way through the customers…”
Work in small batches
Foster and enable team experimentation
Lean Management and Monitoring Capabilities
Have a lightweight change approval process: peer review GOOD, external change approval boards BAD
Monitor across application and infrastructure to inform business decisions
Check system health proactively
Improve processes and mange work with work-in-progress limits
Visualize work to monitor quality and communicate throughout the team
Cultural Capabilities
Support a generative (i.e. Westrum) culture
Encourage and support learning
Support and facilitate collaboration among teams
Provide resources and tools that make work meaningful
Support or embody transformational leadership