3. , Developer, Consultant, CTO @
Specialized in Statistical Process Control (SPC)
and Supply Chain Optimization from Lean Manufacturing (data geek)
Continuous Delivery infrastructure, automation strategy & technical mentorship
Janelle Klein
Who Am I?
How to Measure the PAIN
in Software Development
Janelle Klein
Author of “Idea Flow”
leanpub.com/ideaflow
Yay!
Tour Speaker
Founder of
newiron.com
9. My Code
is AWESOME!
100% Code Coverage
Low Cyclomatic
Complexity
Usability
Problems
This is
PAINFUL!
Depend
On API
WTF?!
WTF?!
WTF?!
WTF?!
WTF?! WTF?!
10. My Code
is AWESOME!
100% Code Coverage
Low Cyclomatic
Complexity
This is
PAINFUL!
Depend
On API
WTF?!
WTF?!
WTF?!
WTF?!
WTF?! WTF?!
We can both be looking at the exact same code, and
have a totally different experience.
11. 100% Code Coverage
Low Cyclomatic
Complexity
Usability
Problems
Depend
On API
WTF?!
WTF?!
WTF?!
WTF?!
WTF?! WTF?!
Here’s what
caused me PAIN
Painful Experience
Oh…
I can fix that!
12. 100% Code Coverage
Low Cyclomatic
Complexity
Depends
On API
WTF?!
WTF?!
WTF?!
WTF?!
WTF?! WTF?!
Oh…
I can fix that!
13. 100% Code Coverage
Low Cyclomatic
Complexity
Depend
On API
Oh…
I can fix that!
No More Pain
This
is AWESOME!
14. 100% Code Coverage
Low Cyclomatic
Complexity
Depend
On API
Yay!
It’s AWESOME!
No More Pain
This
is AWESOME!
Visibility Facilitates the Conversation
17. Bad Software has become the new Environment Pollution
Cost
&
Risk
Human
Limitations
We are HERE:
Difficulty of Work
What’s Causing our Pain?
Cumulative Usability Problems in the Software Supply Chain
25. PAIN
The Classic Story of Project Failure
Problems get deferred
Builds start breaking
Releases get chaotic
Productivity slows to a crawl
Developers begging for time
It’s never enough
Project Meltdown
29. Has anyone struggled with the
challenge of business pressure?
Has anyone ever tried to fix this problem
within their organization?
Has anyone ever succeeded?
30. This is the biggest cause of FAILURE
in our industry:
31. Because PAIN Doesn’t Show Up
on a Balance Sheet
If we don’t MEASURE it,
Why?
they don’t SEE it.
32. “Better”
“Better”
What if you could get managers and developers
all pulling the same direction in your company?
Managers
Developers
34. Two Options:
Option 1
Stay
the Course
Here’s the Catch:
In order for this to work, we have to start
working together as a community.
Option 2
Build
Happiness
or
Let’s Do This
35. LEARN YOUR WAY TO AWESOME.
Free to Join Industry Peer Mentorship Network
1. Make the PAIN visible
2. Breakdown the causes into patterns
3. Help each other to learn & improve
36. We are working together to INVENT solutions for:
Community Analytics Platform
Process Control,
Supply-Chain Optimization &
Throughput Accounting
for
Software Organizations
38. The Goal
Eliyahu M. Goldratt
“Throughput Accounting”
System Productivity =
Rate of Revenue
Rate of Investment
Theory of Constraints
Optimizing Flow in a Supply Chain System
51. The amount of PAIN was caused by…
Likeliness(of((
Unexpected(
Behavior(
Cost(to(Troubleshoot(and(Repair(
High(Frequency(
Low(Impact(
Low(Frequency(
Low(Impact(
Low(Frequency(
High(Impact(
PAIN(
52. What Causes Unexpected
Behavior (likeliness)?
What Makes Troubleshooting
Time-Consuming (impact)?
Semantic Mistakes
Stale Memory Mistakes
Association Mistakes
Bad Input Assumption
Tedious Change Mistakes
Copy-Edit Mistakes
Transposition Mistakes
Failed Refactor Mistakes
False Alarm
Non-Deterministic Behavior
Ambiguous Clues
Lots of Code Changes
Noisy Output
Cryptic Output
Long Execution Time
Environment Cleanup
Test Data Creation
Using Debugger
Most of the pain was caused by human factors.
What causes PAIN?
53. What Causes Unexpected
Behavior (likeliness)?
What Makes Troubleshooting
Time-Consuming (impact)?
Non-Deterministic Behavior
Ambiguous Clues
Lots of Code Changes
Noisy Output
Cryptic Output
Long Execution Time
Environment Cleanup
Test Data Creation
Using Debugger
What causes PAIN?
Most of the pain was caused by human factors.
Semantic Mistakes
Stale Memory Mistakes
Association Mistakes
Bad Input Assumption
Tedious Change Mistakes
Copy-Edit Mistakes
Transposition Mistakes
Failed Refactor Mistakes
False Alarm
54. What Causes Unexpected
Behavior (likeliness)?
What Makes Troubleshooting
Time-Consuming (impact)?
Non-Deterministic Behavior
Ambiguous Clues
Lots of Code Changes
Noisy Output
Cryptic Output
Long Execution Time
Environment Cleanup
Test Data Creation
Using Debugger
What causes PAIN?
Semantic Mistakes
Stale Memory Mistakes
Association Mistakes
Bad Input Assumption
Tedious Change Mistakes
Copy-Edit Mistakes
Transposition Mistakes
Failed Refactor Mistakes
False Alarm
Most of the pain was caused by human factors.
55. What Causes Unexpected
Behavior (likeliness)?
What Makes Troubleshooting
Time-Consuming (impact)?
Non-Deterministic Behavior
Ambiguous Clues
Lots of Code Changes
Noisy Output
Cryptic Output
Long Execution Time
Environment Cleanup
Test Data Creation
Using Debugger
What causes PAIN?
PAIN is a consequence of how we interact with the code.
Semantic Mistakes
Stale Memory Mistakes
Association Mistakes
Bad Input Assumption
Tedious Change Mistakes
Copy-Edit Mistakes
Transposition Mistakes
Failed Refactor Mistakes
False Alarm
56. PAIN occurs during the process of
understanding and extending the software
Complex(
So*ware(
PAIN
Not the Code.
Optimize “Idea Flow”
61. My team spent tons of time working on
improvements that didn’t make much difference.
We had tons of automation, but the
automation didn’t catch our bugs.
62. My team spent tons of time working on
improvements that didn’t make much difference.
We had well-modularized code,
but it was still extremely time-consuming to troubleshoot defects.
63. The hard part isn’t solving the problems
it’s identifying the right problems to solve.
“What are the specific problems
that are causing the team’s pain?”
65. The Rhythm of “Idea Flow”
Write a little code.
Work out the kinks.
Write a little code.
Work out the kinks.
Write a little code.
Work out the kinks.
75. We can read Visual Indicators in Idea Flow Maps
Le#$Atrium$
Le#$Ventricle$
Right$Ventricle$
Right$Atrium$
What’s$causing$this$pa7ern?$
Similar to how an EKG helps doctors diagnose heart problems...
76. ...Idea Flow Maps help developers diagnose software problems.
Problem-Solving
Machine
We can read Visual Indicators in Idea Flow Maps
77. = Solution Strategy
The “Heart” of Software Development
(the problem-solving machine)
Based on:
Grandon Gill and Richard Hicks models of Task Complexity
and John Boyd’s OODA Loop
78. = Solution Strategy
The “Heart” of Software Development
(the problem-solving machine)
Choose a general strategy
79. = Solution Strategy
The “Heart” of Software Development
(the problem-solving machine)
Understand the system
80. = Solution Strategy
The “Heart” of Software Development
(the problem-solving machine)
Code & work out the kinks
81. = Solution Strategy
The “Heart” of Software Development
(the problem-solving machine)
Back to the drawing board
82. The symptoms we experience depend on where the
disruptions are in the problem-solving process
83. Trial and Error
The Friction is Here
Troubleshooting
Progress
Learning
Rework
94. The Team’s Improvement Focus:
Increasing unit test coverage by 5%
Case Study: Huge Mess with Great Team
1. Test Data Generation
2. Merging Problems
3. Repairing Tests
1000 hours/month
The Biggest Problem:
~700 hours/month generating test data
95. 18 months after a Micro-Services/Continuous Delivery rewrite.
Troubleshooting
Progress
Learning
40-60% of dev capacity on “friction”
0:00 28:15
12:230:00
Case Study: From Monolith to Microservices
98. The Cost of Escalating Risk
0%
100%
Release 1 Release 2 Release 3
Troubleshooting
Progress
Learning
Percentage Capacity spent on Troubleshooting (red) and Learning (blue)
(extrapolated from samples)
99. 0%
100%
Release 1 Release 2 Release 3
Percentage Capacity spent on Troubleshooting (red) and Learning (blue)
Figure out what to do
Learning is front-loaded
Troubleshooting
Progress
Learning
The Cost of Escalating Risk
100. 0%
100%
Release 1 Release 2 Release 3
Percentage Capacity spent on Troubleshooting (red) and Learning (blue)
Rush Before the Deadline
Validation is Deferred
Troubleshooting
Progress
Learning
The Cost of Escalating Risk
101. 0%
100%
Release 1 Release 2 Release 3
Percentage Capacity spent on Troubleshooting (red) and Learning (blue)
Pain Builds
Baseline friction keeps rising
Troubleshooting
Progress
Learning
The Cost of Escalating Risk
102. 0%
100%
Release 1 Release 2 Release 3
Percentage Capacity spent on Troubleshooting (red) and Learning (blue)
Chaos Reigns
Unpredictable work stops
fitting in the timebox
Troubleshooting
Progress
Learning
The Cost of Escalating Risk
103. Over 1000 Hours/Month in Downtime!
They tried to solve their design problems
with more test automation.
25 developers down for 2 days
(It didn’t work)
115. Breakdown of Development Capacity
If you were an investor:
wouldn’t YOU want to reduce friction?
“Throughput Accounting” Metrics
116. With #OpenDX, we can apply the entire suite of
Risk Management Tools from Lean Manufacturing
Statistical Process Control (SPC)
Optimal Friction
Upper Control Limit
X"
“Out of Control”
20min
0m
Average Pain per Incident
Target
Control
Limit
Supply Chain Optimization
Throughput Accounting
117. We have the power to solve this problem:
If we choose to do it.
119. Two Options:
Option 1
Stay
the Course
Option 2
Build
Happiness
or
Let’s Do This
Miko Matsumura: “Build Happiness” is a
philosophy that happiness must be built.
124. Janelle Klein
openmastery.org @janellekz
Check out openmastery.org for details.
Read my Book.
Think About It.
FREE with
MembershipBuy It
How to Measure the PAIN
in Software Development
Janelle Klein