Skip to content

Instantly share code, notes, and snippets.

@colmarius
Last active September 17, 2019 11:46
Show Gist options
  • Save colmarius/e5b26b738c5946d48c56e211f91d5799 to your computer and use it in GitHub Desktop.
Save colmarius/e5b26b738c5946d48c56e211f91d5799 to your computer and use it in GitHub Desktop.
Socrates Day Zürich (Sep 2019) - Learnings - https://bit.ly/2mkFQWq

Socrates Day

  • quick overview of the day
  • joint session done on working on big features with toggles

What is Socrates?

Socrates sessions attended

Working on Big Features with Feature Flags

  • What is a big feature?
  • What are common problems?
  • Strategies discussed and shared

What is a big feature?

  • depends on release cycle
  • example: 1 week release cycle, big feature takes > 1 week
  • User Story (1) -> (N) Functionality tasks
  • Functionality task: atomic step a developer can build

What are common problems with big features?

  • often rebase / fixing of merge conflicts
  • overdue, hard to estimate
  • lack of feedback or late feedback
  • changing / growing requirements
  • usually require extensive refactoring

Strategies found

  • trunk based development vs epic branches
  • feature flags
  • pair programming
  • daily feedback (demo to customer)

Feature flags

  • different types of feature toggles
  • long-lived toggles vs transient toggles
  • decouples "training support people" vs release
  • they add complexity: add them as late as possible
  • Goal: as few feature toggles as possible

Examples of feature flags

  • Development features (can be hardcoded constants)
  • Experimental features
  • AB Testing
  • User level toggles: gradul release (0 -> 100%)

Feature Flags - Implementation

  • one place (prefer static over dynamic configuration)
  • UI with toggle buttons
  • default values (should work online/offline)

Toggles - Developer Notes

  • not inside a method, but delegate between two methods
  • duplicate behaviour (less risk of braking things)

Example:

  1. add feature
  2. duplicate -> new feature
  3. once new feature used
  4. delete old feature

Problems / Complexities with Feature flags

  • requires good monitoring
  • keep track of them: which versions are running?
  • when to delete them?
  • deprecation annotations (ex. database fields)

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment