keynote: software is details · keynote: software is details author: kevlin henney (curbralan...

75
Software Is Details @KevlinHenney

Upload: others

Post on 13-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Software Is Details @KevlinHenney

Page 2: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 3: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 4: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Any program is a model of a

model within a theory of a model

of an abstraction of some portion

of the world or of some universe

of discourse.

Meir M Lehman "Programs, Life Cycles, and Laws of Software Evolution"

Page 5: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

The purpose of abstraction is not

to be vague, but to create a new

semantic level in which one can

be absolutely precise.

Edsger W Dijkstra

Page 6: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

It's just semantics.

Page 7: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

It's just meaning.

Page 8: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

It's just details.

Page 9: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 10: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Details count.

Peter Weinberger

Page 11: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Geeks are people who

love something so much

that all the details matter.

Marissa Mayer

Page 12: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

We're talking about a very

specific mindset that is crucial

when it comes to the act of

creating.

Will Gompertz

Think Like an Artist

Page 13: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

It is an attitude that can be

encapsulated in a simple but

demanding rule: always think

both big picture and fine detail.

Will Gompertz

Think Like an Artist

Page 14: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

software

Page 15: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

software architecture

Page 16: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

code

Page 17: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

implementation

Page 18: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

implementation details

Page 19: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

design details

Page 20: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

design decisions

Page 21: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 22: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Architecture represents the

significant design decisions

that shape a system, where

significant is measured by

cost of change.

Grady Booch

Page 23: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Architecture is a hypothesis,

that needs to be proven by

implementation and

measurement.

Tom Gilb

Page 24: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

We propose [...] that one begins

with a list of difficult design

decisions or design decisions

which are likely to change. Each

module is then designed to hide

such a decision from the others.

David L Parnas On the Criteria to Be Used in Decomposing Systems into Modules

Page 25: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Programming is

a design activity.

Jack W Reeves What Is Software Design?

Page 26: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Coding actually makes sense more often

than believed. Often the process of

rendering the design in code will reveal

oversights and the need for additional

design effort. The earlier this occurs, the

better the design will be.

Jack W Reeves What Is Software Design?

Page 27: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 28: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

If a plot works out exactly

as you first planned, you're

not working loosely enough

to give room to your

imagination and instincts.

Page 29: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

/ WordFriday

Page 30: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

pantser, noun Writer who writes by the seat of their pants.

In contrast to a plotter, a pantser doesn't

work to (or have) an outline.

Page 31: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 32: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 33: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

16-bit

Page 34: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

32-bit

Page 35: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

64-bit

Page 36: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

<windows.h>

Page 37: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

LLP64

Page 38: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

LP64

Page 39: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 40: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Hamlet: To be, or not to be, that is the question.

Page 41: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Ophelia: 'Tis in my memory locked, and you yourself shall keep the key of it.

Page 42: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Hamlet: Yea, from the table of my memory I'll wipe away all trivial fond records.

Page 43: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 44: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Mutable

Immutable

Unshared Shared

Unshared mutable data needs no synchronisation

Unshared immutable data needs no synchronisation

Shared mutable data needs synchronisation

Shared immutable data needs no synchronisation

Page 45: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Mutable

Immutable

Unshared Shared

Unshared mutable data needs no synchronisation

Unshared immutable data needs no synchronisation

Shared mutable data needs synchronisation

Shared immutable data needs no synchronisation

The Synchronisation Quadrant

Page 46: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 47: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

All computers

wait at the

same speed

Page 48: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Savings in time feel like simplicity

Page 49: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

... premature optimization is the root of all evil (or at least most of it) in programming.

Donald Knuth

Page 50: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

... premature optimization is the root of all evil (or at least most of it) in programming.

Donald Knuth

Page 51: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

... premature optimization is the root of all evil (or at least most of it) in programming.

Donald Knuth

Page 52: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Command-line tools

can be 235x faster than

your Hadoop cluster

Adam Drake

http://aadrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html

Page 53: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

sort

Page 54: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 55: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

O(n log n)

Page 56: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

O(n2)

Page 57: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 58: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 59: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

O(n!)

Page 60: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 61: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

OMG!

Page 62: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 63: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

O(n)

Page 64: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Simple Testing Can Prevent

Most Critical Failures

An Analysis of Production Failures in

Distributed Data-Intensive Systems

https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf

Page 65: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in
Page 66: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Schiaparelli’s Inertial Measurement Unit (IMU) went about its business of calculating the lander’s rotation rate. For some reason, the IMU calculated a saturation-maximum period that persisted for one second longer than what would normally be expected at this stage.

When the IMU sent this bogus information to the craft’s navigation system, it calculated a negative altitude.

http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670

Page 67: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

That fateful miscalculation set off a cascade of despair, triggering the premature release of the parachute and the backshell, a brief firing of the braking thrusters, and activation of the on-ground systems as if Schiaparelli had already reached the surface.

This all happened while the vehicle was still two miles (3.7 km) above ground.

http://gizmodo.com/a-crazy-miscalculation-doomed-the-sciaparelli-lander-1789319670

Page 68: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

A majority of the production

failures (77%) can be

reproduced by a unit test.

https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf

Page 69: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

htt

p:/

/www.c

om

mitst

rip.c

om

/en/2016

/08/25/a-v

ery

-com

pre

hensi

ve-a

nd-p

recis

e-s

pec/

Page 70: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

htt

p:/

/www.c

om

mitst

rip.c

om

/en/2016

/08/25/a-v

ery

-com

pre

hensi

ve-a

nd-p

recis

e-s

pec/

Page 71: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

htt

p:/

/www.c

om

mitst

rip.c

om

/en/2016

/08/25/a-v

ery

-com

pre

hensi

ve-a

nd-p

recis

e-s

pec/

Page 72: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

htt

p:/

/www.c

om

mitst

rip.c

om

/en/2016

/08/25/a-v

ery

-com

pre

hensi

ve-a

nd-p

recis

e-s

pec/

Page 73: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Normally screws are so cheap and small and

simple you think of them as unimportant.

But now, as your Quality awareness

becomes stronger, you realize that this one,

individual, particular screw is neither cheap

nor small nor unimportant.

Robert M Pirsig Zen and the Art of Motorcycle Maintenance

Page 74: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Right now this screw is worth exactly the

selling price of the whole motorcycle,

because the motorcycle is actually valueless

until you get the screw out.

With this reevaluation of the screw comes a

willingness to expand your knowledge of it.

Robert M Pirsig Zen and the Art of Motorcycle Maintenance

Page 75: Keynote: Software Is Details · Keynote: Software Is Details Author: Kevlin Henney (Curbralan Limited) Subject "It's just a detail." Software is lots of details brought together in

Software Is Details