-
1.
Janelle Klein
openmastery.org @janellekz
A Programmer’s Guide To
HUMANS
-
2.
SPC
Looks okay.
Alert!
Measurements
Tools
About 10 Years Ago…
Statistical Process Control (SPC) in Semiconductor
-
3.
SPC
Looks okay.
Alert!
Measurements
Tools
We shipped to production…
-
4.
SPC
Looks okay.
Shutdown!
Measurements
Tools
Missing
Config Change
We shipped to production…
-
5.
SPC
Measurements
Looks okay.
Alert!
Tools
We shipped to production…AGAIN
-
6.
SPC
Looks okay.
Shutdown!
Measurements
Tools
We couldn’t reproduce the problem!
We shipped to production…AGAIN
-
7.
SPC
Looks okay.
Shutdown!
Measurements
Tools
Six months later…
Threading
Bug
-
8.
SPC
Measurements
Looks okay.
Alert!
Tools
We shipped to production…
AGAIN (3x)
-
9.
SPC
Looks okay.
Shutdown!
Measurements
Tools
Memory
Leak
We shipped to production…
AGAIN (3x)
Totally my fault.
-
10.
We had an AWESOME team!
We had a MOUNTAIN of automation!
We were DISCIPLINED with best practices!
+
Project FAILURE
-
11.
+
We had a GREAT team!
We had a MOUNTAIN of automation!
We were DISCIPLINED with best practices!
How did we turn this around?
-
12.
The Retrospective
“Our tests aren’t catching our bugs!”
Our biggest problem
“Well, if we don’t understand
a problem, we should
collect data.” “What data would help us
understand the problem?”
-
13.
Technical Debt Mistakes
I thought the problem was
Technical Debt
-
14.
SPC
Looks okay.
Alert!
Measurements
Tools
System Architecture
Statistical Process Control (SPC)
UI
code
Charting
Code
-
15.
Beautiful
Looks okay.
Alert!
Measurements
Tools UGLY UGLY
System Architecture
Statistical Process Control (SPC)
-
16.
Complex(
So*ware(
PAIN
This is what I knew...
What made development feel painful?
-
17.
Unexpected
Behavior
Problem
Resolved
Tracking Painful Experience with the Code
Troubleshooting
Progress
5 hours and 18 minutes of troubleshooting...
PAINFUL
-
18.
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(
-
19.
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?
-
20.
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
-
21.
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.
-
22.
PAIN occurs during the process of
understanding and extending the software
Complex(
So*ware(
PAIN
Not the Code.
Optimize “Idea Flow”
-
23.
PAIN occurs during the process of
understanding and extending the software
Complex(
So*ware(
PAIN
Not the Code.
Optimize “Idea Flow”
Data-driven
Improvement
-
24.
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.
-
25.
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.
-
26.
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?”
-
27.
We learned how to learn together
Culture
What changed on our team?
-
28.
The Fifth Discipline
The Art & Practice of the Learning Organization
Peter Senge
The Most INSPIRING Book EVER…
-
29.
We learned how to learn together?
What if…
-
30.
We saw the world as one big design problem?
What if…
-
31.
Coding problem?
We’ve got tools for this.
Service 2Service 1
Human problem?
PANIC!
“Let’s fix these HUMAN Problems!”
A Scary Thought to Engineers
-
32.
Predictably Irrational
Dan Ariely
“What if I could explain humans like code?”
Crazy Idea:
-
33.
Code problems?
We’ve got tools for this.
Service 2Service 1
Humans Become an Engineering Problem
Service 2Service 1
Human Problems?
We’ve got tools for this too.
This Talk: Culture from the Inside Out
-
34.
Output:
Decisions
Feedback Loop
DB
Pain Signal
Input:
Ideas
HUMAN = Decision-Making Engine
Awesome
Signal
Goal:
Minimize PAIN
Maximize AWESOME
-
35.
Recognition:
How do ideas get inside our head?
Input:
Ideas
-
36.
Metaphors We Live By
George Lakoff and Mark Johnson
On Intelligence
Jeff Hawkins
+
A Synthesis of the Research In…
-
37.
Observe Pattern
“Do I know this pattern?”
Think of a “Concept” as a Metaphorical Shape
-
38.
Observe Pattern
“Do I know this pattern?”
Think of a “Concept” as a Metaphorical Shape
-
39.
“I don’t see anything.”
No Shape = No Recognition
Think of a “Concept” as a Metaphorical Shape
-
40.
“Clojure”
“What is Clojure?”
Let’s say a friend asks us…
-
41.
“What is Clojure?”
Let’s say a friend asks us…
-
42.
Recognition is a Bottom-Up Process
Summarize
Sensory signals
“Clojure”
Brain Layer
Brain Layer
Brain Layer
-
43.
Recognition FAILURE
Summarize
Sensory signals
Brain Layer
Brain Layer
Brain Layer
Eh?
-
44.
“What is Clojure?”
Lisp
Functional Language
Groovy
JVM Language
Object-Oriented Language
New Shapes are Defined Relative to Old Shapes
-
45.
“What is Clojure?”
Lisp
Functional Language
Groovy
JVM Language
Object-Oriented Language
Clojure!
Functional Language
JVM Language
New Shapes are Defined Relative to Old Shapes
-
46.
Brain Hack #1
How can you improve your ability to
communicate with your peers and
recognize more details in your experience?
Expand your vocabulary of shapes
-
47.
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
Expand your vocabulary of shapes
-
48.
Meaning:
How are shapes combined to create meaning?
Input:
Ideas
DB
-
49.
Thing Patterns
Process Patterns
Relationship Patterns
Three Different Base Classes for “Concepts"
-
50.
Base Classes for Thing Patterns
Physical Object I
-
51.
Base Classes for Relationship Patterns
Directions
= Better
= Worse
Containers
In
Group
Out
Group
-
52.
Human Identity
Put Things and Containers Together…
Object Identity
-
53.
Empathy. Short-circuit Empathy.
-
54.
Direction Metaphors Give Us Rank
Rank Objects Rank CategoriesRank People
-
55.
Categorizing and ranking things is how our brains
make sense of the world
-
56.
Category Types affect how we compare
In Group
Look for similarities
Out Group
Look for differences
-
57.
Pre-wired to Model the In-Group
You extends from I
“I want to be just like you!”
Similarity
Seeking
-
58.
My Team
We write unit tests.
We pair program.
You
Do you do
these things?
YES
Pre-wired to Model the In-Group
-
59.
Pre-wired to Objectify the Out-Group
You extends from Object
“You’re nothing like me.”
Difference
Seeking
-
60.
Developers
Testers
Pre-wired to Objectify the Out-Group
Testers extend from Object
“Testers are a tool for us to use.”
-
61.
Smart People
Idiots
Pre-wired to Objectify the Out-Group
Idiots extend from Object
“Idiots are a tool for us to use.”
-
62.
When I decide someone is “not like me”
Human Short-circuit empathy
This is why we act like assholes.
-
63.
Brain Hack #2
How do you stop being an asshole?
Rewire your brain for empathy.
-
64.
1. Stop and think.
Rewire your brain:
How to Stop Being an Asshole:
Similarity Seeking
Disgust
or ?
2. Choose ( )
Pity
-
65.
Pre-wired to Extend Identity to Offspring
This is me. This is my baby.
“My baby is a part of me”
MyBaby extends I
-
66.
Pre-wired to Extend Identity to “SoulCrafts”
This is me. This is my code.
PAIN
“Your code
sucks.”
-
67.
Brain Hack #3
How do you stop feeling defensive?
Rewire your brain to disable empathy.
-
68.
1. Stop and think.
Rewire your brain:
or ?
How to Stop Feeling Defensive:
Disables Empathy
PAIN
“Your code
sucks.”
2. Choose ( )
-
69.
Output:
Decisions
DB
Pain Signal
Input:
Ideas
Awesome
Signal
Gut Feel:
Where do “gut feel” decisions come from?
-
70.
Feeling Machine
Orbitofrontal Cortex + Lymbic System
(Summarized Body Response)
AWESOMEPAIN
Disgust
Anger
Desire
Beauty
LoveFear
-
71.
Think “Fruit”
Simulate
Body Experience
Do I want “Fruit” or a “Salad”?
Not so much…
-
72.
Think “Salad”
Simulate
Body Experience
Do I want “Fruit” or a “Salad”?
Fairly awesome…
-
73.
Think about “Sally”
Simulate
Body Experience
Do I Like “Sally”?
Desire
Beauty
-
74.
Think about “George”
Simulate
Body Experience
Do I Like “George”?
Disgust
Anger
-
75.
Breakpoint
More Complex Decisions
Skip the Tests?
DELETE IT ALL!Write a Test?
Where do these feelings come from?
-
76.
Base Class for Process Pattern
Journey
Beginning End
Journey: The Rollercoaster of Human Experience
-
77.
Journey
Constraints
What were the challenges on the journey?
Frustration
-
78.
Friction
Journey
What were the challenges on the journey?
PAIN
-
79.
Journey Strategy
What were the challenges on the journey?
Victory!
-
80.
This
SUCKS!
Journeys End in PAIN or AWESOME
Yay!
AWESOME!
AWESOMEPAIN
-
81.
Situation Strategy Consequence
I’m on a Journey
“Journeys” are constructed of chainable parts
-
82.
caused by
caused by
Consciousness
“What if?”
what if?
what if?
This
SUCKS!
I just brought down production…How do I avoid the PAIN next time?
What if I had
checked configs?
What if I had
better tests?
Brought down production
-
83.
How do I avoid the PAIN next time?
caused by
caused by
what if?
what if?
I’ll do better
next time.
Consciousness
“What if?”
Brought down production
-
84.
Situation Consequence
Prediction Machine
70%
20%
10%
sense intuit
“Gut Feel” arises through pattern reinforcement
see
Minimize PAIN
Maximize AWESOME
How do I avoid the PAIN next time?
-
85.
Our PAIN Sensor is Horribly Miscalibrated
Ugly
Bothers us a lot
Difficult
Moderate difficulty
is enjoyable
Our entire discipline has evolved in the
absence of a feedback loop.
-
86.
Brain Hack #4
How can you recalibrate your PAIN sensor?
Visualize your “PAIN”
If you want to desire it, call it AWESOME
If you want to avoid it, call it PAIN
-
87.
Output:
Decisions
Feedback Loop
DB
Pain Signal
Input:
Ideas
Awesome
Signal
Brain in Motion: Prediction Machine
-
88.
Rewire Your Brain
John B. Arden, Ph. D.
A Synthesis of the Research In…
Leadership and Self-Deception
The Arbringer Institute
+
-
89.
Recent Past
(Patterns Recognized)
Predict:
What’s Next?
Our Brain is Constantly Making Predictions
We only update our brain code
when predictions FAIL
-
90.
Predictions
Confirmed
Imagine you’re walking down the stairs…
predictions.next()
-
91.
WTF?!
(RuntimeException)
Imagine you’re walking down the stairs…
Predictions
Violated
Consciousness + Repair Predictions
i.e. construct story
to make sense
-
92.
Social Rejection = Violated Prediction
No
Identity
predicts inclusion…
Consciousness
PAIN
WTF?!
+ Repair Identity
-
93.
“Me”
PAIN
How do we Repair Identity?
No.
-
94.
“Me”
PAIN
How do we Repair Identity?
No.
PAIN > Disgust
“Me”
Self-Deception
WTF?!
-
95.
“Me”
PAIN
How do we Repair Identity?
No.
PAIN > Disgust
“Me”
Self-Deception
Self-Deception is a coping strategy
for resolving identity conflicts
-
96.
Personal
Truth
Authentic Path
(the “sense”)
The Downward Spiral of the Self
Identity
Self
Deception
lies
-
97.
Personal
Truth
Authentic Path
(the “sense”)
Identity
Self
Deception
lies
The more we
deviate
Consciousness
Rationalize
The Downward Spiral of the Self
-
98.
Personal
Truth
Identity
Self
Deception
Authentic Path
(the “sense”)
lies
The more we
deviate
Consciousness
Rationalize
“Emotional Baggage”
The Downward Spiral of the Self
-
99.
Brain Hack #5
How do we escape the downward spiral?
Identity 2.0
-
100.
Identity 2.0:
“I am the one who chooses in the moment”
Identity 1.0:
“I am the sum of my past”
The database is me.
DB
Consciousness is me.
Consciousness
-
101.
Dreams
DB
Consciousness
Past Lessons
“I Choose”
in the moment
Identity 2.0
Momentum on the journey
results in joy in the moment
-
102.
=
Me
Consciousness
Refactor the base class
What are the choices you can make everyday
that define who you are?
Identity 2.0 is a principle of continuous choice
-
103.
My Team…
What choices did we believe in?
-
104.
Courage.
Leadership.
Empathy.
Authenticity.
Respect.
The C.L.E.A.R. Mindset
Identity 2.0 is a principle of continuous choice.
-
105.
Personal
Truth
Identity
Self
Deception
lies
Consciousness
CHOOSE
WTF?!
The C.L.E.A.R. Mindset
What is true?
-
106.
Personal
Truth
Authentic Path
(the “sense”)
Identity
Self
Deception
Consciousness
CHOOSE
WTF?!
The C.L.E.A.R. Mindset
What is true?
-
107.
Brain Hack #6
How do we build a C.L.E.A.R. culture?
Choose the path we want others to follow.
-
108.
Culture is an Emergent Property
The only thing we actually control:
Personal Mindset
There is only “I” who chooses.
-
109.
Remember:
Pre-wired to Model the In-Group
When you step up and lead,
the people on your team will model your choices.
-
110.
C.L.E.A.R. Learning Culture
We put the PAIN on center stage,
then learn our way to AWESOME by working together
-
111.
Poverty
War
Corrupt
Government
Broken
Education
Planetary
Destruction
The world around us…
-
112.
If we zoom out…
We all want the world to be different.
But we all feel helpless.
Why are we helpless?
-
113.
If we zoom out…
Why are we helpless?
We are crippled by our inability to work together.
We are crippled by the difficulty of change.
-
114.
The Fifth Discipline
The Art & Practice of the Learning Organization
Peter Senge
The Most INSPIRING Book EVER…
-
115.
The Most INSPIRING Book EVER…
What I See: Hope for Humanity
-
116.
A path to get us here…
What I See: Hope for Humanity
-
117.
Strategy to make mastery-level education
FREE to EVERY HUMAN in the world
Challenge 1: $$$$$$$$$$$$$$$$$$$$$$$$
Challenge 2: Unprecedented levels of cooperation
-
118.
I believe the path starts with us…
Learning how to learn together
as a software community
-
119.
We start with visibility.
We move toward awesome.
-
120.
We start with our team.
We move toward our industry.
-
121.
1. Measure Your PAIN
Automated Visibility Tools
Automated FAQ
“Idea Flow Maps”
January 1st, 2017
MVP for Individuals (OSS)
June 15th, 2017
MVP for Teams ($)
-
122.
Dreams
DB
Past Lessons
2. Key Paradigm Shift: Machine -> Organism
“Business Creature”
-
123.
DB
Past Lessons
Innovation
Pain Signal
Awesome
Signal
Dreams
Dec 1st, 2018
BusinessCreatureOS ($$$)
2. Key Paradigm Shift: Machine -> Organism
-
124.
Dreams
Dreams
3. MMORPG: The Game of Life (Gamified Education)
C.L.E.A.R. C.L.E.A.R.
-
125.
Tony’s Flair:
Monthly Awards
for guild achievements!
-
126.
Tony’s Flair:
Monthly Awards
for guild achievements!
Nov 8th, 2020
MVP for Free Education
-
127.
We design the game.
We make up the rules.
We invite the world to play.
-
128.
Janelle Klein
openmastery.org @janellekz
How to Join:
Janelle Klein
Founder of Open Mastery
janelle@openmastery.org
1. Email Subject: “Tools Pilot”
2. Include IDE/Editor, Your OS
FREE!
Hi everyone, I’m Janelle Klein, founder of Open Mastery and author of Idea Flow: How to Measure the pain in software development. Let’s make the pain visible! Well, why?
When we’re kids… we talk a lot about dreams.
We can be anything, we can do anything. The sky is the only limit.
Then we grow up and we get all rational. We’ve got bills to pay, and a job to do, and a family to support… we’ve got no time for dreaming.
And start applying our engineering skills to conquering the biggest challenges in our world. After I got involved in business, I started to realize that…
And we start working together as an engineering community, we really can change everything.
And we start working together as an engineering community, we really can change everything.
Humans never seem to do what we want!
Then you start recognizing the patterns, “aha! this is one of those situations, or… I should keep on eye on that.”
If there’s one thing that will accelerate your learning faster than anything else, it’s this.
Need to also mention Open Mastery Online. People in the Mentorship program we’re going to build a statical process control system for software development.
Then you start recognizing the patterns, “aha! this is one of those situations, or… I should keep on eye on that.”
If there’s one thing that will accelerate your learning faster than anything else, it’s this.
Need to also mention Open Mastery Online. People in the Mentorship program we’re going to build a statical process control system for software development.
Then you start recognizing the patterns, “aha! this is one of those situations, or… I should keep on eye on that.”
If there’s one thing that will accelerate your learning faster than anything else, it’s this.
Need to also mention Open Mastery Online. People in the Mentorship program we’re going to build a statical process control system for software development.
Then you start recognizing the patterns, “aha! this is one of those situations, or… I should keep on eye on that.”
If there’s one thing that will accelerate your learning faster than anything else, it’s this.
Need to also mention Open Mastery Online. People in the Mentorship program we’re going to build a statical process control system for software development.
Then you start recognizing the patterns, “aha! this is one of those situations, or… I should keep on eye on that.”
If there’s one thing that will accelerate your learning faster than anything else, it’s this.
Need to also mention Open Mastery Online. People in the Mentorship program we’re going to build a statical process control system for software development.
©2014 New Iron Group
Our brain works like a big prediction engine. Imagine your walking down the stairs, thinking about something else, everything feels as it should be.
At this point all your predictions are confirmed.
But then, you discover one of the steps isn’t where it’s supposed to be.
At that moment, everything in your body is paying attention. Am I going to fall? Where’s the railing? Do I need to brace myself.
This is what happens when your predictions are violated. A conflict is just a violated prediction.
There’s this decision point when we validate the code and ask ourselves, “does the behavior match our expectations?”
There’s this decision point when we validate the code and ask ourselves, “does the behavior match our expectations?”
When we try to make progress, learning gets in the way. Especially if we’re unfamiliar with the system. And with conflict loops we have to troubleshoot the problem, then rework our solution before we get back to a stable state.
When we try to make progress, learning gets in the way. Especially if we’re unfamiliar with the system. And with conflict loops we have to troubleshoot the problem, then rework our solution before we get back to a stable state.
Quick demo.
So I started keeping track of all my painful interaction with the code and visualizing it on a timeline like this.
The pain started [] when I ran into some unexpected behavior and ended [] when I had the problem resolved.
So that was 5 hours and 18 minutes of troubleshooting, I think everyone would agree that’s pretty painful.
When there’s problems evaluating alternatives, we see this red-blue-yellow tumble pattern of trial and error.
First, we discover our strategy won’t work -- that’s the red.
then we go back to the drawing board to figure out a plan B, that’s the blue,
Then we gotta do the rework -- that’s the yellow.
If I saw this pattern I would ask... [read]
There’s this decision point when we validate the code and ask ourselves, “does the behavior match our expectations?”
When we try to make progress, learning gets in the way. Especially if we’re unfamiliar with the system. And with conflict loops we have to troubleshoot the problem, then rework our solution before we get back to a stable state.
There’s this decision point when we validate the code and ask ourselves, “does the behavior match our expectations?”
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
Warning: This isn’t for the feignt of heart.
Warning: This isn’t for the feignt of heart.
There’s this decision point when we validate the code and ask ourselves, “does the behavior match our expectations?”
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
We have an instinct about what we ought to do:
Warping of experience. Imagining the world we want to live in, and believing it to be true.
Because I really want to solve this problem, like, there isn’t anything in the world, that I’m more passionate about, but I can’t do this alone. I need your help. Let’s do this together.
And we start working together as an engineering community, we really can change everything.
This is our [read] with companies and community groups around the world, that’s headquartered in Austin. We’re all learning together, and helping each other succeed.
The pain isn’t something inside the code, pain occurs during the process of interacting with the code. So I started optimizing for… and I did that, with the help of a data driven feedback loop.
If we don’t make time to deal with emerging risks and emerging risks, we will never get out of this cycle.
This happens all the time in software development. Imagine the idea you had conceptually mapped to an “it” becomes a “function for producing its.”