the empirical process at agile india 2012
DESCRIPTION
TRANSCRIPT
The Empirical Process
- at the very core of agile everything
Daniel Brolund @danielbrolund [email protected]
Daniel Brolund — @danielbrolund — [email protected]
Lets start with an exercise!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Lets start with an exercise!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Lets start with an exercise!
↑↰
P
↱
D
↑
↑
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Goal: Max nr of paper balls in dropzone!
Lets start with an exercise!
↑↰
P
↱
D
↑
↑
Daniel Brolund — @danielbrolund — [email protected]
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Desired
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Desired
Desired
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Desired
Desired
Controller
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
ControllerDesired
Desired
Controller
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
ControllerDesired
Desired
Systeminput
Controller
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
ControllerDesired
Systeminput
Desired
Systeminput
Controller
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
ControllerDesired
Systeminput
Desired
Systeminput
Controller
System
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Controller SystemDesired
Systeminput
Desired
Systeminput
Controller
System
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Controller SystemDesired
Systeminput
Desired
Systeminput
ActualController
System
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Schematic: Me
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Time
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Time
Desired
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Actual
Time
Desired
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Actual
Time
Desired
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Actual
Time
Desired
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Actual
Time
Desired
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
?Actual
Time
Desired
Schematic: MeTemp
Do I jump in...?
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
An everyday empirical process...
Actual==Desired ?
Controller SystemActualDesired
Systeminput
Desired
Systeminput
ActualController
System
Actual
Time
Desired
Schematic: MeTemp
Do I jump in...?
Robot
Daniel Brolund — @danielbrolund — [email protected]
What is the control error?
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
What is the control error?Temp
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
What is the control error?Temp
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
What is the control error?Temp
"Error surface"
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
Control Error = ∫|Desired-Actual|
What is the control error?Temp
"Error surface"
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
Control Error = ∫|Desired-Actual|
What is the control error?Temp
"Error surface"
Time
Control error
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
Control Error = ∫|Desired-Actual|
What is the control error?Temp
"Error surface"
Time
Control error
Daniel Brolund — @danielbrolund — [email protected]
Actual
Time
Desired
Control Error = ∫|Desired-Actual|
What is the control error?Temp
"Error surface"
Time
Control error∞
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Requires: - detailed knowledge of System, Desired and hence Actual - that such a Controller exists and can create such System input- that the System can handle System input
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Requires: - detailed knowledge of System, Desired and hence Actual - that such a Controller exists and can create such System input- that the System can handle System input
Errorsε
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Requires: - detailed knowledge of System, Desired and hence Actual - that such a Controller exists and can create such System input- that the System can handle System input
Errorsε
"Unlimited"energy
∞
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Requires: - detailed knowledge of System, Desired and hence Actual - that such a Controller exists and can create such System input- that the System can handle System input
Errorsε
Change"Unlimited"
energy
∞
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Requires: - detailed knowledge of System, Desired and hence Actual - that such a Controller exists and can create such System input- that the System can handle System input
Errorsε
Change"Unlimited"
energy
∞
Complexity
Daniel Brolund — @danielbrolund — [email protected]
The "simplistic" solution
Controller SystemActualDesired
Systeminput Controller=(System)-1
⇒Desired = Actual
Requires: - detailed knowledge of System, Desired and hence Actual - that such a Controller exists and can create such System input- that the System can handle System input
Errorsε
Change"Unlimited"
energy
∞
Complexity
Won't work in reality
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑↰
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑↰↑
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑↰
P
↑
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑↰
P
↱
↑
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑↰
P
↱
↑
↑
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
Robot
Controller
Exercise 2
↑↰
P
↱
D
↑
↑
As before, but now only one step at a time!
Daniel Brolund — @danielbrolund — [email protected]
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected]
What happened this time?
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
Adding feedback!
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Sensor
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Sensor
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Sensor
SensorObserved result
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Sensor
Error-
SensorObserved result
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Feed-back or Closed-loop system
Sensor
Error-
SensorObserved result
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Feed-back or Closed-loop system
Sensor
Error-
SensorObserved result
Time
Temp
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Feed-back or Closed-loop system
Sensor
Error-
SensorObserved result
Time
Desired
Temp
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Feed-back or Closed-loop system
Sensor
Error-
SensorObserved result Actual
Time
Desired
Temp
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
Schematic:
Controller SystemActualDesired
Systeminput
Daniel Brolund — @danielbrolund — [email protected]
Adding feedback!
Feed-back or Closed-loop system
Sensor
Error-
SensorObserved result Actual
Time
Desired
Temp
Observed result
Systeminput
ActualController
Me
Desired
System
Daniel Brolund — @danielbrolund — [email protected]
What is the control error now?
Daniel Brolund — @danielbrolund — [email protected]
What is the control error now?
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
What is the control error now?
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
Control Error = ∫|Desired-Actual|
What is the control error now?
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
Control Error = ∫|Desired-Actual|
What is the control error now?
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
Control Error = ∫|Desired-Actual|
What is the control error now?
Time
Control error
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
Control Error = ∫|Desired-Actual|
What is the control error now?
Actual
Time
Control error
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
Control Error = ∫|Desired-Actual|
What is the control error now?
Actual
Time
Control error
bounded!!
Actual
Desired
Temp
Daniel Brolund — @danielbrolund — [email protected]
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Live user feedback/release
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Live user feedback/release Usability tests
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Live user feedback/release Usability tests
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Retrospective
Live user feedback/release Usability tests
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Retrospective
Live user feedback/release Usability tests
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
TDD
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
TDD
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
TDD
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Pairing
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
TDD
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Compilation Pairing
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
SquigglesTDD
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Compilation Pairing
Whiteboard discussions
In software: There are many feedback loops at play!
Daniel Brolund — @danielbrolund — [email protected]
SquigglesTDD
ATDD
Daily stand-up
Retrospective
Live user feedback/release Usability tests
Compilation Pairing
Whiteboard discussions
In software: There are many feedback loops at play!
...AND MANY MORE!
Daniel Brolund — @danielbrolund — [email protected]
Exercise 3: Draw your own feedback loops
TDD 10s
Retros 1w
Release 1m
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↱
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↱
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↱
↑
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↱
↑
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Drop-zone
RobotController
Exercise 4
↑↰
P
↱
D
↑
↑
As before, but now now three steps at a
time!
Daniel Brolund — @danielbrolund — [email protected]
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected]
What happened this time?
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Me
Desired
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Delay
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Delay
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Time
Temp
Delay
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Time
Desired
Temp
Delay
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Time
Desired
Temp
Delay
Tap temp
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Time
Desired
Temp
Delay
Tap temp
Tap tempError
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Time
Desired
Temp
Delay
Tap temp
Tap temp
Tap temp
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Observed result
Time
Desired
Temp
Delay
Tap temp
Tap temp
Tap temp
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected] Brolund — @danielbrolund — [email protected]
The impact of delay
Systeminput
ActualController
System
Sensor
Observed result
Time
Desired
Temp
Delay
Tap temp
Tap temp
Tap temp
Error
-
Schematic:
Controller SystemActualDesired
Systeminput
SensorObserved result
-
Me
Desired
Delay
Daniel Brolund — @danielbrolund — [email protected]
Delay considerations
Daniel Brolund — @danielbrolund — [email protected]
Observed result
Desired
Temp
Tap temp
Delay considerations
Daniel Brolund — @danielbrolund — [email protected]
Observed result
Desired
Temp
Tap temp
Delay considerations
delay > half of required cycletime ⇒
Guaranteed instability!(in practice, instability comes earlier)
Daniel Brolund — @danielbrolund — [email protected]
Observed result
Desired
Temp
Tap temp
Delay considerations
delay > half of required cycletime ⇒
Guaranteed instability!(in practice, instability comes earlier)
It often takes about 5-10 times the delay to tune the system
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
-
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
Delay position in loop is irrelevant w.r.t. instability!
-
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
DelayDelay position in loop is irrelevant w.r.t. instability!
-
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
Delay position in loop is irrelevant w.r.t. instability!
-
Delay
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
Delay
Delay position in loop is irrelevant w.r.t. instability!
-
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
DelayDelay position in loop is irrelevant w.r.t. instability!
-
Daniel Brolund — @danielbrolund — [email protected]
More delay considerations
Error
- Controller SystemActualDesired
Systeminput
Sensor
Observed result
DelayDelay position in loop is irrelevant w.r.t. instability!
-
Daniel Brolund — @danielbrolund — [email protected]
Feedback delay considerations
Daniel Brolund — @danielbrolund — [email protected]
Feedback cycle-time sweet-spots are different due to
processing and delays
Feedback delay considerations
Daniel Brolund — @danielbrolund — [email protected]
Feedback cycle-time sweet-spots are different due to
processing and delays
Feedback delay considerations
slower that desired change ⇒
Unstable system
Daniel Brolund — @danielbrolund — [email protected]
Feedback cycle-time sweet-spots are different due to
processing and delays
Feedback delay considerations
slower that desired change ⇒
Unstable system
faster than desired change⇒
Controller overloaded or too expensive
Daniel Brolund — @danielbrolund — [email protected]
Feedback cycle-time sweet-spots are different due to
processing and delays
Feedback delay considerations
slower that desired change ⇒
Unstable system
faster than desired change⇒
Controller overloaded or too expensive
You want to shorten inner
feedback loops before outer!
Daniel Brolund — @danielbrolund — [email protected]
Observability and controllability
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Observability and controllability
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Observability and controllability
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Flow
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Flow Acidity
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Mineral tracesFlow Acidity
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
ROI
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Acceptance test results
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
ROI
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Acceptance test results
Nr of checkins
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
ROI
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Acceptance test results
Nr of checkins Request statistics
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
ROI
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Acceptance test results
Nr of checkins Request statistics
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
User satisfaction
ROI
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
The Sensor has to measure
a relevant state (observability) that the
Controller can influence (controllability).
Lines of code
Unit test results
Acceptance test results
Nr of checkins Request statistics
Error- Controller System
ActualDesired
Systeminput
SensorObserved result
Uncontrollable
Unobservable
Observability and controllability
User satisfactionUsability
ROI
Water temperature
Mineral traces
Radioactivity
Flow Acidity
-
SW
Daniel Brolund — @danielbrolund — [email protected]
Noise
Daniel Brolund — @danielbrolund — [email protected]
+ =
Huh?NoiseSignal
Signals must be filtered from noise. ⇒ Delays
⇒ Lower communication bandwidth
Noise
Daniel Brolund — @danielbrolund — [email protected]
+ =
Huh?NoiseSignal
Signals must be filtered from noise. ⇒ Delays
⇒ Lower communication bandwidth
Noise
In SW-development, noise can be - Irrelevant information - Disinformation
Daniel Brolund — @danielbrolund — [email protected]
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected]
What was the delay in the robot exercises?
Discussion - groups of 4-6
Daniel Brolund — @danielbrolund — [email protected]
What was the delay in the robot exercises?
Discussion - groups of 4-6
What could you observe?
Daniel Brolund — @danielbrolund — [email protected]
What was the delay in the robot exercises?
Discussion - groups of 4-6
What could you observe? What could you control?
Daniel Brolund — @danielbrolund — [email protected]
What was the delay in the robot exercises?
Discussion - groups of 4-6
What could you observe? What could you control?
What was the noise?
Daniel Brolund — @danielbrolund — [email protected]
What was the delay in the robot exercises?
Discussion - groups of 4-6
What could you observe? What could you control?
What was the noise?
What was the signal?
Daniel Brolund — @danielbrolund — [email protected]
What was the delay in the robot exercises?
Discussion - groups of 4-6
What could you observe? What could you control?
How did all that affect you?
What was the noise?
What was the signal?
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
ATDD
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
ATDD Daily standups
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
ATDD
Iterations
Daily standups
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
ATDD
Iterations
Daily standupsContinuous integration
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
ATDD
Iterations
Daily standupsContinuous integration
Retrospectives
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
Feed-forward using the Controller is application of a priori knowledge.
We always need some of it to avoid re-inventing wheels.
TDD
ATDD
Iterations
Daily standupsContinuous integration
Deployment environments
Retrospectives
Is feed-forward waste?
-
Daniel Brolund — @danielbrolund — [email protected]
• How can you break the empirical process? What part?
• Controller?
• System?
• Sensor?
• Desired?
Failure modes - discussion in groups
Error- Controller SystemActualDesired
Systeminput
SensorObserved result
-
Daniel Brolund — @danielbrolund — [email protected]
• What does the following do to your feedback loops?
• Trust?
• Distrust?
• Lies?
• Care?
• What is noise according to you?
• What other "soft" issues will affect the system? How?
"Softer" issues - discussion in groups
Daniel Brolund — @danielbrolund — [email protected]
http://www.azarask.in/blog/post/the-wrong-problem/
Daniel Brolund — @danielbrolund — [email protected]
• Introduce feedback!
• Tune and prune the Sensors.
• Shorten inner feedback loops before outer.
• Reduce delays.
• Reduce noise.
Some of my best advice...
Thanks!
Daniel Brolund @danielbrolund [email protected]