emergent design - php jo'burg 2015

57
cakes, showers and electricians EMERGENT DESIGN Rouan Wilsenach @rouanw thoughtworks.com

Upload: rouanw

Post on 23-Jan-2017

413 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Emergent design - PHP Jo'burg 2015

c a k e s , s h o w e r s a n d e l e c t r i c i a n s

EMERGENT DESIGN

Rouan Wilsenach @rouanw

thoughtworks.com

Page 2: Emergent design - PHP Jo'burg 2015

2

Page 3: Emergent design - PHP Jo'burg 2015

3

Page 4: Emergent design - PHP Jo'burg 2015

4

It is not enough for code to work.

- Robert Martin

Page 5: Emergent design - PHP Jo'burg 2015

5

Page 6: Emergent design - PHP Jo'burg 2015

6

Page 7: Emergent design - PHP Jo'burg 2015

WHY DESIGN ?

7

Page 8: Emergent design - PHP Jo'burg 2015

8

Page 9: Emergent design - PHP Jo'burg 2015

9

Page 10: Emergent design - PHP Jo'burg 2015

10

Page 11: Emergent design - PHP Jo'burg 2015

11 ANDY GREENBERG/WIRED

Page 12: Emergent design - PHP Jo'burg 2015

12Steve Jurvetson

Page 13: Emergent design - PHP Jo'burg 2015

13

Easy to learn Fast to changeFewer bugs

Page 14: Emergent design - PHP Jo'burg 2015

WHY EMERGENT ?

14

Page 15: Emergent design - PHP Jo'burg 2015

15https://www.flickr.com/photos/jshj/4619958228

Page 16: Emergent design - PHP Jo'burg 2015

16https://www.flickr.com/photos/chrisny2/4637837938

Page 17: Emergent design - PHP Jo'burg 2015

17

Build. Measure. Learn.

Page 18: Emergent design - PHP Jo'burg 2015

18

emerge

verb • become apparent

https://www.flickr.com/photos/schnappi/2321628609

Page 19: Emergent design - PHP Jo'burg 2015

19

not

become well-designed

https://www.flickr.com/photos/evaysucamara/5438832695

Page 20: Emergent design - PHP Jo'burg 2015

20

a change made in analysis for $1 would cost thousands

to fix in production

- The change curve

Page 21: Emergent design - PHP Jo'burg 2015

21

a change made in analysis for $1 would cost thousands

to fix in production

- The change curve

Page 22: Emergent design - PHP Jo'burg 2015

SIMPLICITYWhat is good design?

22

Page 23: Emergent design - PHP Jo'burg 2015

23

Why is this so hard? - Every developer, ever

Page 24: Emergent design - PHP Jo'burg 2015

24

a system made out of genuinely simple parts, is going to be able to

affect the greatest change with the least work

- Rich Hickey

Page 25: Emergent design - PHP Jo'burg 2015

25http://martinfowler.com/bliki/BeckDesignRules.html

Page 26: Emergent design - PHP Jo'burg 2015

AWAY FROM !

THE CODE

26

Page 27: Emergent design - PHP Jo'burg 2015

27

Talk about it

Page 28: Emergent design - PHP Jo'burg 2015

28

Draw something

Page 29: Emergent design - PHP Jo'burg 2015

29

Know your challenges

Page 30: Emergent design - PHP Jo'burg 2015

30

Where are we going?

Page 31: Emergent design - PHP Jo'burg 2015

31

Page 32: Emergent design - PHP Jo'burg 2015

IN FRONT OF !

THE CODE

32

Page 33: Emergent design - PHP Jo'burg 2015

33

refactoring

noun • a change made to the internal structure of software to

make it easier to understand and cheaper to modify without

changing its observable behaviour

http://martinfowler.com/bliki/DefinitionOfRefactoring.html

Page 34: Emergent design - PHP Jo'burg 2015

BEFOREPreparatory refactoring

34

Page 35: Emergent design - PHP Jo'burg 2015

35

Make the change easy (warning: this may be hard), then make the easy change

- Kent Beck

Page 36: Emergent design - PHP Jo'burg 2015

36

You must kill all your darlings

- William Faulkner

Page 37: Emergent design - PHP Jo'burg 2015

DURINGContinuous refactoring

37

Page 38: Emergent design - PHP Jo'burg 2015

38

Don’t forget the last step

Page 39: Emergent design - PHP Jo'burg 2015

39

Talk through it

Page 40: Emergent design - PHP Jo'burg 2015

AFTERTake a step back

40

Page 41: Emergent design - PHP Jo'burg 2015

41

When writing code we should always be

thinking of the reader - Martin Fowler

Page 42: Emergent design - PHP Jo'burg 2015

42

Always leave the campground cleaner than you found it.

- The boy scout rule, Robert Martin

Page 43: Emergent design - PHP Jo'burg 2015

43

Perfect is the enemy of good.

- Voltaire

Page 44: Emergent design - PHP Jo'burg 2015

SOME TECHNIQUES

44

Page 45: Emergent design - PHP Jo'burg 2015

45

Code smells

https://www.flickr.com/photos/ericparker/11245157393

Page 46: Emergent design - PHP Jo'burg 2015

46

Side effects

Page 47: Emergent design - PHP Jo'burg 2015

4747https://www.flickr.com/photos/campra/7833151482

Refactor to patterns

Page 48: Emergent design - PHP Jo'burg 2015

48

Clean code is a hygiene factor

https://www.flickr.com/photos/tambako/2515141429

Page 49: Emergent design - PHP Jo'burg 2015

49

There are only two hard things in Computer Science: cache invalidation

and naming things. - Phil Karlton

Page 50: Emergent design - PHP Jo'burg 2015

50

Small things are easier to understand

Page 51: Emergent design - PHP Jo'burg 2015

51

SOLID

S ingle responsibility principle

Open/closed principle…

Page 52: Emergent design - PHP Jo'burg 2015

RECAPAgain! Again!

52

Page 53: Emergent design - PHP Jo'burg 2015

53

Build. Measure. Learn.

Working code is not enough

change the change curve

Page 54: Emergent design - PHP Jo'burg 2015

54

Simplicity

Page 55: Emergent design - PHP Jo'burg 2015

55

In front of the code

Away from the code

Page 56: Emergent design - PHP Jo'burg 2015

SOME RESOURCES

Articles

• http://martinfowler.com/articles/designDead.html

• http://martinfowler.com/bliki/BeckDesignRules.html

• bit.ly/nf-ead-all (Neal Ford)

Videos

• http://www.infoq.com/presentations/Simple-Made-Easy (Rich Hickey)

• https://vimeo.com/16955608 (Neal Ford)

Books

• http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 (Uncle Bob)

• http://www.amazon.com/Extreme-Programming-Explained-Embrace-Edition/dp/0321278658 (Kent Beck)

News

• http://www.wired.com/2015/07/hackers-remotely-kill-jeep-highway/

• http://motherboard.vice.com/en_uk/read/how-is-critical-life-or-death-software-tested

56

Page 57: Emergent design - PHP Jo'burg 2015

a m e t a p h o r m a s h - u p

EMERGENT DESIGN

Rouan Wilsenach @rouanw

thoughtworks.com