why #opendx?

125
Gradle Summit 2016

Upload: janelle-klein

Post on 22-Mar-2017

139 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Why #OpenDX?

Gradle Summit 2016

Page 2: Why #OpenDX?

How to Measure Your #GradleDX

Janelle Klein

Page 3: Why #OpenDX?

, 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 SpeakerFounder of

newiron.com

Page 4: Why #OpenDX?

What is This Talk About?

Page 5: Why #OpenDX?

#OpenDXAn Open Standard for Measuring PAIN

Universal definition of “Better”

(Specification for Data Collection)

Developer Experience

Page 6: Why #OpenDX?

#GradleDX is a Pilot Project

#OpenDX

within

#GradleDX

Page 7: Why #OpenDX?

Feedback LoopCommunity Pain Sensor

Tools

Pilot: Supplier Partnership

#GradleDX Community Project

Plugin

Plugin

Plugin

Plugin

Page 8: Why #OpenDX?

Why does partnership matter in a software supply-chain?

Page 9: Why #OpenDX?

My Codeis AWESOME!

100% Code Coverage

Low Cyclomatic Complexity

Usability Problems

This is PAINFUL!

Depend On API

WTF?!

WTF?!

WTF?!

WTF?!

WTF?! WTF?!

Page 10: Why #OpenDX?

My Codeis 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.

Page 11: Why #OpenDX?

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!

Page 12: Why #OpenDX?

100% Code Coverage

Low Cyclomatic Complexity

Depends On API

WTF?!

WTF?!

WTF?!

WTF?!

WTF?! WTF?!

Oh…I can fix that!

Page 13: Why #OpenDX?

100% Code Coverage

Low Cyclomatic Complexity

Depend On API

Oh…I can fix that!

No More Pain

Thisis AWESOME!

Page 14: Why #OpenDX?

100% Code Coverage

Low Cyclomatic Complexity

Depend On API

Yay! It’s AWESOME!

No More Pain

This is AWESOME!

Visibility Facilitates the Conversation

Page 15: Why #OpenDX?

Application

3rd Party Dependencies

Local Components

Usability Problems

90% of our Software is HERE

Page 16: Why #OpenDX?

Application

3rd Party Dependencies

Local Components

Usability Problems

90% of our Software is HERE

This is PAINFUL!

Page 17: Why #OpenDX?

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

Page 18: Why #OpenDX?

Alert!

Alert!

Our Application

PRESSURE for better quality parts PAIN

What if we started measuring PAIN across the software supply chain?

This is PAINFUL!

Page 19: Why #OpenDX?

Everything is AWESOME!

Our Application

PRESSURE for better quality parts

What if we started measuring PAIN across the software supply chain?

Page 20: Why #OpenDX?

Feedback LoopCommunity Pain Sensor

Tools

#GradleDX: Pilot for Supply-Chain Feedback Loop

Plugin

Plugin

Plugin

Plugin

Pilot: Supplier Partnership

Page 21: Why #OpenDX?

Why Should YOU Care?

source: Domics - “What’s a Shrug?”

Page 22: Why #OpenDX?

Every few years we rewrite our software…

Start%Over%

Unmaintainable%So0ware%

Across the Industry

Page 23: Why #OpenDX?

We Start with the Best of Intentions

High Quality Code

Low Technical Debt

Automated Deployment

Good Code Coverage

Page 24: Why #OpenDX?

Then This Happens!

Page 25: Why #OpenDX?

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

Page 26: Why #OpenDX?

Our Solution…

Page 27: Why #OpenDX?

Until we can’t take it anymore.

Page 28: Why #OpenDX?

On to greener pastures…

Page 29: Why #OpenDX?

Has anyone struggled with the challenge of business pressure?

Has anyone ever tried to fix this problem within their organization?

Has anyone ever succeeded?

Page 30: Why #OpenDX?

This is the biggest cause of FAILURE in our industry:

Page 31: Why #OpenDX?

Because PAIN Doesn’t Show Up

on a Balance Sheet

If we don’t MEASURE it,

Why?

they don’t SEE it.

Page 32: Why #OpenDX?

“Better”“Better”

What if you could get managers and developers all pulling the same direction in your company?

ManagersDevelopers

Page 33: Why #OpenDX?

“Better”“Better”

What if we could solve this problem in ALL of our companies?

ManagersDevelopers

Page 34: Why #OpenDX?

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

Page 35: Why #OpenDX?

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

Page 36: Why #OpenDX?

We are working together to INVENT solutions for:

Community Analytics Platform

Process Control, Supply-Chain Optimization &

Throughput Accounting for

Software Organizations

Page 37: Why #OpenDX?

#OpenDXAn Open Standard for Measuring PAIN

Based on:

Page 38: Why #OpenDX?

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

Page 39: Why #OpenDX?

“Throughput Accounting”

System Productivity =Rate of Revenue

Rate of Investment

Throughput Accounting measures how efficiently we turn effort into money.

Our PAIN Matters

Page 40: Why #OpenDX?

How Do We Measure PAIN?

Page 41: Why #OpenDX?

Great Team Disciplined with Best Practices Constantly Working on Improvements+

Project FAILURE

About 8 Years Ago…

Page 42: Why #OpenDX?

ApplicationTests

Our Test Suite

Page 43: Why #OpenDX?

ApplicationTests

Our Test Suite

“What are we supposed to do?!”

Page 44: Why #OpenDX?

The Retrospective

“What are we supposed to do?!”

Our biggest problem

“Well, if we don’t understand a problem, we should

collect data.”

Page 45: Why #OpenDX?

The Retrospective

Our biggest problem

“What data would help us understand the problem?”

“What are we supposed to do?!”

Page 46: Why #OpenDX?

Technical Debt Mistakes

I thought the main obstacle was Technical Debt

Page 47: Why #OpenDX?

?Most of our mistakes were in the

most well-written parts of the code.

Mistakes

Page 48: Why #OpenDX?

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

Lower Familiarity

More Mistakes=

There had to be more to the story...

Page 49: Why #OpenDX?

Complex(So*ware(

PAIN

This is what I knew...

What made development feel painful?

Page 50: Why #OpenDX?

Unexpected Behavior

Problem Resolved

Tracking Painful Interaction with the Code (Friction)

Troubleshooting

Progress

5 hours and 18 minutes of troubleshooting...

PAINFUL

Page 51: Why #OpenDX?

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 52: Why #OpenDX?

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 53: Why #OpenDX?

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 54: Why #OpenDX?

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 55: Why #OpenDX?

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

Page 56: Why #OpenDX?

PAIN occurs during the process of understanding and extending the software

Complex(So*ware(

PAIN

Not the Code.

Optimize “Idea Flow”

Page 57: Why #OpenDX?

We deleted everything…

The automation wasn’t solving the problem!

Page 58: Why #OpenDX?

What are the specific risks in this release?

How can we mitigate the risks?

Handful of manual tests

Custom Tools

+

Page 59: Why #OpenDX?

Time-Bound Releases

RISK-Bound Releases

Page 60: Why #OpenDX?

Release Size

(weeks)

Time

Defect Rates

RISK-Bound Releases

Continuous Delivery is about learning how to effectively manage risk

Page 61: Why #OpenDX?

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 62: Why #OpenDX?

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 63: Why #OpenDX?

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 64: Why #OpenDX?

Complex(So*ware(

PAIN

Measure Friction in “Idea Flow”

OpenDX measures the “friction” that occurs during a developer’s experience

Page 65: Why #OpenDX?

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 66: Why #OpenDX?

Conflict Confirm

Rework'

Learn'

Validate(

Modify'

Progress Loop Conflict Loop

Troubleshoot'

Write a little code. Work out the kinks.

The Rhythm of “Idea Flow”

Page 67: Why #OpenDX?

On Intelligence Jeff Hawkins

Page 68: Why #OpenDX?

Confirmed Expectations

Our brain works like a giant prediction engine…

Page 69: Why #OpenDX?

Violated Expectations

Our brain works like a giant prediction engine…

Page 70: Why #OpenDX?

Conflict Confirm

Rework'

Learn'

Validate(

Modify'

Progress Loop Conflict Loop

Troubleshoot'

The Rhythm of “Idea Flow”

Page 71: Why #OpenDX?

“Friction” in Idea Flow

Conflict Confirm

Rework'

Learn'

Validate(

Modify'

Progress Loop Conflict Loop

Troubleshoot'

Page 72: Why #OpenDX?

“Idea Flow Map”

“Friction”

Page 73: Why #OpenDX?

Idea Flow Mapping Tools

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

Page 74: Why #OpenDX?

Typical Idea Flow Maps

Single Problem

Multi-Problem

Page 75: Why #OpenDX?

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...

Page 76: Why #OpenDX?

...Idea Flow Maps help developers diagnose software problems.

Problem-Solving Machine

We can read Visual Indicators in Idea Flow Maps

Page 77: Why #OpenDX?

= 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

Page 78: Why #OpenDX?

= Solution Strategy

The “Heart” of Software Development(the problem-solving machine)

Choose a general strategy

Page 79: Why #OpenDX?

= Solution Strategy

The “Heart” of Software Development(the problem-solving machine)

Understand the system

Page 80: Why #OpenDX?

= Solution Strategy

The “Heart” of Software Development(the problem-solving machine)

Code & work out the kinks

Page 81: Why #OpenDX?

= Solution Strategy

The “Heart” of Software Development(the problem-solving machine)

Back to the drawing board

Page 82: Why #OpenDX?

The symptoms we experience depend on where the disruptions are in the problem-solving process

Page 83: Why #OpenDX?

Trial and Error

The Friction is Here

Troubleshooting

Progress

Learning

Rework

Page 84: Why #OpenDX?

Assumption Risk (Rework)

Likelihood)of))making)a))

Bad)Assump4on)

Cost)to)Correct)Decisions)

High)Uncertainty)Low)Delay)

Low)Uncertainty)Low)Delay)

Low)Uncertainty)High)Delay)

PAIN)

Page 85: Why #OpenDX?

Struggling with Understanding the Code

The Friction is Here

Troubleshooting

Progress

Learning

Rework

Page 86: Why #OpenDX?

Familiarity Risk (Learning)

Likelihood)of))working)with)Unfamiliar)

Code)

Cost)to)Learn)

High)Frequency)Easy)to)Learn)

Low)Frequency)Easy)to)Learn)

Low)Frequency)Hard)to)Learn)

PAIN)

Page 87: Why #OpenDX?

Struggling with Feedback

The Friction is Here

Troubleshooting

Progress

Learning

Rework

Page 88: Why #OpenDX?

Quality Risk (Troubleshooting)

Likelihood)of))Unexpected)Behavior)

Cost)to)Troubleshoot)and)Repair)

High)Frequency)Low)Impact)

Low)Frequency)Low)Impact)

Low)Frequency)High)Impact)

PAIN)

Page 89: Why #OpenDX?

”Friction” is the time spent on:

x

Troubleshooting

x

Learning

x

Rework

Quality Risk Familiarity Risk Assumption Risk

Page 90: Why #OpenDX?

“What caused the pain in this case?”

Categorize the Problems with #HashTags

#ReportingEngine

#Hibernate

#MergeHell

Page 91: Why #OpenDX?

1. Problem A

2. Problem B

3. Problem C

1000 hours/month

Add up the Pain by Category

What’s the biggest problem to solve?

Page 92: Why #OpenDX?

Case studies.

Page 93: Why #OpenDX?

Troubleshooting

Progress

Learning

7:070:00

0:00 19:52

12 year old project after all original developers left.

Case Study: Huge Mess with Great Team

70-90% of dev capacity on “friction”

Page 94: Why #OpenDX?

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

Page 95: Why #OpenDX?

18 months after a Micro-Services/Continuous Delivery rewrite.

Troubleshooting

Progress

Learning40-60% of dev capacity on “friction”

0:00 28:15

12:230:00

Case Study: From Monolith to Microservices

Page 96: Why #OpenDX?

The Architecture Looked Good on Paper

Team A Team B Team C

Complexity Moved Here

Page 97: Why #OpenDX?

We Don’t Have TIME To Fix It!

Page 98: Why #OpenDX?

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)

Page 99: Why #OpenDX?

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

Page 100: Why #OpenDX?

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

Page 101: Why #OpenDX?

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

Page 102: Why #OpenDX?

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

Page 103: Why #OpenDX?

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)

Page 104: Why #OpenDX?

Lots of Friction in BRAND NEW code:

27:15

“WHY?”

Page 105: Why #OpenDX?

Application

3rd Party Dependencies

Local Components

Usability Problems

90% of our Software is HERE

This is PAINFUL!

Page 106: Why #OpenDX?

“The Idea Flow Factory” (supply chain model)

Optimize the Rate of Idea Flow

Across ANY Software Supply Chain

Page 107: Why #OpenDX?

Build Test Deploy

Typical manufacturing metaphor mapping:

Customer

The Problem: Focus on short-term effects

Page 108: Why #OpenDX?

Software Supply Chain as the Factory Floor

Customer

Page 109: Why #OpenDX?

Software Supply Chain as the Factory Floor

Customer

Dev = Operator “flows” the components

Page 110: Why #OpenDX?

Architecture Changes Create Bottlenecks

Page 111: Why #OpenDX?

Customer

Lack of Familiarity Creates Bottlenecks

WTF?!

Page 112: Why #OpenDX?

Customer: Big Kahuna

Customers: Seg 2 Seg 3

Customers: Seg 2 Seg 4 Seg 5

Connect Maintenance Effort to Revenue through Software Dependencies

Page 113: Why #OpenDX?

“Big Kahuna”

Effort

Revenue

“Throughput Accounting” Metrics

Cost of Support vs Revenue per Customer Segment (%)

Page 114: Why #OpenDX?

Effort

Revenue

“Throughput Accounting” Metrics

Cost of Support vs Revenue per Customer Segment (%)

Page 115: Why #OpenDX?

Breakdown of Development Capacity

If you were an investor: wouldn’t YOU want to reduce friction?

“Throughput Accounting” Metrics

Page 116: Why #OpenDX?

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

Page 117: Why #OpenDX?

We have the power to solve this problem:

If we choose to do it.

Page 118: Why #OpenDX?

Application

3rd Party Dependencies

Local Components

Usability Problems

This is PAINFUL!

We have the power to solve this problem:

Page 119: Why #OpenDX?

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.

Page 120: Why #OpenDX?

Miko: “That’s not a happy elephant!”

Page 121: Why #OpenDX?

Miko: “That’s not a happy elephant!”

Page 122: Why #OpenDX?

Focus on the PAIN & Build Happiness

Page 123: Why #OpenDX?

Let’s Talk About It.

openmastery.slack.com

#OpenDX #GradleDX

Page 124: Why #OpenDX?

Janelle Kleinopenmastery.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

Page 125: Why #OpenDX?

Learn more at www.gradle.org