hypothesis/data-driven development using feature togglesnealford.com › downloads ›...

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

Upload: others

Post on 29-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis/Data-Driven Development

using Feature Toggles

@neal4d nealford.com

Page 2: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Agenda

Page 3: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

The Trust Engineers

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

Page 4: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 7: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 8: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Model

User interface

Model Model

Model

Page 9: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Model

User interface

Model Model

Model

Page 10: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Continuous Integration

Model

User interface

Model Model

Model

Page 11: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Continuous Integration

Page 12: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

local workstation

version control

continuous integration server

develop

Page 13: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

version control

continuous integration server

build

Page 14: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

version control

continuous integration server

build

Page 15: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

version control

continuous integration server

build

Page 16: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

version control

continuous integration server

build

everyone commits to trunk at least once a day

Page 17: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

https://trunkbaseddevelopment.com

Paul Hammant

Page 20: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Feature Branching Big Scary Merge

Continuous Integration

1

Page 21: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Feature Branching

Continuous Integration

Big Scary Merge12 Discouraging refactoring

Page 22: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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

Page 24: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 25: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

make toggle dynamic

Page 26: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 27: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 28: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 29: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 30: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 31: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

— 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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

— 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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

— operational

— short lived

— “kill switches”

Page 34: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

— product experience

— “premium” / alpha

— very long lived/permanent

Page 35: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Static versus Dynamic Toggles

Page 36: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Long-lived versus Transient Toggles

Page 37: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Implementation Techniques

Page 38: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Decoupling Decision Points/Logic

Page 39: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 41: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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

Page 42: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Inversion of Decision

doesn’t know about feature toggling, just externalized configuration

Page 43: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Inversion of Decision Testing

Page 44: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Avoiding Conditionals

Page 45: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Experimental Toggles

Page 46: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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

Page 48: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

timeline

Page 49: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 50: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

don’t create toggle that depend on other toggles.

Page 51: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

works on all platforms & technology stacks

Page 52: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

ubiquitous

Page 53: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Toggle Configuration

Page 55: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Managing Toggle Configuration

Hard-coded Parameterized Configuration File

In App DB Distributed

Page 56: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

www.togglz.org

Page 57: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

www.togglz.org

Page 58: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Model

User interface

Model Model

Model

Page 59: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Canary Releasing

Page 60: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Canary Releasing

Page 61: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Canary Releasing

Page 62: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

reduce risk of release

multi-variant testing

performance testing

Canary Releasing

Page 63: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

taxonomy

Page 65: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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

Page 66: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

http://ff4j.org

Page 67: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

http://ff4j.org

Page 68: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

http://ff4j.org

Page 69: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

http://ff4j.org

Page 70: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Toggling Databases

Page 72: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Evolutionary Database Design

http://databaserefactoring.com/

Page 73: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Initial Phase

Page 74: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Transition Phase

Page 75: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Ending State

Page 76: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Architectural Impact

Page 77: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

layered

Architectural Impact

microkernel

microserviceservice-based

Model

User interface

Model Model

Model

Page 78: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Evolutionary Architecture

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

Page 79: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Incremental Change

production

Components are deployed.

Features are released.

Applications consist of routing.

Page 80: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Incremental Change

production

Page 81: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Deployment Pipeline

Page 82: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Deployment Pipeline

Page 83: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Model

User interface

Model Model

Model

Page 84: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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

Page 85: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis-driven Development

We believe <this capability>

Page 87: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis-driven Development

Will result in <this outcome>

Page 88: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis-driven Development

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

Page 89: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis Driven UX

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

Page 91: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis Driven UX

Page 92: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Experiments to Perform

More Listings Better Structure Better Prioritization

Page 94: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Move Fast

& Fix

Things

Page 96: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

https://github.com/github/scientist

Page 97: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

▫︎ 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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 99: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 100: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 101: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

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 Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Model

User interface

Model Model

Model

Page 103: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Model

User interface

Model Model

Model

Page 104: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Hypothesis-driven Development

Page 105: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

vision, strategy, business goals

ideation

portfolio of ideas

selected experiments:

pivot

fold double down

Page 106: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d
Page 107: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Dynamic Equilibrium

Page 108: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

Summary

Page 109: Hypothesis/Data-Driven Development using Feature Togglesnealford.com › downloads › Hypothesis_and_Data-driven...Hypothesis/Data-Driven Development using Feature Toggles @neal4d

nealford.com

@neal4d

nealford.com/books

nealford.com/videos

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