Learning outcomes:
* Understand main motivation for feature toggles
* Hire toggles for different “Jobs to be Done”
* Manage toggles at scale
Or on a less serious note we’ll:
* make fun of long-lived feature branches in 19th and 21st century
* do Beyoncé-Driven Development
* find out what toggles and your dog have in common
4. I am half beside myself with hurry & work. I
could not get anything done in time to send by
coach this morning; & now I am obliged still to
retain one sheet; which however I hope to send
you by an occasion tomorrow afternoon.
5. I am half beside myself with hurry & work. I
could not get anything done in time to send by
coach this morning; & now I am obliged still to
retain one sheet; which however I hope to send
you by an occasion tomorrow afternoon.
6. I am half beside myself with hurry & work. I
could not get anything done in time to send by
coach this morning; & now I am obliged still to
retain one sheet; which however I hope to send
you by an occasion tomorrow afternoon.
7. I am half beside myself with hurry & work. I
could not get anything done in time to send by
coach this morning; & now I am obliged still to
retain one sheet; which however I hope to send
you by an occasion tomorrow afternoon.
8.
9. Note B has plagued me to death; altho’ I have
made but little alteration in it. Such alterations
as there are however, happen to have been very
tiresome & to have demanded minute
consideration & very nice adjustments.
10. Note B has plagued me to death; altho’ I have
made but little alteration in it. Such alterations
as there are however, happen to have been very
tiresome & to have demanded minute
consideration & very nice adjustments.
11. Note B has plagued me to death; altho’ I have
made but little alteration in it. Such alterations
as there are however, happen to have been very
tiresome & to have demanded minute
consideration & very nice adjustments.
12.
13.
14.
15. I wish you were as accurate, & as much to be
relied on, as I am myself.
16.
17. By the way, I hope you do not take upon
yourself to alter any of my corrections.
I must beg you not. They all have some very
su
ffi
cient reason. And you have made a pretty
mess & confusion in one or two places, where you
have ventured in my manuscripts, to insert or alter
a phrase or word; & have utterly muddled the
sense.
18. By the way, I hope you do not take upon
yourself to alter any of my corrections.
I must beg you not. They all have some very
su
ffi
cient reason. And you have made a pretty
mess & confusion in one or two places, where you
have ventured in my manuscripts, to insert or alter
a phrase or word; & have utterly muddled the
sense.
19. By the way, I hope you do not take upon
yourself to alter any of my corrections.
I must beg you not. They all have some very
su
ffi
cient reason. And you have made a pretty
mess & confusion in one or two places, where you
have ventured in my manuscripts, to insert or alter
a phrase or word; & have utterly muddled the
sense.
20. By the way, I hope you do not take upon
yourself to alter any of my corrections.
I must beg you not. They all have some very
su
ffi
cient reason. And you have made a pretty
mess & confusion in one or two places, where you
have ventured in my manuscripts, to insert or alter
a phrase or word; & have utterly muddled the
sense.
21. By the way, I hope you do not take upon
yourself to alter any of my corrections.
I must beg you not. They all have some very
su
ffi
cient reason. And you have made a pretty
mess & confusion in one or two places, where you
have ventured in my manuscripts, to insert or alter
a phrase or word; & have utterly muddled the
sense.
22. By the way, I hope you do not take upon
yourself to alter any of my corrections.
I must beg you not. They all have some very
su
ffi
cient reason. And you have made a pretty
mess & confusion in one or two places, where you
have ventured in my manuscripts, to insert or alter
a phrase or word; & have utterly muddled the
sense.
30. Charles Babbage
F u l l - S t a c k D e v
he/him
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
31. Charles Babbage
F u l l - S t a c k D e v
he/him
W o r k s i n p o s t - G i t h u b w o r l d
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
32. Charles Babbage
F u l l - S t a c k D e v
he/him
❤ b r a n c h e s a n d p u l l - r e q u e s t s
W o r k s i n p o s t - G i t h u b w o r l d
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
33. Charles Babbage
F u l l - S t a c k D e v
he/him
❤ b r a n c h e s a n d p u l l - r e q u e s t s
M o v e s f a s t a n d b r e a k s t h i n g s
W o r k s i n p o s t - G i t h u b w o r l d
🚀
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
43. Reality check
Interruptions
R E A L I T Y
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
y
w
1
6
o
E
E
d
7
w
J
6
F
M
D
d
D
D
p
1
v
u
9
D
/
R
3
1
l
Q
F
O
0
Y
p
Q
N
3
V
Y
L
a
J
C
A
f
J
4
N
44. Reality check
Interruptions
R E A L I T Y
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
i
K
m
7
l
M
X
r
Y
t
K
7
i
2
L
F
L
4
d
o
n
D
5
R
/
0
Y
7
R
x
C
L
D
5
p
D
f
M
d
A
K
x
H
c
N
5
C
o
h
51. C O D E R E V I E W E R S
G I V I N G H A R S H
F E E D B A C K
h
t
t
p
:
/
/
w
w
w
.
g
o
k
.
l
a
c
k
o
.
p
l
/
z
b
o
j
e
c
k
a
-
c
i
u
p
a
g
a
-
d
l
a
-
g
o
r
a
l
i
-
l
a
c
k
i
c
h
.
h
t
m
l
52. M E R G E C O N F L I C T
R E S O L U T I O N
A F T E R L O N G - L I V E D
B R A N C H
h
t
t
p
:
/
/
w
w
w
.
g
o
k
.
l
a
c
k
o
.
p
l
/
z
b
o
j
e
c
k
a
-
c
i
u
p
a
g
a
-
d
l
a
-
g
o
r
a
l
i
-
l
a
c
k
i
c
h
.
h
t
m
l
79. Requirement
Release walking skeleton in dev/staging
Deploy code to production continuously
N O N - T E C H N I C A L T E C H N I C A L
R E Q U I R E M E N T
91. Requirement
Release dancing skeleton to our internal
users in production
R E Q U I R E M E N T
P a t t e r n f r o m : D a n i e l T e r h o r s t - N o r t h @ t a s t a p o d
92. Requirement
Release dancing skeleton to our internal
users in production
R E Q U I R E M E N T
P a t t e r n f r o m : D a n i e l T e r h o r s t - N o r t h @ t a s t a p o d
93. I n t h e o r y , s t a g i n g a n d p r o d u c t i o n a r e t h e s a m e .
I n p r a c t i c e , t h e y a r e n o t .
— A l b e r t E i n s t e i n ( m a y b e )
94. I n t h e o r y , s t a g i n g a n d p r o d u c t i o n a r e t h e s a m e .
I n p r a c t i c e , t h e y a r e n o t .
— A l b e r t E i n s t e i n ( m a y b e )
95. I n t h e o r y , s t a g i n g a n d p r o d u c t i o n a r e t h e s a m e .
I n p r a c t i c e , t h e y a r e n o t .
— A l b e r t E i n s t e i n ( m a y b e )
96. S t a g i n g P r o d u c t i o n
Same same, but different
97. Y o u w i l l n e e d a d y n a m i c r e l e a s e t o g g l e
w i t h t h e u s e r i d a c t i v a t i o n s t r a t e g y
98. Y o u w i l l n e e d a d y n a m i c r e l e a s e t o g g l e
w i t h t h e u s e r i d a c t i v a t i o n s t r a t e g y
99. Y o u w i l l n e e d a d y n a m i c r e l e a s e t o g g l e
w i t h t h e u s e r i d a c t i v a t i o n s t r a t e g y
100. Toggle types
Release Toggle
T H E F e a t u r e T o g g l e s a r t i c l e : h t t p s : / / m a r t i n f o w l e r . c o m / a r t i c l e s / f e a t u r e - t o g g l e s . h t m l
D o m a i n v o c a b u l a r y
101. Toggle types
Release Toggle
T H E F e a t u r e T o g g l e s a r t i c l e : h t t p s : / / m a r t i n f o w l e r . c o m / a r t i c l e s / f e a t u r e - t o g g l e s . h t m l
D o m a i n v o c a b u l a r y
Release Toggles allow incomplete and untested
codepaths to be shipped to production as latent
code which may never be turned on.
139. Unix philosoph
Unix philosophy
J o y f u l c o d i n g
h
t
t
p
s
:
/
/
d
a
n
n
o
r
t
h
.
n
e
t
/
2
0
2
2
/
0
2
/
1
0
/
c
u
p
i
d
-
f
o
r
-
j
o
y
f
u
l
-
c
o
d
i
n
g
/
140. Unix philosoph
Do one thing well and
play well with others
J o y f u l c o d i n g
h
t
t
p
s
:
/
/
d
a
n
n
o
r
t
h
.
n
e
t
/
2
0
2
2
/
0
2
/
1
0
/
c
u
p
i
d
-
f
o
r
-
j
o
y
f
u
l
-
c
o
d
i
n
g
/
157. I f y o u w a n t t h e m t o R T F M ,
m a k e a b e t t e r F M
— K a t h y S i e r r a
158. W e d o t h o s e t h i n g s n o t
b e c a u s e t h e y a r e e a s y ,
b u t b e c a u s e w e t h o u g h t
t h e y w e r e g o i n g t o b e
e a s y .
159. BUILDING NEW FEATURE
(RELEASE TOGGLES)
REDUCING DEPLOYMENT
RISK
(OPS TOGGLES)
A/B TESTING
(EXPERIMENT TOGGLES)
MITIGATING INCIDENTS
(KILL SWITCH TOGGLES)
Feature
Toggles
Jobs to
be Done
160. BUILDING NEW FEATURE
(RELEASE TOGGLES)
REDUCING DEPLOYMENT
RISK
(OPS TOGGLES)
A/B TESTING
(EXPERIMENT TOGGLES)
MITIGATING INCIDENTS
(KILL SWITCH TOGGLES)
Feature
Toggles
Jobs to
be Done
161. BUILDING NEW FEATURE
(RELEASE TOGGLES)
REDUCING DEPLOYMENT
RISK
(OPS TOGGLES)
A/B TESTING
(EXPERIMENT TOGGLES)
MITIGATING INCIDENTS
(KILL SWITCH TOGGLES)
Feature
Toggles
Jobs to
be Done
162. BUILDING NEW FEATURE
(RELEASE TOGGLES)
REDUCING DEPLOYMENT
RISK
(OPS TOGGLES)
A/B TESTING
(EXPERIMENT TOGGLES)
MITIGATING INCIDENTS
(KILL SWITCH TOGGLES)
Feature
Toggles
Jobs to
be Done
163. Feature
Toggles
Jobs to
be Done
BUILDING NEW FEATURE
(RELEASE TOGGLES)
REDUCING DEPLOYMENT
RISK
(OPS TOGGLES)
A/B TESTING
(EXPERIMENT TOGGLES)
MITIGATING INCIDENTS
(KILL SWITCH TOGGLES)
164. Theory
Jobs to be Done
P e o p l e “ h i r e ” y o u r p r o d u c t t o d o d i f f e r e n t j o b s
h
t
t
p
s
:
/
/
t
w
i
t
t
e
r
.
c
o
m
/
d
a
v
i
d
j
b
l
a
n
d
/
s
t
a
t
u
s
/
1
6
0
7
8
5
5
6
4
0
9
9
8
9
8
9
8
2
4
167. Toggles at scale
We keep using the same user IDs
over and over again
C H A L L A N G E
168. Toggles at scale
Segments = reusable constrains
D o m a i n v o c a b u l a r y
T
h
i
s
i
s
d
o
m
a
i
n
v
o
c
a
b
u
l
a
r
y
u
s
e
d
a
t
U
n
l
e
a
s
h
169. Toggles at scale
Segments = reusable constrains
D o m a i n v o c a b u l a r y
T
h
i
s
i
s
d
o
m
a
i
n
v
o
c
a
b
u
l
a
r
y
u
s
e
d
a
t
U
n
l
e
a
s
h
191. W e d o t h o s e t h i n g s n o t
b e c a u s e t h e y a r e e a s y ,
b u t b e c a u s e w e t h o u g h t
t h e y w e r e g o i n g t o b e
e a s y .
197. C O R E
S U B D O M A I N
$ $ $
S U P P O R T I N G
S U B D O M A I N
( i n - h o u s e )
198. C O R E
S U B D O M A I N
$ $ $
S U P P O R T I N G
S U B D O M A I N
( i n - h o u s e )
G E N E R I C
S U B D O M A I N
( O S S , S a a S )
199. C O R E
S U B D O M A I N
$ $ $
S U P P O R T I N G
S U B D O M A I N
( i n - h o u s e )
G E N E R I C
S U B D O M A I N
( O S S , S a a S )
c o m m o d i t i z a t i o n
200. C O R E
S U B D O M A I N
$ $ $
S U P P O R T I N G
S U B D O M A I N
( i n - h o u s e )
G E N E R I C
S U B D O M A I N
( O S S , S a a S )
o p p o r t u n i t y
210. Charles Babbage
S e n i o r F u l l - S t a c k D e v
he/him
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
211. W o r k s i n p o s t - G i t h u b w o r l d
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
Charles Babbage
S e n i o r F u l l - S t a c k D e v
he/him
212. b r a n c h e s a n d p u l l - r e q u e s t s ?
W o r k s i n p o s t - G i t h u b w o r l d
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
Charles Babbage
S e n i o r F u l l - S t a c k D e v
he/him
213. b r a n c h e s a n d p u l l - r e q u e s t s ?
M o v e s f a s t a n d d o e s n ’ t
b r e a k s t h i n g s
W o r k s i n p o s t - G i t h u b w o r l d
🚀
h
t
t
p
s
:
/
/
l
a
b
s
.
o
p
e
n
a
i
.
c
o
m
/
e
/
d
t
A
3
N
R
4
O
3
q
t
F
Z
n
v
K
P
v
9
t
G
g
8
I
/
a
V
M
p
x
Z
1
j
J
6
m
6
C
U
g
K
d
3
m
o
H
l
q
s
Charles Babbage
S e n i o r F u l l - S t a c k D e v
he/him