Five Whys - Devoxx UK 2014

Preview:

DESCRIPTION

The presentation I gave at Devoxx UK 2014, subtitled "Counter-Intuitive Solutions to (All-Too-Common) Problems

Citation preview

@al94781#5whys

The Five “Whys”

Andrew Harmel-Law@al94781 the-music-of-time.blogspot.com & scalaeyeforthejavaguy.blogspot.com

@al94781 #5whys

The Five “Whys”•Andrew Harmel-Law

Andrew.Harmel-Law@Capgemini.com

•Dev Lead / Developer / OSS Advocate @ Capgemini UK

•We build complicated stuff for other people. (We’re hiring. Email me)

@al94781 #5whys

TL;DL

We’re engineering ourselves into a right mess;

but we can engineer ourselves out of it

@al94781 #5whys

Disclaimer:No “Hype Cycles”,

“Magic Quadrants” or “Technology Radars” were harmed (or consulted) in the course of preparing

this presentation

@al94781 #5whys

“… and they also fail in ways that are beyond the comprehension

of a single person.”

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

How Do We Cope?• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

How Can We Cope?• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.• Identify the problem. Then solve it.

@al94781 #5whys

@al94781 #5whys

DOES THIS MEAN WE’RE ACTUALLY PART OF THE PROBLEM?

@al94781 #5whys

“?”

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

1. The Bakery and NoOps2. Anti-Fragility and the Simian Army3. Throw Everything Away4. The Church of Graphs5. Open Source (Almost) Everything

@YourTwitterHandle@al94781 #5whys

1. Th

e

Baker

y

and N

oOps

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

@al94781 #5whys

Immutability makes many things easier:

•Maintenance (e.g. SunRay)•Multi-Threading•Scaling (e.g. Pizza Boxes)•Caching•Development in general (e.g. “no changes in a Sprint”)

@al94781 #5whys

•What if you had immutable deployables?•And what if you deployed to immutable environments?

@al94781 #5whys

“Netflix is a developer oriented culture.”

http://perfcap.blogspot.co.uk/2012/03/ops-devops-and-noops-at-netflix.html

@al94781 #5whys

“Netflix is a developer oriented culture.”“We decided to leverage developer oriented tools such as Perforce for version control, Ivy for dependencies, Jenkins to automate the build process, Artifactory as the binary repository and to construct a “Bakery" that produces complete AMIs that contain all the code for a service.”

http://perfcap.blogspot.co.uk/2012/03/ops-devops-and-noops-at-netflix.html

@al94781 #5whys

“Netflix is a developer oriented culture.”“We decided to leverage developer oriented tools such as Perforce for version control, Ivy for dependencies, Jenkins to automate the build process, Artifactory as the binary repository and to construct a “Bakery" that produces complete AMIs that contain all the code for a service.”

“Several hundred development engineers use these tools to build code, run it in a test account in AWS, then deploy it to production themselves.”

http://perfcap.blogspot.co.uk/2012/03/ops-devops-and-noops-at-netflix.html

@al94781 #5whys

“[Your Company] is a developer oriented culture.”“We decided to leverage developer oriented tools such as Perforce for version control, Ivy for dependencies, Jenkins to automate the build process, Artifactory as the binary repository and to construct a “Bakery" that produces complete AMIs that contain all the code for a service.”

“Several hundred development engineers use these tools to build code, run it in a test account in AWS, then deploy it to production themselves.”

http://perfcap.blogspot.co.uk/2012/03/ops-devops-and-noops-at-netflix.html

@al94781 #5whys

http://www.infoq.com/presentations/Building-for-the-Cloud-at-Netflix

@al94781 #5whys

http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html

@al94781 #5whys

http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html

@YourTwitterHandle@al94781 #5whys

2. Ant

i-

Fragil

ity &

the S

imian

Army

@al94781 #5whys

@al94781 #5whys

(a)

@al94781 #5whys

(b)

@al94781 #5whys

“Put all your eggs in one basket,

and then watch that basket very

closely”(Andrew Carnegie) (b)

(c)

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@al94781 #5whys

http://queue.acm.org/detail.cfm?id=2499552

@al94781 #5whys

(b)

@YourTwitterHandle@al94781 #5whys

3. Th

row

Ever

ythin

g

Away

@YourTwitterHandle@al94781 #5whys

3. Th

row

Ever

ythin

g

Away.

Ever

ythin

g?

Yes,

Ever

ythin

g. Oh,

& Do I

t

Regula

rly To

o

@al94781 #5whys

“Plan to throw one away”

Fred Brooks,The Mythical Man

Month(b)

@al94781 #5whys

(b)

@al94781 #5whys

•But little pieces at a time

•And then only the ASCII-file implementations

(b)

What if We Were Always Throwing

Away?

@al94781 #5whys

•The knowledge gained from writing the previous version

•The specs (executable preferentially) (b)

What Are We Not Throwing Away?

@al94781 #5whys

@YourTwitterHandle@al94781 #5whys

4. Th

e

Chur

ch of

Graph

s

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@al94781 #5whys

“If Engineering at Etsy has a religion, it’s the Church of Graphs. If it moves, we track it.

Sometimes we’ll draw a graph of something that isn’t moving yet, just in case it decides to make a run for it.

In general, we tend to measure at three levels: network, machine, and application”

http://codeascraft.com/2011/02/15/measure-anything-measure-everything/

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@al94781 #5whys

“Application metrics are usually the hardest, yet most important, of the three. They’re very specific to your business, and they change as your applications change (and Etsy changes a lot).

Instead of trying to plan out everything we wanted to measure, we decided to make it ridiculously simple for any engineer to get anything they can count or time into a graph with almost no effort.”

http://codeascraft.com/2011/02/15/measure-anything-measure-everything/

@al94781 #5whys

(b)http://code.flickr.net/2008/10/27/counting-timing/

@YourTwitterHandle#DVXFR14{session hashtag} @al94781 #5whys

5. Ope

n

Sour

ce

(Alm

ost)

Ever

ything

@al94781 #5whys

AUDIENCE POLL

- Who here uses Open Source?

- Who here contributes to Open Source?

- Who here creates Open Source?

(b)

@al94781 #5whys

AUDIENCE POLL

- Who here uses Open Source at Work?

(b)

@al94781 #5whys

AUDIENCE POLL

- Who here uses Open Source at Work?

- Who here contributes to Open Source at Work?

- Who here creates Open Source at Work?

(b)

@al94781 #5whys

(b)

@al94781 #5whys

•Great advertising•More work done, faster and

more cheaply•Attract talent•Best technical interview possible•Retain talent•Effortless modualrisation•Reduce duplication of effort

(b)

Why Bother to Open Source?

@al94781 #5whys

•Hire & retain top engineers•Good PR•Make Netflix solutions common

standards•Give back to the Apache OSS

community•Motivate•Peer pressure, code clean-up and

documentation

(b)

Why Should I Open Source?

@al94781 #5whys

AUDIENCE POLL

- Who here would like to use Open Source at Work?

- Who here would like to contribute to Open Source at Work?

- Who here would like to create Open Source at Work?

(b)

@al94781 #5whys

(b)

@al94781 #5whys

(b)

@YourTwitterHandle#DVXFR14{session hashtag} @al94781 #5whys

Any

Gener

al

Conclu

sion

s?

@al94781 #5whys

There are Some Themes (1)You don’t get any of this for free, so;

•Design for build-ability•Design for deploy- and undeploy-ability•Design for modularity•Design for monitor-ability•Design for automate-ability

(b)

@al94781 #5whys

There are Some Themes (2)•Reduce variation (or manage the sources of variation)

•Trust and enable developers to share and collaborate (inside and outside the firewall)

(b)

@al94781 #5whys

So, What About Us?We can’t apply all these ideas on all of

our projects

(b)

@al94781 #5whys

So, What About Us?We can’t apply all these ideas on all of

our projectsBut we could apply some of them on

some of our projects

(b)

@al94781 #5whys

Think: What’s the Effect?•On how we architect and design?•On how we build and test?•On how we deploy and run?•On how we structure our teams?•On how we interact with our customers?•On how we use and share code?

(b)

@al94781 #5whys

We Too Can Ask “Why?”•What else can we:

•challenge?•find that sucks, and then remove?•find that is good, and then amplify?•share, and get famous for?

(b)

@YourTwitterHandle#DVXFR14{session hashtag} @al94781 #5whys

Than

ks,

Q & A

@al94781 #5whys

Thanks / Creative Commons•Presentation Template — Guillaume LaForge

•The Queen — A prestigious heritage with some inspiration from The Sex Pistols and funny Devoxxians

•Girl with a Balloon — Banksy

•Tube — Michael Keen