Skip to content

Commit

Permalink
Propose Update to Manifesto - Evolutionary coding methods (#317)
Browse files Browse the repository at this point in the history
* Add dark launching to evolutionary coding methods

* Refactor mention of evolutionary coding methods with link
  • Loading branch information
DevOpsCraftsman authored Jul 19, 2023
1 parent 7292f19 commit d5c195e
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
2 changes: 1 addition & 1 deletion content/Journey/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Teams are not good at testing initially for the same reason they aren't good at

### Individual tasks are too big

CI means we are integrating partially completed features continuously. TDD helps us learn how to decompose tasks into very small, releasable changes that do not break existing behaviors. However, the initial habit is often to wait to integrate changes until they are "complete". This results in large change-sets that are more difficult to code review. This makes code review take more time, requires more re-work, and reduces the ability of the reviewer to spot problems. Techniques such as [Feature Toggles](https://martinfowler.com/bliki/FeatureToggle.html) or [Keystone Interfaces](https://martinfowler.com/bliki/KeystoneInterface.html) allow the release of incomplete features until they are ready and allow us to drive down the size of changes. By focusing as a team to decompose tasks into hours of work rather than days and using engineering techniques to control release, we have improved clarity, smaller change-sets, and higher quality.
CI means we are integrating partially completed features continuously. TDD helps us learn how to decompose tasks into very small, releasable changes that do not break existing behaviors. However, the initial habit is often to wait to integrate changes until they are "complete". This results in large change-sets that are more difficult to code review. This makes code review take more time, requires more re-work, and reduces the ability of the reviewer to spot problems. [Evolutionary coding methods](../MinimumCD#evolutionary-coding-methods) allow the release of incomplete features until they are ready and allow us to drive down the size of changes. By focusing as a team to decompose tasks into hours of work rather than days and using engineering techniques to control release, we have improved clarity, smaller change-sets, and higher quality.

### Stories are too big & lack testable acceptance criteria

Expand Down
4 changes: 3 additions & 1 deletion content/MinimumCD/CI/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ While CI depends on tooling, the team workflow and working agreement are more im

Evolutionary coding methods:

- [Branch by abstraction](https://www.branchbyabstraction.com/) is a good process for replacing existing new behaviors or frameworks with something new while constantly delivering. Also, a good pattern to use for A/B testing

- [Keystone Interfaces](https://martinfowler.com/bliki/KeystoneInterface.html) (A.K.A [Dark Launching](https://martinfowler.com/bliki/DarkLaunching.html)) lets you deploy some portion of the code to production without being visible or usable by end-users. It can also let you recolt metrics on how good the feature behaves performance-wise before make it accessible.
- [Branch by abstraction](https://www.branchbyabstraction.com/) is a good process for replacing existing new behaviors or frameworks with something new while constantly delivering. Also, a good pattern to use for A/B testing.
- [Feature flags](https://martinfowler.com/articles/feature-toggles.html) can be temporary tools for feature release management or permanent tools for enabling behaviors for different personas. They can also be controlled with application configuration or dynamically with logic.

## What is Improved
Expand Down

0 comments on commit d5c195e

Please sign in to comment.