diff --git a/patterns/2-structured/early-and-fluid-quality-management-for-predictable-delivery.md b/patterns/2-structured/early-and-fluid-quality-management-for-predictable-delivery.md new file mode 100644 index 000000000..c847ec036 --- /dev/null +++ b/patterns/2-structured/early-and-fluid-quality-management-for-predictable-delivery.md @@ -0,0 +1,67 @@ +## Title + +Early and fluid quality management for predictable delivery + +## Patlet + +Testing practices are often short-cutted to meet deadlines leading to stability questions regarding the code. Frequent code review and testing is embedded in a smaller pull-request culture. + +## Problem + +Code stability depends on how confident we are on our tests. In some cases, proper testing is not taking place until later stages (even pre-production deployment), generating delays in the delivery of the releases. Part of the problem is the size of changes. Bigger changes are more difficult to review and test. In other words, our development code is sent to pre-production without passing the tests, creating blocks and loops against pre-production environments while fixing the issues. + +The lack of automated testing coverage leaves a lot of room for fears of breaking things (regressions), which in turn tend to prevent contributions and their acceptance. The contributions are also more error-prone and thus need more corrective effort. This delays them and increases the risk of conflicting with other code changes. + +## Context + +* Proper testing is not taking place until the late stages +* There's fear of regressions for the parts that were once tested. This blocks contribution and innovation because contributors fear breaking working software, and verification is effort-consuming and difficult to schedule for maintainers. +* Testing finds severe and deeply embedded bugs that need significant changes +* Release delays are usual and big + +## Forces + +Against: +Time pressures by the business team. +Needs investments to reap benefit cycle after cycle. + +In favor: +Agility is a trend in both software development and project management (lean) +Perfectionism on the technical teams. +Lack of confidence in the master branch of development, lack of stability. + +## Solutions + +Automated testing, routine code review, and frequent pull request processes are put in place to ensure quality. + +Planning: Break the delivery in smaller chunks (minimum viable changes). This goes also for processes and tooling. +Coordination: Agree on outcome validation criteria upfront. +Culture: Define needs and outcome, not the solution +Culture: Approve as soon as situation improves (don’t wait for perfection) and iterate to improve +Culture: Stakeholders watch and participate in development according to their capabilities (pull request culture). +Automate testing to reduce cycle times and repetitive effort + +## Resulting Context + +Since changes are small and review is very automated, reviews are swift and problems are detected early, so they are fixed quickly. +Early and flawless delivery of key functionality provides and hardens confidence in the development. +Common pull request culture enables other stakeholders to provide and validate solution proposals. Development accelerates with InnerSource contributions. + +## Known Instances + +* Santander Bank + +## Status + +Initial +Published internally in Santander Bank; drafted via pull-request in December of 2022 + +## Authors + +Alberto Pérez García-Plaza +Daniel Izquierdo Cortázar +Addie Girouard + +## Acknowledgements + +Igor Zubiaurre