For me, agile requires two things (see the-two-pillars-of-agile-software):
- A healthy knowledge culture focused on people (collaboration, learning, respect, team work, creativity...)
- Looking for quality and technical excellence (for example XP practices are a great starting point).
|In our profession knowledge is the bottleneck
- If there is a classic vicious cycle of bad quality or bad practices going on. We should stop and break this cycle immediately. The typical example consists in having technical debt, that generates bugs, that generate even more technical debt that ends in the complete collapse in few months.
- Assume that we have the capacity and very good intentions.
- Help to create a virtuous cycle to improve our technical quality day by day.
- To create this virtuous cycle we need to define a clear goal to align all of our efforts.
Why Continuous Delivery?
- Low cost and a smooth process for deployment that doesn't affect customers. This requires (or at least recommend) introducing DevOps, automation, rolling deploys and Continuous Integration.
- Having good confidence in our product. This requires Continuous Integration, Automatic testing, and Monitoring for production.
- Automatic testing requires integration tests and unit tests, and for sure, having unit tests put a lot of pressure on doing a good design (for example to have a hexagonal architecture or other architecture that decouple business logic from infrastructure).
|Virtuous Cycle created when CD is the goal
- If you use micro services, CD force you to think about independent deployability.
- CD force you to learn how to make parallel changes (using feature toggles, database refactoring, etc.)
- Some additional insights from @artolamola:
- Above CD you can implement any agile method for team organization (scrum, kanban, etc.).
- CD force you to think how to decompose each feature in vertical slices.
References:Some of these ideas come from:
- Competing On The Basis Of Speed Mary Poppendieck
- The Virtuous Cycle of Velocity: What I Learned About Going Fast at eBay and Google Randy Shoup
- Agile is not a recipe for success...
- The two pillars of agile software
- Remove the excuses for not being a professional