129
Janelle Klein openmastery.org @janellekz A Programmer’s Guide To HUMANS

A Programmer's Guide to Humans

Embed Size (px)

Citation preview

Page 1: A Programmer's Guide to Humans

Janelle Kleinopenmastery.org @janellekz

A Programmer’s Guide To

HUMANS

Page 2: A Programmer's Guide to Humans

SPCLooks okay.

Alert!Measurements

Tools

About 10 Years Ago…Statistical Process Control (SPC) in Semiconductor

Page 3: A Programmer's Guide to Humans

SPCLooks okay.

Alert!Measurements

Tools

We shipped to production…

Page 4: A Programmer's Guide to Humans

SPCLooks okay.

Shutdown!Measurements

Tools

Missing Config Change

We shipped to production…

Page 5: A Programmer's Guide to Humans

SPC

Measurements

Looks okay.

Alert!

Tools

We shipped to production…AGAIN

Page 6: A Programmer's Guide to Humans

SPCLooks okay.

Shutdown!Measurements

ToolsWe couldn’t reproduce the problem!

We shipped to production…AGAIN

Page 7: A Programmer's Guide to Humans

SPCLooks okay.

Shutdown!Measurements

Tools

Six months later…

Threading Bug

Page 8: A Programmer's Guide to Humans

SPC

Measurements

Looks okay.

Alert!

Tools

We shipped to production…

AGAIN (3x)

Page 9: A Programmer's Guide to Humans

SPCLooks okay.

Shutdown!Measurements

Tools

Memory Leak

We shipped to production…

AGAIN (3x)

Totally my fault.

Page 10: A Programmer's Guide to Humans

We had an AWESOME team!

We had a MOUNTAIN of automation!

We were DISCIPLINED with best practices!+

Project FAILURE

Page 11: A Programmer's Guide to Humans

+

We had a GREAT team!

We had a MOUNTAIN of automation!

We were DISCIPLINED with best practices!

How did we turn this around?

Page 12: A Programmer's Guide to Humans

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?”

Page 13: A Programmer's Guide to Humans

Technical Debt Mistakes

I thought the problem was Technical Debt

Page 14: A Programmer's Guide to Humans

SPCLooks okay.

Alert!Measurements

Tools

System ArchitectureStatistical Process Control (SPC)

UI code Charting

Code

Page 15: A Programmer's Guide to Humans

BeautifulLooks okay.

Alert!Measurements

Tools UGLY UGLY

System ArchitectureStatistical Process Control (SPC)

Page 16: A Programmer's Guide to Humans

Complex(So*ware(

PAIN

This is what I knew...

What made development feel painful?

Page 17: A Programmer's Guide to Humans

Unexpected Behavior

Problem Resolved

Tracking Painful Experience with the Code

Troubleshooting

Progress

5 hours and 18 minutes of troubleshooting...

PAINFUL

Page 18: A Programmer's Guide to Humans

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(

Page 19: A Programmer's Guide to Humans

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?

Page 20: A Programmer's Guide to Humans

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

Page 21: A Programmer's Guide to Humans

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.

Page 22: A Programmer's Guide to Humans

PAIN occurs during the process of understanding and extending the software

Complex(So*ware(

PAIN

Not the Code.

Optimize “Idea Flow”

Page 23: A Programmer's Guide to Humans

PAIN occurs during the process of understanding and extending the software

Complex(So*ware(

PAIN

Not the Code.

Optimize “Idea Flow”

Data-driven Improvement

Page 24: A Programmer's Guide to Humans

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.

Page 25: A Programmer's Guide to Humans

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.

Page 26: A Programmer's Guide to Humans

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?”

Page 27: A Programmer's Guide to Humans

We learned how to learn together

Culture

What changed on our team?

Page 28: A Programmer's Guide to Humans

The Fifth Discipline The Art & Practice of the Learning Organization

Peter Senge

The Most INSPIRING Book EVER…

Page 29: A Programmer's Guide to Humans

We learned how to learn together?

What if…

Page 30: A Programmer's Guide to Humans

We saw the world as one big design problem?

What if…

Page 31: A Programmer's Guide to Humans

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

Page 32: A Programmer's Guide to Humans

Predictably Irrational Dan Ariely

“What if I could explain humans like code?”Crazy Idea:

Page 33: A Programmer's Guide to Humans

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

Page 34: A Programmer's Guide to Humans

Output: Decisions

Feedback Loop

DB

Pain Signal

Input: Ideas

HUMAN = Decision-Making Engine

Awesome Signal

Goal: Minimize PAIN

Maximize AWESOME

Page 35: A Programmer's Guide to Humans

Recognition: How do ideas get inside our head?

Input: Ideas

Page 36: A Programmer's Guide to Humans

Metaphors We Live By George Lakoff and Mark Johnson

On Intelligence Jeff Hawkins

+

A Synthesis of the Research In…

Page 37: A Programmer's Guide to Humans

Observe Pattern

“Do I know this pattern?”

Think of a “Concept” as a Metaphorical Shape

Page 38: A Programmer's Guide to Humans

Observe Pattern

“Do I know this pattern?”

Think of a “Concept” as a Metaphorical Shape

Page 39: A Programmer's Guide to Humans

“I don’t see anything.”

No Shape = No Recognition

Think of a “Concept” as a Metaphorical Shape

Page 40: A Programmer's Guide to Humans

“Clojure”“What is Clojure?”

Let’s say a friend asks us…

Page 41: A Programmer's Guide to Humans

“What is Clojure?”

Let’s say a friend asks us…

Page 42: A Programmer's Guide to Humans

Recognition is a Bottom-Up Process

Summarize

Sensory signals

“Clojure”

Brain Layer

Brain Layer

Brain Layer

Page 43: A Programmer's Guide to Humans

Recognition FAILURE

Summarize

Sensory signals

Brain Layer

Brain Layer

Brain Layer

Eh?

Page 44: A Programmer's Guide to Humans

“What is Clojure?”

Lisp

Functional Language

Groovy

JVM Language

Object-Oriented Language

New Shapes are Defined Relative to Old Shapes

Page 45: A Programmer's Guide to Humans

“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

Page 46: A Programmer's Guide to Humans

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

Page 47: A Programmer's Guide to Humans

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

Page 48: A Programmer's Guide to Humans

Meaning: How are shapes combined to create meaning?

Input: Ideas

DB

Page 49: A Programmer's Guide to Humans

Thing Patterns

Process Patterns

Relationship Patterns

Three Different Base Classes for “Concepts"

Page 50: A Programmer's Guide to Humans

Base Classes for Thing Patterns

Physical Object I

Page 51: A Programmer's Guide to Humans

Base Classes for Relationship Patterns

Directions

= Better

= Worse

Containers

In Group

Out Group

Page 52: A Programmer's Guide to Humans

Human Identity

Put Things and Containers Together…

Object Identity

Page 53: A Programmer's Guide to Humans

Empathy. Short-circuit Empathy.

Page 54: A Programmer's Guide to Humans

Direction Metaphors Give Us Rank

Rank Objects Rank CategoriesRank People

Page 55: A Programmer's Guide to Humans
Page 56: A Programmer's Guide to Humans

Categorizing and ranking things is how our brains make sense of the world

Page 57: A Programmer's Guide to Humans

Category Types affect how we compare

In Group Look for similarities

Out Group Look for differences

Page 58: A Programmer's Guide to Humans

Pre-wired to Model the In-Group

You extends from I

“I want to be just like you!”

Similarity Seeking

Page 59: A Programmer's Guide to Humans

My Team

We write unit tests.

We pair program.

You

Do you do these things?

YES

Pre-wired to Model the In-Group

Page 60: A Programmer's Guide to Humans

Pre-wired to Objectify the Out-Group

You extends from Object

“You’re nothing like me.”

Difference Seeking

Page 61: A Programmer's Guide to Humans

Developers

Testers

Pre-wired to Objectify the Out-Group

Testers extend from Object“Testers are a tool for us to use.”

Page 62: A Programmer's Guide to Humans

Smart People

Idiots

Pre-wired to Objectify the Out-Group

Idiots extend from Object“Idiots are a tool for us to use.”

Page 63: A Programmer's Guide to Humans

When I decide someone is “not like me”

Human Short-circuit empathy

This is why we act like assholes.

Page 64: A Programmer's Guide to Humans

Brain Hack #2

How do you stop being an asshole?

Rewire your brain for empathy.

Page 65: A Programmer's Guide to Humans

1. Stop and think.

Rewire your brain:

How to Stop Being an Asshole:

Similarity Seeking

Disgust

or ?

2. Choose ( )Pity

Page 66: A Programmer's Guide to Humans

Pre-wired to Extend Identity to Offspring

This is me. This is my baby.

“My baby is a part of me”

MyBaby extends I

Page 67: A Programmer's Guide to Humans

Pre-wired to Extend Identity to “SoulCrafts”

This is me. This is my code. PAIN

“Your code sucks.”

Page 68: A Programmer's Guide to Humans

Brain Hack #3

How do you stop feeling defensive?

Rewire your brain to disable empathy.

Page 69: A Programmer's Guide to Humans

1. Stop and think.

Rewire your brain:

or ?

How to Stop Feeling Defensive:

Disables Empathy

PAIN

“Your code sucks.”

2. Choose ( )

Page 70: A Programmer's Guide to Humans

Output: Decisions

DB

Pain Signal

Input: Ideas

Awesome Signal

Gut Feel: Where do “gut feel” decisions come from?

Page 71: A Programmer's Guide to Humans

Feeling MachineOrbitofrontal Cortex + Lymbic System

(Summarized Body Response)

AWESOMEPAIN

Disgust

Anger

Desire

Beauty

LoveFear

Page 72: A Programmer's Guide to Humans

Think “Fruit” Simulate

Body Experience

Do I want “Fruit” or a “Salad”?

Not so much…

Page 73: A Programmer's Guide to Humans

Think “Salad” Simulate

Body Experience

Do I want “Fruit” or a “Salad”?

Fairly awesome…

Page 74: A Programmer's Guide to Humans

Think about “Sally” Simulate

Body Experience

Do I Like “Sally”?

DesireBeauty

Page 75: A Programmer's Guide to Humans

Think about “George” Simulate

Body Experience

Do I Like “George”?

DisgustAnger

Page 76: A Programmer's Guide to Humans

Breakpoint

More Complex Decisions

Skip the Tests?

DELETE IT ALL!Write a Test?

Where do these feelings come from?

Page 77: A Programmer's Guide to Humans

Base Class for Process Pattern

JourneyBeginning End

Journey: The Rollercoaster of Human Experience

Page 78: A Programmer's Guide to Humans

Journey

Constraints

What were the challenges on the journey?

Frustration

Page 79: A Programmer's Guide to Humans

Friction

Journey

What were the challenges on the journey?

PAIN

Page 80: A Programmer's Guide to Humans

Journey Strategy

What were the challenges on the journey?

Victory!

Page 81: A Programmer's Guide to Humans

This SUCKS!

Journeys End in PAIN or AWESOME

Yay! AWESOME!

AWESOMEPAIN

Page 82: A Programmer's Guide to Humans

Situation Strategy Consequence

I’m on a Journey

“Journeys” are constructed of chainable parts

Page 83: A Programmer's Guide to Humans

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

Page 84: A Programmer's Guide to Humans

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

Page 85: A Programmer's Guide to Humans

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?

Page 86: A Programmer's Guide to Humans

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.

Page 87: A Programmer's Guide to Humans

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

Page 88: A Programmer's Guide to Humans

Output: Decisions

Feedback Loop

DB

Pain Signal

Input: Ideas

Awesome Signal

Brain in Motion: Prediction Machine

Page 89: A Programmer's Guide to Humans

Rewire Your Brain John B. Arden, Ph. D.

A Synthesis of the Research In…

Leadership and Self-Deception The Arbringer Institute

+

Page 90: A Programmer's Guide to Humans

Recent Past (Patterns Recognized)

Predict: What’s Next?

Our Brain is Constantly Making Predictions

We only update our brain code when predictions FAIL

Page 91: A Programmer's Guide to Humans

Predictions Confirmed

Imagine you’re walking down the stairs…

predictions.next()

Page 92: A Programmer's Guide to Humans

WTF?! (RuntimeException)

Imagine you’re walking down the stairs…

Predictions Violated

Consciousness + Repair Predictionsi.e. construct story

to make sense

Page 93: A Programmer's Guide to Humans

Social Rejection = Violated Prediction

No

Identity predicts inclusion…

Consciousness

PAIN

WTF?!

+ Repair Identity

Page 94: A Programmer's Guide to Humans

“Me”

PAIN

How do we Repair Identity?

No.

Page 95: A Programmer's Guide to Humans

“Me”

PAIN

How do we Repair Identity?

No.

PAIN > Disgust“Me”

Self-DeceptionWTF?!

Page 96: A Programmer's Guide to Humans

“Me”

PAIN

How do we Repair Identity?

No.

PAIN > Disgust“Me”

Self-Deception

Self-Deception is a coping strategy for resolving identity conflicts

Page 97: A Programmer's Guide to Humans

Personal Truth

Authentic Path (the “sense”)

The Downward Spiral of the Self

Identity

Self Deception

lies

Page 98: A Programmer's Guide to Humans

Personal Truth

Authentic Path (the “sense”)

Identity

Self Deception

lies

The more we deviate

ConsciousnessRationalize

The Downward Spiral of the Self

Page 99: A Programmer's Guide to Humans

Personal Truth

Identity

Self Deception

Authentic Path (the “sense”)

lies

The more we deviate

ConsciousnessRationalize

“Emotional Baggage”

The Downward Spiral of the Self

Page 100: A Programmer's Guide to Humans

Brain Hack #5

How do we escape the downward spiral?

Identity 2.0

Page 101: A Programmer's Guide to Humans

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

Page 102: A Programmer's Guide to Humans

Dreams

DB

Consciousness

Past Lessons

“I Choose” in the moment

Identity 2.0

Momentum on the journey results in joy in the moment

Page 103: A Programmer's Guide to Humans

=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

Page 104: A Programmer's Guide to Humans

My Team…

What choices did we believe in?

Page 105: A Programmer's Guide to Humans

Courage.

Leadership.

Empathy.

Authenticity.

Respect.

The C.L.E.A.R. Mindset

Identity 2.0 is a principle of continuous choice.

Page 106: A Programmer's Guide to Humans

Personal Truth

Identity

Self Deception

lies

Consciousness

CHOOSE

WTF?!

The C.L.E.A.R. Mindset

What is true?

Page 107: A Programmer's Guide to Humans

Personal Truth

Authentic Path (the “sense”)

Identity

Self Deception

Consciousness

CHOOSE

WTF?!

The C.L.E.A.R. Mindset

What is true?

Page 108: A Programmer's Guide to Humans

Brain Hack #6

How do we build a C.L.E.A.R. culture?

Choose the path we want others to follow.

Page 109: A Programmer's Guide to Humans

Culture is an Emergent Property

The only thing we actually control:

Personal Mindset

There is only “I” who chooses.

Page 110: A Programmer's Guide to Humans

Remember: Pre-wired to Model the In-Group

When you step up and lead, the people on your team will model your choices.

Page 111: A Programmer's Guide to Humans

C.L.E.A.R. Learning Culture

We put the PAIN on center stage, then learn our way to AWESOME by working together

Page 112: A Programmer's Guide to Humans

Poverty

War

Corrupt Government

Broken Education

Planetary Destruction

The world around us…

Page 113: A Programmer's Guide to Humans

If we zoom out…

We all want the world to be different.

But we all feel helpless.

Why are we helpless?

Page 114: A Programmer's Guide to Humans

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.

Page 115: A Programmer's Guide to Humans

The Fifth Discipline The Art & Practice of the Learning Organization

Peter Senge

The Most INSPIRING Book EVER…

Page 116: A Programmer's Guide to Humans

The Most INSPIRING Book EVER…

What I See: Hope for Humanity

Page 117: A Programmer's Guide to Humans

A path to get us here…

What I See: Hope for Humanity

Page 118: A Programmer's Guide to Humans

Strategy to make mastery-level education FREE to EVERY HUMAN in the world

Challenge 1: $$$$$$$$$$$$$$$$$$$$$$$$

Challenge 2: Unprecedented levels of cooperation

Page 119: A Programmer's Guide to Humans

I believe the path starts with us…Learning how to learn together

as a software community

Page 120: A Programmer's Guide to Humans

We start with visibility.

We move toward awesome.

Page 121: A Programmer's Guide to Humans

We start with our team.

We move toward our industry.

Page 122: A Programmer's Guide to Humans

1. Measure Your PAINAutomated Visibility Tools

Automated FAQ

“Idea Flow Maps”

January 1st, 2017 MVP for Individuals (OSS)

June 15th, 2017 MVP for Teams ($)

Page 123: A Programmer's Guide to Humans

Dreams

DB

Past Lessons

2. Key Paradigm Shift: Machine -> Organism

“Business Creature”

Page 124: A Programmer's Guide to Humans

DB

Past Lessons

Innovation

Pain Signal

Awesome Signal

Dreams

Dec 1st, 2018 BusinessCreatureOS ($$$)

2. Key Paradigm Shift: Machine -> Organism

Page 125: A Programmer's Guide to Humans

DreamsDreams

3. MMORPG: The Game of Life (Gamified Education)

C.L.E.A.R. C.L.E.A.R.

Page 126: A Programmer's Guide to Humans

Tony’s Flair:

Monthly Awards for guild achievements!

Page 127: A Programmer's Guide to Humans

Tony’s Flair:

Monthly Awards for guild achievements!

Nov 8th, 2020 MVP for Free Education

Page 128: A Programmer's Guide to Humans

We design the game.

We make up the rules.

We invite the world to play.

Page 129: A Programmer's Guide to Humans

Janelle Kleinopenmastery.org @janellekz

How to Join:

Janelle KleinFounder of Open Mastery

[email protected]

1. Email Subject: “Tools Pilot”

2. Include IDE/Editor, Your OS

FREE!