Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven...

109
Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Transcript of Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven...

Page 1: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis/Data-Driven Development

using Feature Toggles

@neal4d nealford.com

Page 2: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Agenda

Page 3: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

The Trust Engineers

http://www.radiolab.org/story/trust-engineers/

Page 4: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Agile 101

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Page 5: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Continuous Delivery

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Customer

Delivery teamConstant flow of new features into production

Page 6: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 7: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 8: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Model

User interface

Model Model

Model

Page 9: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Model

User interface

Model Model

Model

Page 10: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Continuous Integration

Model

User interface

Model Model

Model

Page 11: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Continuous Integration

Page 12: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

local workstation

version control

continuous integration server

develop

Page 13: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

version control

continuous integration server

build

Page 14: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

version control

continuous integration server

build

Page 15: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

version control

continuous integration server

build

Page 16: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

version control

continuous integration server

build

everyone commits to trunk at least once a day

Page 17: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Feature Branching

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

G1-6

P1-5

P1-5

G1-6

merge ambush!

Page 18: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

trunk-based development

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

G1-6

P1-5

P1-5

G1-6

Page 19: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

https://trunkbaseddevelopment.com

Paul Hammant

Page 20: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Feature Branching Big Scary Merge

Continuous Integration

1

Page 21: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Feature Branching

Continuous Integration

Big Scary Merge12 Discouraging refactoring

Page 22: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Feature Branching

Continuous Integration

Big Scary Merge12 Discouraging refactoring

3 Hard to combine features

Untrusted Contributors

Cherry Picking

Page 23: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://martinfowler.com/articles/feature-toggles.html

Page 24: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 25: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

make toggle dynamic

Page 26: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 27: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 28: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 29: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 30: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 31: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

— enables trunk based development

— in-progress feature verification

— incomplete or untested code paths

— latent code in production

Page 32: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

— perform multivariate or A/B testing

— utilizes a toggle router

— typical lifetime of hours or weeks

— highly dynamic

Page 33: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

— operational

— short lived

— “kill switches”

Page 34: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

— product experience

— “premium” / alpha

— very long lived/permanent

Page 35: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Static versus Dynamic Toggles

Page 36: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Long-lived versus Transient Toggles

Page 37: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Implementation Techniques

Page 38: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Decoupling Decision Points/Logic

Page 39: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Decoupling Decision Points/Logic

Why should the invoice email code need to know that the order cancellation content is part of the next-gen feature set?

Page 40: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 41: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

our invoice emailer is responsible for asking the feature toggling infrastructure how it should perform

Page 42: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Inversion of Decision

doesn’t know about feature toggling, just externalized configuration

Page 43: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Inversion of Decision Testing

Page 44: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Avoiding Conditionals

Page 45: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Experimental Toggles

Page 46: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

removed as soon as feature decision is resolved

Feature toggles are purposeful technical debt added to support

engineering practices like Continuous Delivery.

Page 47: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

https://dzone.com/articles/feature-toggles-are-one-worst

Page 48: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

timeline

Page 49: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 50: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

don’t create toggle that depend on other toggles.

Page 51: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

works on all platforms & technology stacks

Page 52: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

ubiquitous

Page 53: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

take advantage of structured config files

basic-rec-algo

Use a simplistic recommendation algorithm. This is fast and produces less load on backend systems, but is way less accurate than our standard algorithm.

Page 54: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Toggle Configuration

Page 55: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Managing Toggle Configuration

Hard-coded Parameterized Configuration File

In App DB Distributed

Page 56: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

www.togglz.org

Page 57: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

www.togglz.org

Page 58: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Model

User interface

Model Model

Model

Page 59: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Canary Releasing

Page 60: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Canary Releasing

Page 61: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Canary Releasing

Page 62: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

reduce risk of release

multi-variant testing

performance testing

Canary Releasing

Page 63: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

www.mysite.com

Blue. No, yel…Burn her! Did you dress her up like this? Found them? In Mercia?! The coconut's tropical! Bloody Peasant! I'm not a witch. A newt?

The Knights Who Say Ni demand a sacrifice!

The swallow may fly south with the sun, and the house martin or the plover may seek warmer climes in winter, yet these are not strangers to our land. We found them. The nose?

• What a strange person.• Now, look here, my good man.• We want a shrubbery!!

Old

Boring

All servers have the same software

www.mysite.com

Blue. No, yel…Burn her! Did you dress her up like this? Found them? In Mercia?! The coconut's tropical! Bloody Peasant! I'm not a witch. A newt?

The Knights Who Say Ni demand a sacrifice!

The swallow may fly south with the sun, and the house martin or the plover may seek warmer climes in winter, yet these are not strangers to our land. We found them. The nose?

• What a strange person.• Now, look here, my good man.• We want a shrubbery!!

request page

returns page v1returns page v2

Old

Boring

New & exciting

Page 64: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

taxonomy

Page 65: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://www.beautifulbuilds.com/feature-toggle-frameworks-list/

Page 66: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://ff4j.org

Page 67: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://ff4j.org

Page 68: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://ff4j.org

Page 69: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://ff4j.org

Page 70: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

http://balvig.github.io/chili/

www.npmjs.com/package/feature-toggle

github.com/mjt01/angular-feature-flags

Page 71: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Toggling Databases

Page 72: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Evolutionary Database Design

http://databaserefactoring.com/

Page 73: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Initial Phase

Page 74: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Transition Phase

Page 75: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Ending State

Page 76: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Architectural Impact

Page 77: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

layered

Architectural Impact

microkernel

microserviceservice-based

Model

User interface

Model Model

Model

Page 78: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Evolutionary Architecture

An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.

Page 79: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Incremental Change

production

Components are deployed.

Features are released.

Applications consist of routing.

Page 80: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Incremental Change

production

Page 81: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Deployment Pipeline

Page 82: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Deployment Pipeline

Page 83: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Model

User interface

Model Model

Model

Page 84: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

barryoreilly.com/2013/10/21/how-to-implement-hypothesis-driven-development/

Page 85: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Requirements

Behavior-Driven Development

As A…. <role> I Want… <goal/desire> So That… <receive benefit>

In Order To… <receive benefit> As A… <role> I Want… <goal/desire>

Page 86: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis-driven Development

We believe <this capability>

Page 87: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis-driven Development

Will result in <this outcome>

Page 88: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis-driven Development

We will have confidence to proceed when <we see a measurable signal>

Page 89: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Business Story

We Believe That increasing the size of hotel images on the booking page

Will Result In improved customer engagement and conversion

We Will Have Confidence To Proceed When we see a 5% increase in customers who review hotel images who then proceed to book in 48 hours.

Page 90: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis Driven UX

https://medium.com/@mwambach1/hypotheses-driven-ux-design-c75fbf3ce7cc#.gk3dpip81

Page 91: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis Driven UX

Page 92: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Three Hypotheses

More Listings If we provide more listings on the screen then we can provide better comparability and offer more diversity on our platform because users like to compare a lot of listings on the result page

Better Structure If we provide more structure to our listings then we achieve a better scanability because the user is able to scan the relevant information quicker

Better Prioritization If we prioritize information according to user needs then we achieve better guidance because the user can see all relevant information at a glance

More Listings

Better Structure

Better Prioritization

Page 93: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Experiments to Perform

More Listings Better Structure Better Prioritization

Page 94: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Five Takeaways 1. Take your assumptions and state them as

explicit hypotheses

2. Let your team buy into stated hypotheses

3. Force yourself to design according to your hypotheses

4. Force yourself to test against your hypotheses

5. Create a culture of learning by showing stakeholders the benefits of validated customer hypotheses

Page 95: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Move Fast

& Fix

Things

Page 96: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

https://github.com/github/scientist

Page 97: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

▫︎ It decides whether or not to run the try block,

▫︎ Randomizes the order in which use and try blocks are run,

▫︎Measures the durations of all behaviors,

▫︎ Compares the result of try to the result of use,

▫︎ Swallows (but records) any exceptions raised in the try block

▫︎ Publishes all this information.

Page 98: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 99: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 100: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 101: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Bugs Found; Resolution

▫︎ faster conflict return because shell script exited immediately; replicated in library

▫︎ index write was causing O(n) problem; inlined into memory

▫︎ the ancestor had a file with a given filemode, whilst one side of the merge had removed the file and the other side had changed the filemode; bug in git!

▫︎Git incorrectly successfully merged files w/ 768 conflicts; fixed git shell script

▫︎ new library was skipping an entire step; bug found & fixed

Page 102: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Model

User interface

Model Model

Model

Page 103: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Model

User interface

Model Model

Model

Page 104: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Hypothesis-driven Development

Page 105: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

vision, strategy, business goals

ideation

portfolio of ideas

selected experiments:

pivot

fold double down

Page 106: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com
Page 107: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Dynamic Equilibrium

Page 108: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

Summary

Page 109: Hypothesis/Data-Driven Development using Feature Toggles · 2017-05-05 · Hypothesis/Data-Driven Development using Feature Toggles @neal4d nealford.com

nealford.com

@neal4d

nealford.com/books

nealford.com/videos

www.oreilly.com/software-architecture-video-training-series.html