a programmer's guide to humans

Post on 11-Jan-2017

356 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Janelle Kleinopenmastery.org @janellekz

A Programmer’s Guide To

HUMANS

SPCLooks okay.

Alert!Measurements

Tools

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

SPCLooks okay.

Alert!Measurements

Tools

We shipped to production…

SPCLooks okay.

Shutdown!Measurements

Tools

Missing Config Change

We shipped to production…

SPC

Measurements

Looks okay.

Alert!

Tools

We shipped to production…AGAIN

SPCLooks okay.

Shutdown!Measurements

ToolsWe couldn’t reproduce the problem!

We shipped to production…AGAIN

SPCLooks okay.

Shutdown!Measurements

Tools

Six months later…

Threading Bug

SPC

Measurements

Looks okay.

Alert!

Tools

We shipped to production…

AGAIN (3x)

SPCLooks okay.

Shutdown!Measurements

Tools

Memory Leak

We shipped to production…

AGAIN (3x)

Totally my fault.

We had an AWESOME team!

We had a MOUNTAIN of automation!

We were DISCIPLINED with best practices!+

Project FAILURE

+

We had a GREAT team!

We had a MOUNTAIN of automation!

We were DISCIPLINED with best practices!

How did we turn this around?

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

Technical Debt Mistakes

I thought the problem was Technical Debt

SPCLooks okay.

Alert!Measurements

Tools

System ArchitectureStatistical Process Control (SPC)

UI code Charting

Code

BeautifulLooks okay.

Alert!Measurements

Tools UGLY UGLY

System ArchitectureStatistical Process Control (SPC)

Complex(So*ware(

PAIN

This is what I knew...

What made development feel painful?

Unexpected Behavior

Problem Resolved

Tracking Painful Experience with the Code

Troubleshooting

Progress

5 hours and 18 minutes of troubleshooting...

PAINFUL

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(

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?

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

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.

PAIN occurs during the process of understanding and extending the software

Complex(So*ware(

PAIN

Not the Code.

Optimize “Idea Flow”

PAIN occurs during the process of understanding and extending the software

Complex(So*ware(

PAIN

Not the Code.

Optimize “Idea Flow”

Data-driven Improvement

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.

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.

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

We learned how to learn together

Culture

What changed on our team?

The Fifth Discipline The Art & Practice of the Learning Organization

Peter Senge

The Most INSPIRING Book EVER…

We learned how to learn together?

What if…

We saw the world as one big design problem?

What if…

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

Predictably Irrational Dan Ariely

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

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

Output: Decisions

Feedback Loop

DB

Pain Signal

Input: Ideas

HUMAN = Decision-Making Engine

Awesome Signal

Goal: Minimize PAIN

Maximize AWESOME

Recognition: How do ideas get inside our head?

Input: Ideas

Metaphors We Live By George Lakoff and Mark Johnson

On Intelligence Jeff Hawkins

+

A Synthesis of the Research In…

Observe Pattern

“Do I know this pattern?”

Think of a “Concept” as a Metaphorical Shape

Observe Pattern

“Do I know this pattern?”

Think of a “Concept” as a Metaphorical Shape

“I don’t see anything.”

No Shape = No Recognition

Think of a “Concept” as a Metaphorical Shape

“Clojure”“What is Clojure?”

Let’s say a friend asks us…

“What is Clojure?”

Let’s say a friend asks us…

Recognition is a Bottom-Up Process

Summarize

Sensory signals

“Clojure”

Brain Layer

Brain Layer

Brain Layer

Recognition FAILURE

Summarize

Sensory signals

Brain Layer

Brain Layer

Brain Layer

Eh?

“What is Clojure?”

Lisp

Functional Language

Groovy

JVM Language

Object-Oriented Language

New Shapes are Defined Relative to Old Shapes

“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

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

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

Meaning: How are shapes combined to create meaning?

Input: Ideas

DB

Thing Patterns

Process Patterns

Relationship Patterns

Three Different Base Classes for “Concepts"

Base Classes for Thing Patterns

Physical Object I

Base Classes for Relationship Patterns

Directions

= Better

= Worse

Containers

In Group

Out Group

Human Identity

Put Things and Containers Together…

Object Identity

Empathy. Short-circuit Empathy.

Direction Metaphors Give Us Rank

Rank Objects Rank CategoriesRank People

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

Category Types affect how we compare

In Group Look for similarities

Out Group Look for differences

Pre-wired to Model the In-Group

You extends from I

“I want to be just like you!”

Similarity Seeking

My Team

We write unit tests.

We pair program.

You

Do you do these things?

YES

Pre-wired to Model the In-Group

Pre-wired to Objectify the Out-Group

You extends from Object

“You’re nothing like me.”

Difference Seeking

Developers

Testers

Pre-wired to Objectify the Out-Group

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

Smart People

Idiots

Pre-wired to Objectify the Out-Group

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

When I decide someone is “not like me”

Human Short-circuit empathy

This is why we act like assholes.

Brain Hack #2

How do you stop being an asshole?

Rewire your brain for empathy.

1. Stop and think.

Rewire your brain:

How to Stop Being an Asshole:

Similarity Seeking

Disgust

or ?

2. Choose ( )Pity

Pre-wired to Extend Identity to Offspring

This is me. This is my baby.

“My baby is a part of me”

MyBaby extends I

Pre-wired to Extend Identity to “SoulCrafts”

This is me. This is my code. PAIN

“Your code sucks.”

Brain Hack #3

How do you stop feeling defensive?

Rewire your brain to disable empathy.

1. Stop and think.

Rewire your brain:

or ?

How to Stop Feeling Defensive:

Disables Empathy

PAIN

“Your code sucks.”

2. Choose ( )

Output: Decisions

DB

Pain Signal

Input: Ideas

Awesome Signal

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

Feeling MachineOrbitofrontal Cortex + Lymbic System

(Summarized Body Response)

AWESOMEPAIN

Disgust

Anger

Desire

Beauty

LoveFear

Think “Fruit” Simulate

Body Experience

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

Not so much…

Think “Salad” Simulate

Body Experience

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

Fairly awesome…

Think about “Sally” Simulate

Body Experience

Do I Like “Sally”?

DesireBeauty

Think about “George” Simulate

Body Experience

Do I Like “George”?

DisgustAnger

Breakpoint

More Complex Decisions

Skip the Tests?

DELETE IT ALL!Write a Test?

Where do these feelings come from?

Base Class for Process Pattern

JourneyBeginning End

Journey: The Rollercoaster of Human Experience

Journey

Constraints

What were the challenges on the journey?

Frustration

Friction

Journey

What were the challenges on the journey?

PAIN

Journey Strategy

What were the challenges on the journey?

Victory!

This SUCKS!

Journeys End in PAIN or AWESOME

Yay! AWESOME!

AWESOMEPAIN

Situation Strategy Consequence

I’m on a Journey

“Journeys” are constructed of chainable parts

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

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

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?

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.

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

Output: Decisions

Feedback Loop

DB

Pain Signal

Input: Ideas

Awesome Signal

Brain in Motion: Prediction Machine

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

A Synthesis of the Research In…

Leadership and Self-Deception The Arbringer Institute

+

Recent Past (Patterns Recognized)

Predict: What’s Next?

Our Brain is Constantly Making Predictions

We only update our brain code when predictions FAIL

Predictions Confirmed

Imagine you’re walking down the stairs…

predictions.next()

WTF?! (RuntimeException)

Imagine you’re walking down the stairs…

Predictions Violated

Consciousness + Repair Predictionsi.e. construct story

to make sense

Social Rejection = Violated Prediction

No

Identity predicts inclusion…

Consciousness

PAIN

WTF?!

+ Repair Identity

“Me”

PAIN

How do we Repair Identity?

No.

“Me”

PAIN

How do we Repair Identity?

No.

PAIN > Disgust“Me”

Self-DeceptionWTF?!

“Me”

PAIN

How do we Repair Identity?

No.

PAIN > Disgust“Me”

Self-Deception

Self-Deception is a coping strategy for resolving identity conflicts

Personal Truth

Authentic Path (the “sense”)

The Downward Spiral of the Self

Identity

Self Deception

lies

Personal Truth

Authentic Path (the “sense”)

Identity

Self Deception

lies

The more we deviate

ConsciousnessRationalize

The Downward Spiral of the Self

Personal Truth

Identity

Self Deception

Authentic Path (the “sense”)

lies

The more we deviate

ConsciousnessRationalize

“Emotional Baggage”

The Downward Spiral of the Self

Brain Hack #5

How do we escape the downward spiral?

Identity 2.0

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

Dreams

DB

Consciousness

Past Lessons

“I Choose” in the moment

Identity 2.0

Momentum on the journey results in joy in the moment

=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

My Team…

What choices did we believe in?

Courage.

Leadership.

Empathy.

Authenticity.

Respect.

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

Identity 2.0 is a principle of continuous choice.

Personal Truth

Identity

Self Deception

lies

Consciousness

CHOOSE

WTF?!

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

What is true?

Personal Truth

Authentic Path (the “sense”)

Identity

Self Deception

Consciousness

CHOOSE

WTF?!

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

What is true?

Brain Hack #6

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

Choose the path we want others to follow.

Culture is an Emergent Property

The only thing we actually control:

Personal Mindset

There is only “I” who chooses.

Remember: Pre-wired to Model the In-Group

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

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

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

Poverty

War

Corrupt Government

Broken Education

Planetary Destruction

The world around us…

If we zoom out…

We all want the world to be different.

But we all feel helpless.

Why are we helpless?

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.

The Fifth Discipline The Art & Practice of the Learning Organization

Peter Senge

The Most INSPIRING Book EVER…

The Most INSPIRING Book EVER…

What I See: Hope for Humanity

A path to get us here…

What I See: Hope for Humanity

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

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

Challenge 2: Unprecedented levels of cooperation

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

as a software community

We start with visibility.

We move toward awesome.

We start with our team.

We move toward our industry.

1. Measure Your PAINAutomated Visibility Tools

Automated FAQ

“Idea Flow Maps”

January 1st, 2017 MVP for Individuals (OSS)

June 15th, 2017 MVP for Teams ($)

Dreams

DB

Past Lessons

2. Key Paradigm Shift: Machine -> Organism

“Business Creature”

DB

Past Lessons

Innovation

Pain Signal

Awesome Signal

Dreams

Dec 1st, 2018 BusinessCreatureOS ($$$)

2. Key Paradigm Shift: Machine -> Organism

DreamsDreams

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

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

Tony’s Flair:

Monthly Awards for guild achievements!

Tony’s Flair:

Monthly Awards for guild achievements!

Nov 8th, 2020 MVP for Free Education

We design the game.

We make up the rules.

We invite the world to play.

Janelle Kleinopenmastery.org @janellekz

How to Join:

Janelle KleinFounder of Open Mastery

janelle@openmastery.org

1. Email Subject: “Tools Pilot”

2. Include IDE/Editor, Your OS

FREE!

top related