Rapid, reliable, repeatable releases
Release early, and often to gain confidence and build trust in the product and with stakeholders that what we're building is the right thing.
Implications
- Invest early in an automated deployment pipeline right through to production.
- A feature isn't done until it is in production and being used by real users.
- This principle enhances our ability to experiment, evolve & increment
Rationale
Historically, releasing software to customers was fraught with danger due to large changes being released all at once, resulting in a compounding cycle of large releases with lots of errors. Counter-intuitively releasing early and often reduces the risk of things going wrong by forcing repetitive tasks to be automated and ultimately increasing their reliability. Being able to rapidly release to production encourages both engineering and product stakeholders to take more risks as it is trivial to rectify smaller mis-steps.
Model the Domain
Use a ubiquitous language across business and technology that can be reflected in how systems and code are structured.
Try something new
While doing the right thing for our customer doesn't always mean using newest and most interesting technology, we must seek out times where it's appropriate to try something new