Flow Improvement Learning Path
3 minute read
These are the core skills we recommend everyone learn to execute CD.
Behavior-Driven Development
Every step in CD requires clear, testable acceptance criteria as a prerequisite. BDD is not test automation. BDD is the discussion that informs acceptance test driven development.
- Videos
- What is BDD Dave Farley co-author of Continuous Delivery - 16:28 min
- Acceptance Testing By Dave Farley - 14:49 min
- Recommended Reading
- BDD In Action by John Ferguson Smart
- Behavior-Driven Development with Cucumber: Better Collaboration for Better Software by Richard Lawrence, Paul Rayner
Continuous Integration
Continuous integration is a requirement for CD. It requires very frequent integration of non-breaking code.
- Videos
- Top 10 Rules For Continuous Integration Dave Farley - 17 min.
- Continuous-Integration-Practices on Linkedin Learning. Instructed by Ernest Mueller and James Wickett - 4 min.
- Continuous-Integration on Linkedin Learning. Instructor by Laura Stone - 4 min.
- Recommended Reading
- Continuous Integration: Improving Software Quality and Reducing Risk by Paul M. Duvall, Steve Matyas, Andrew Glover.
Conway’s law
“Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure.” - Melvin Conway
Loosely coupled teams create loosely coupled systems. The opposite is also true.
- Videos
- Don’t Forget Conway’s Law Sarah Novotny - 8:50 mins.
- Recommended Reading
- Building Microservices - Ch 10 by Sam Newman.
Domain-Driven Design
This is another key design tool both for organizational and system design. This is a critical skill for developing microservices.
- Videos
- What is DDD Eric Evans - 57:06 min.
- Software Architecture: Domain-Driven Design LinkedIn Training Course.
- Recommended Reading
- What Is Domain-Driven Design? by Vladik Khononov.
Pipeline Steps
Architecting a system of delivery is about designing efficient quality gates for the system’s context.
- Videos
- Understanding A DevOps Pipeline David Farley - 13:24 mins.
- Recommended Reading
- Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation Jez Humble and David Farley
Test-Driven Development
TDD highly correlates with application architecture that is easy to maintain and easy to upgrade.
- Videos
- Does TDD Lead to Better Software Design? Dave Farley co-author of Continuous Delivery - 18:32 min.
- Three Mindsets of TDD Dave Farley co-author of Continuous Delivery - 18:57 min.
- TDD and DDD with .NET Core and VSCode - 1 hour
- Recommended Reading
- Test Driven Development: By Example by Kent Beck.
Three Ways
The core principles that define DevOps:
- Consider the system of delivery as a whole
- Amplify feedback loops
- Continuously learn and improve the delivery system
- Videos
- The 3 Ways of The Phoenix Project co-author Gene Kim - 3:30 mins.
- Recommended Reading
- The Three Ways: The Principles Underpinning DevOps by Gene Kim
- The DevOps Handbook - Gene Kim et al
Value Stream Mapping
The primary process analysis tool used to help identify and attack constraints to delivery.
- Videos
- How we used Value Stream Mapping to accelerate DevOps adoption Marcus Robinson - 45:26 min.
- Recommended Reading
- Value Stream Mapping: How to Visualize Work and Align Leadership for Organizational Transformation - Karen Martin and Mike Osterling
Wastes
Our goal is to remove waste daily. We must first learn to recognize it.
- Videos
- The 7 Types of Waste in Software Development Alex Green - 10:34 mins.
- Recommended Reading
- Making Work Visible by Dominica DeGrandis.
- The Art of Lean Software Development by Curt Hibbs; Mike Sullivan; Steve Jewett.
Starting CD
Migrating your system to Continuous Delivery
Metrics Overview
An overview of key metrics for measuring and improving Continuous Delivery performance
Work Decomposition
Tips for breaking down work to “small enough”.
Value Stream Mapping
A guide to conducting a Value Stream Mapping Workshop to optimize your development process.