learn your way to awesome

120
Janelle Klein openmastery.org @janellekz Point A Point AWESOME. Learn Your Way to AWESOME.

Upload: janelle-klein

Post on 15-Apr-2017

309 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Learn Your Way to AWESOME

Janelle Kleinopenmastery.org @janellekz

Point A Point AWESOME.

Learn Your Way to AWESOME.

Page 2: Learn Your Way to AWESOME

Focus of this Talk:

Using Science to Fuel Software Mastery“Data-Driven Software Mastery”

Page 3: Learn Your Way to AWESOME

Overview

How can we measure development pain?

How do we create a data-driven feedback loop?

What does this look like in practice?

Page 4: Learn Your Way to AWESOME

Overview

How can we measure development pain?

How do we create a data-driven feedback loop?

What does this look like in practice?

Page 5: Learn Your Way to AWESOME

Great TeamDisciplined with Best PracticesConstantly Working on Improvements+

Project FAILURE

About 8 years ago…

Page 6: Learn Your Way to AWESOME

Technical Debt Mistakes

I thought the problem wasTechnical Debt

Page 7: Learn Your Way to AWESOME

?Most of our mistakes were in the

most well-written parts of the code.

Mistakes

Page 8: Learn Your Way to AWESOME

We made significantly more mistakesin code that we didn’t write ourselves.

LowerFamiliarity

MoreMistakes=

There had to be more to the story...

Page 9: Learn Your Way to AWESOME

PAIN

This is what I knew...

What made development feel painful?

Page 10: Learn Your Way to AWESOME

UnexpectedBehavior

ProblemResolved

Tracking Painful Interaction with the Code (Friction)

Troubleshooting

Progress

5 hours and 18 minutes of troubleshooting...

PAINFUL

Page 11: Learn Your Way to AWESOME

What Causes Unexpected

Behavior (likeliness)?

What Makes Troubleshooting

Time-Consuming (impact)?Semantic MistakesStale Memory MistakesAssociation MistakesBad Input AssumptionTedious Change MistakesCopy-Edit MistakesTransposition MistakesFailed Refactor MistakesFalse Alarm

Non-Deterministic BehaviorAmbiguous CluesLots of Code ChangesNoisy OutputCryptic OutputLong Execution TimeEnvironment CleanupTest Data CreationUsing Debugger

Most of the pain was caused by human factors.

What causes PAIN?

Page 12: Learn Your Way to AWESOME

What Causes Unexpected

Behavior (likeliness)?

What Makes Troubleshooting

Time-Consuming (impact)?Non-Deterministic BehaviorAmbiguous CluesLots of Code ChangesNoisy OutputCryptic OutputLong Execution TimeEnvironment CleanupTest Data CreationUsing Debugger

What causes PAIN?

Most of the pain was caused by human factors.

Semantic MistakesStale Memory MistakesAssociation MistakesBad Input AssumptionTedious Change MistakesCopy-Edit MistakesTransposition MistakesFailed Refactor MistakesFalse Alarm

Page 13: Learn Your Way to AWESOME

What Causes Unexpected

Behavior (likeliness)?

What Makes Troubleshooting

Time-Consuming (impact)?Non-Deterministic BehaviorAmbiguous CluesLots of Code ChangesNoisy OutputCryptic OutputLong Execution TimeEnvironment CleanupTest Data CreationUsing Debugger

What causes PAIN?

Semantic MistakesStale Memory MistakesAssociation MistakesBad Input AssumptionTedious Change MistakesCopy-Edit MistakesTransposition MistakesFailed Refactor MistakesFalse Alarm

Most of the pain was caused by human factors.

Page 14: Learn Your Way to AWESOME

What Causes Unexpected

Behavior (likeliness)?

What Makes Troubleshooting

Time-Consuming (impact)?Non-Deterministic BehaviorAmbiguous CluesLots of Code ChangesNoisy OutputCryptic OutputLong Execution TimeEnvironment CleanupTest Data CreationUsing Debugger

What causes PAIN?

PAIN is a consequence of how we interact with the code.

Semantic MistakesStale Memory MistakesAssociation MistakesBad Input AssumptionTedious Change MistakesCopy-Edit MistakesTransposition MistakesFailed Refactor MistakesFalse Alarm

Page 15: Learn Your Way to AWESOME

PAIN occurs during the process of understanding and extending the software

PAIN

Not the Code.

Optimize “Idea Flow”

Page 16: Learn Your Way to AWESOME

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 17: Learn Your Way to AWESOME

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 18: Learn Your Way to AWESOME

The hard part isn’t solving the problemsit’s identifying the right problems to solve.

“What are the specific problemsthat are causing the team’s pain?”

Page 19: Learn Your Way to AWESOME

PAIN occurs during the process of understanding and extending the software

PAIN

Not the Code.

Optimize “Idea Flow”

Page 20: Learn Your Way to AWESOME

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.

Page 21: Learn Your Way to AWESOME

Write a little code. Work out the kinks.

The Rhythm of “Idea Flow”

Does the behavior match our expectations?

Page 22: Learn Your Way to AWESOME

The Rhythm of “Idea Flow”

Write a little code. Work out the kinks.

Adjustment LoopProgress Loop

Page 23: Learn Your Way to AWESOME

“Friction” in Idea Flow

Write a little code. Work out the kinks.

Adjustment LoopProgress Loop

Page 24: Learn Your Way to AWESOME

Idea Flow Mapping Tools

(Open Source, Supported GA ~August 2016)github.com/ideaflow/tools

Page 25: Learn Your Way to AWESOME

“Idea Flow Map”

“Friction”

Page 26: Learn Your Way to AWESOME

“What caused the painin this case?”

Categorize the Problems with #HashTags

#ReportingEngine

#Hibernate

#MergeHell

Page 27: Learn Your Way to AWESOME

1. Problem A

2. Problem B

3. Problem C

Add up the Pain by Category

What’s the biggest problem to solve?

Page 28: Learn Your Way to AWESOME

Overview

How can we measure development pain?

How do we create a data-driven feedback loop?

What does continuous improvement look like?

What should we be trying to optimize for?

Page 29: Learn Your Way to AWESOME

The Lean StartupEric Reis

Pioneers in the Art of “Everyday Science”

Page 30: Learn Your Way to AWESOME

“The Art of the Scientist” Workshop, Ash Maurya

Ash: “What’s the most important thing that scientists do?”

“Run Experiments!”“Analyze Data!”

Getting Involved with Lean Startup

Page 31: Learn Your Way to AWESOME

“The Art of the Scientist” Workshop, Ash Maurya

NO!

??

?

?

?

??

Getting Involved with Lean Startup

Page 32: Learn Your Way to AWESOME

“The Art of the Scientist” Workshop, Ash Maurya

Ash: “The most important things scientists do is build models.”

Getting Involved with Lean Startup

Page 33: Learn Your Way to AWESOME

Ceiling of Achievement, Ash Maurya

Lots of learning, but not learning the “right things.”

Page 34: Learn Your Way to AWESOME

Floor of Improvement?

Lots of improving, but not improving the “right things.”

Page 35: Learn Your Way to AWESOME

Modeling(Inductive)

Experimentation(Deductive)

Empirical Data

We can’t ignorethis part.

The Scientific Method

Page 36: Learn Your Way to AWESOME

Experimentation = Deductive Reasoning

Page 37: Learn Your Way to AWESOME

Modeling = Inductive Reasoning

Page 38: Learn Your Way to AWESOME

Modeling(Inductive)

Experimentation(Deductive)

Empirical Data

Creating an explicit model makesour beliefs testable and our discoveries additive.

Science is a Feedback Loop

We can’t ignorethis part.

Page 39: Learn Your Way to AWESOME

“The Customer Factory”, Ash Maurya

Optimize the Rate of Happy Customer Flow

Page 40: Learn Your Way to AWESOME

Unaware Visitors

Users

RetentionUser Repeats Experience

Currency(not necessarily money)

Customers

Referrals

Customer Value > Customer Cost > Your Costs

Amusement Park

Interested Prospects

Page 41: Learn Your Way to AWESOME

“The Art of the Scientist” Lean Startup Workshop, Ash Maurya

Ash: “The goal isn’t learning, the goal is traction.”

Page 42: Learn Your Way to AWESOME

We can measure flow throughthe Customer Factory.

How do we know if we’re getting traction?

Page 43: Learn Your Way to AWESOME

The GoalEliyahu Goldratt

Page 44: Learn Your Way to AWESOME

Focus onLimiting

Constraint

Optimize the Rate of Flow in a Supply Chain

Page 45: Learn Your Way to AWESOME

“The Customer Factory”, Ash Maurya

Optimize the Rate of Happy Customer Flow

Identify the Limiting Constraint

Page 46: Learn Your Way to AWESOME

The Three Steps of Science

1. Measure the “What”2. Explain the “Why”3. Experiment to Learn “How”

Page 47: Learn Your Way to AWESOME

Lean Startup: Science-Driven Refactoring

Target: Optimize Rate of Factory Flow

Pain Signal: “Friction” in Flow

Page 48: Learn Your Way to AWESOME

This is “Out of Control”

Lower Variability = Better Control

Process Control in Lean Manufacturing

Quality Target

Upper Control Limit

Lower Control Limit

Page 49: Learn Your Way to AWESOME

Symptom

Process Control in Lean Manufacturing

Symptom

Symptom

Cause

Cause

Fix

Fix

Fix

FixCause

Cause

Symptom

Page 50: Learn Your Way to AWESOME

Symptom

Symptom

Symptom

Cause

Cause

Fix

Fix

Fix

FixCause

Cause

Symptom

What Why How

Process Control in Lean Manufacturing

Page 51: Learn Your Way to AWESOME

Average Friction per Customer

This is “Traction”

Optimize for Customer Happiness

HighFriction

MinFriction

“No”Threshold

CustomerHappiness

Categorize the “No” Type

Page 52: Learn Your Way to AWESOME

How do we use science to create a feedback loop in

software development?

Page 53: Learn Your Way to AWESOME

Problems Look Avoidable in Hindsight

z

14:230:00

Big haystack of changes will make troubleshooting difficult

“That was a dumb thing to do,I’ll avoid that next time…

Page 54: Learn Your Way to AWESOME

Imagine your brain is adecision-making engine

written in code.

Breakpoint

Human Brain = Decision-Making Machine

Page 55: Learn Your Way to AWESOME

The ChallengeWe tend to make auto-pilot decisions and do what’s familiar

How do we modify decision habits?

Page 56: Learn Your Way to AWESOME

BreakpointStop and Think!

Turn Auto-Pilot Decisions into Conscious Decisions

The Awareness Challenge:

We have to recognize the situationand predict the pain

in order to modify the decision.

Now we can modify the decision code!

Page 57: Learn Your Way to AWESOME

Improve Quality of Decisions

Data-Driven Software Mastery

Page 58: Learn Your Way to AWESOME

Target - The direction of “better”

Data-Driven Software Mastery

Page 59: Learn Your Way to AWESOME

Input - The constraints that limit our short-term choices…

Data-Driven Software Mastery

Page 60: Learn Your Way to AWESOME

Output - The pain signal we’re trying to improve

Data-Driven Software Mastery

Page 61: Learn Your Way to AWESOME

Focus on the biggest pain…

Data-Driven Software Mastery

Page 62: Learn Your Way to AWESOME

1. Visibility - Identify the specific patterns

1.Visibility

Data-Driven Software Mastery

Page 63: Learn Your Way to AWESOME

2. Clarity - Understand cause and effect

2.Clarity

Data-Driven Software Mastery

Page 64: Learn Your Way to AWESOME

3.Awareness

3. Awareness - Stop and think to adjust habits

Data-Driven Software Mastery

Page 65: Learn Your Way to AWESOME

4. Run Experiments to Learn What Works

Data-Driven Software Mastery

Page 66: Learn Your Way to AWESOME

Average Pain per Incident

This is Traction

Target Flow

Control Limit

Categorize the Pain Type

“Pain Control” in Software Development

Page 67: Learn Your Way to AWESOME

Symptom

Symptom

Symptom

Cause

Cause

Fix

Fix

Fix

FixCause

Cause

Symptom

What Why How

Refactor BrainPain Type

Page 68: Learn Your Way to AWESOME

BreakpointStop and Think!

We have to recognize the situationand predict the pain

in order to modify the decision.

The Awareness Challenge:

What —> Why —> How

Page 69: Learn Your Way to AWESOME

George LakoffMetaphors We Live By

Jeff HawkinsOn Intelligence

+

The Foundational Theory

Theory of Understanding Theory of Prediction

Page 70: Learn Your Way to AWESOME

What —> Why

Page 71: Learn Your Way to AWESOME

Observe Pattern

“Do I know this pattern?”

Metaphors are patterns of conceptual “Shapes”

Page 72: Learn Your Way to AWESOME

“What is Clojure?”

Lisp

property: Functional Language

Groovy

property: JVM Language

property: Object-Oriented Language

Clojure!

property: JVM Language

property: Functional Language

How Our Brain Creates a New Shape Recipe

Page 73: Learn Your Way to AWESOME

Three Different Types of Metaphors

Object Patterns(Thing)

Context/Relationship Patterns(Space)

Process Patterns (Time)

Page 74: Learn Your Way to AWESOME

Technical Debt

Debt is a “Thing”

Page 75: Learn Your Way to AWESOME

“This looks likea tech debt thing.”

1. Categorize patterns by concept type

Page 76: Learn Your Way to AWESOME

“This looks likea painful tech debt

thing.”

2. Categorize variations by intensity.

Pain level = 8

Page 77: Learn Your Way to AWESOME

= Little Debt

= Medium Debt

= Big Debt

Beliefs About Developer Pain

Page 78: Learn Your Way to AWESOME

PAIN occurs during the process of understanding and extending the software

PAIN

Pain occurs over TIME.

Page 79: Learn Your Way to AWESOME

What do you think happens when we make this transition?

Process Patterns (Time)

Object Patterns(Thing)

Page 80: Learn Your Way to AWESOME

What Causes Unexpected

Behavior (likeliness)?

What Makes Troubleshooting

Time-Consuming (impact)?

Take a Closer Look at the Patterns

Familiarity MistakesStale Memory MistakesSemantic MistakesBad Input AssumptionTedious Change MistakesCopy-Edit MistakesTransposition MistakesFailed Refactor MistakesFalse Alarm

Non-Deterministic BehaviorAmbiguous CluesLots of Code ChangesNoisy OutputCryptic OutputLong Execution TimeEnvironment CleanupTest Data CreationUsing Debugger

Most of the pain was caused by human factors.

Page 81: Learn Your Way to AWESOME

JourneyBeginning End

Think about the Developer’s Experience as a

Problem-Solving Journey

Page 82: Learn Your Way to AWESOME

Journey

Constraints

What were the biggest challenges on the journey?

Page 83: Learn Your Way to AWESOME

Friction

Journey

What were the biggest challenges on the journey?

Page 84: Learn Your Way to AWESOME

Journey Strategy

What were the biggest challenges on the journey?

Page 85: Learn Your Way to AWESOME

Journey Uncertainty

What were the biggest challenges on the journey?

???

Page 86: Learn Your Way to AWESOME

8:150:00

George’s Painful Experience

Look for Patterns in Experience Reviews

What pain did you experience?What situation caused the pain?

What strategies did you try?

What strategies would you try if you could do it again?

Page 87: Learn Your Way to AWESOME

Situation Strategy Consequence

Developer Journeys

Clarity = Understand Why Breakdown the Journeys into Patterns

Page 88: Learn Your Way to AWESOME

PastStrategiesSituation Consequence

Prediction Machine

“Gut Feel” arises through pattern reinforcement

Clarity = Understand Why Breakdown the Journeys into Patterns

Page 89: Learn Your Way to AWESOME

Symptom

Symptom

Symptom

Cause

Cause

Fix

Fix

Fix

FixCause

Cause

Symptom

What Why How

Refactor BrainPain Type

Page 90: Learn Your Way to AWESOME

Why —> How

Page 91: Learn Your Way to AWESOME

BreakpointStop and Think!

Turn Auto-Pilot Decisions into Conscious Decisions

The Awareness Challenge:

We have to recognize the situationand predict the pain

in order to modify the decision.

Now we can modify the decision code!

Page 92: Learn Your Way to AWESOME

The Checklist ManifestoAtul Gawande

Scaling LeanAsh Maurya

+

Change Habits with Checklist Experiments

Page 93: Learn Your Way to AWESOME

The Haystack Principle

Lots of unvalidated changes

Easier to find the needle.

The Haystack Principle

Optimize for small manageable haystacks.

Page 94: Learn Your Way to AWESOME

14:230:00

I want to avoid this…

Thinking ChecklistIs my current approach likely to cause a big haystack?

Situation: start of subtask

Let’s Make a Checklist!

“What question could I ask my future self to recognize similar risks in the future?”

“In what situation would I ask the question?”

Page 95: Learn Your Way to AWESOME

0:00

Stop and Think:

Is my current approach likely tocause a big haystack?

Predict: Small haystackLow Friction

Checklist Experiments

Page 96: Learn Your Way to AWESOME

18:120:00

Stop and Think:

Is my current approach likely tocause a big haystack?

False Prediction

Predict: Small haystackLow Friction

Checklist Experiments

Page 97: Learn Your Way to AWESOME

18:120:00

Stop and Think:

Is my current approach likely tocause a big haystack?

False Prediction

High-Risk Situations

1. Unraveling sweater2. Integration-heavy change3. High state variation4. Minimum scope is big

Q: Is my current approach likely tocause a big haystack?

Start of Subtask

Checklist Experiments

Page 98: Learn Your Way to AWESOME

Strategy Types (“do”)

1. DependencyAnalysis2. IncrementalIntegrationTest3. DataDrivenTest4. IsolateHardToTestCode

Situation Types (“see”)

1. UnravelingSweater2. HeavyIntegrationLogic3. HighStateVariation4. CoupledExternalDependencies

Haystack Decisions

Page 99: Learn Your Way to AWESOME

Adhoc Predictions While You Work

I predict this <strategy> will avoid this <pain>

General rule of thumb: Predict the pain and throw as many patterns as you can in a

sentence

I see a risk of this <situation>, and I predict this <strategy> will help me

avoid it

Page 100: Learn Your Way to AWESOME

Symptom

Symptom

Symptom

Cause

Cause

Fix

Fix

Fix

FixCause

Cause

Symptom

What Why How

Refactor BrainPain Type

Page 101: Learn Your Way to AWESOME

Improve Quality of Decisions

Data-Driven Software Mastery

Page 102: Learn Your Way to AWESOME

If any part of the feedback loop is broken:

Our improvements don’t make much difference.

Page 103: Learn Your Way to AWESOME

Average Pain per Incident

This is Traction

Target Flow

Control Limit

Categorize the Pain Type

“Pain Control” in Software Development

Page 104: Learn Your Way to AWESOME

Overview

How can we measure development pain?

How do we create a data-driven feedback loop?

What does this look like in practice?

Page 105: Learn Your Way to AWESOME

Continuous Improvement Framework

Page 106: Learn Your Way to AWESOME

1. Clarify the Strategy

Page 107: Learn Your Way to AWESOME

1. Clarify the Strategy

Page 108: Learn Your Way to AWESOME

1. Clarify the Strategy

Page 109: Learn Your Way to AWESOME

Look for #Patterns.

1. Clarify the Strategy

Page 110: Learn Your Way to AWESOME

Janelle’s Painful Experience

2. Record an Idea Flow Map

Make adhoc predictions as you work

Page 111: Learn Your Way to AWESOME

3. Reflect on Decisions (Experience Review)

Page 112: Learn Your Way to AWESOME

3. Reflect on Decisions (Experience Review)

Page 113: Learn Your Way to AWESOME

3. Reflect on Decisions (Experience Review)

Page 114: Learn Your Way to AWESOME

Look for #Patterns.

3. Reflect on Decisions (Experience Review)

Page 115: Learn Your Way to AWESOME

Continuous Improvement Framework

Page 116: Learn Your Way to AWESOME

Focus Meeting: Mastery Circle

Circle Leader

Circle Member

Focus: What pain did we experience?Observe: Ask questions about the factsConclude: What major factors caused pain?Optimize: What strategies to reduce the pain?Learn: What experiments could we run?

ObservationQuestions

Make a F.O.C.O.L Point!

Summarize lessons learned in a #HashTagged Journey.

(focused problem-solving discussion)

Page 117: Learn Your Way to AWESOME

Dedicated Capacity for Improvement Work

Long-term feedback loop

Page 118: Learn Your Way to AWESOME

LEARN YOUR WAY TO AWESOME.

Free to Join Industry Peer Mentorship Network

openmastery.org

Page 119: Learn Your Way to AWESOME

Developer Insight Tools Platform

Idea Flow Mapping Tools

Team Insight Tools

TeamJoeSallyMarkEric

Community Insight Tools

AnonymizedData

(REST)

Shared Taxonomyof Patterns & Principles

(with example data)

Page 120: Learn Your Way to AWESOME

Janelle Kleinopenmastery.org @janellekz

Check out openmastery.org for details.

Read my Book.

Think About It.

FREE withMembershipBuy It

How to Measure the PAINin Software Development

Janelle Klein