Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Emergent design: cakes, showers and electricians.

1,049 views

Published on

Why should we care about software design? What is emergent design? What does it have to do with showers and why should we do it? Is that Sherlock Holmes?

Published in: Software
  • Be the first to comment

  • Be the first to like this

Emergent design: cakes, showers and electricians.

  1. 1. 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 rouanw.github.io thoughtworks.com
  2. 2. 2 It is not enough for code to work. - Robert Martin
  3. 3. 3
  4. 4. 4
  5. 5. WHY DESIGN ? 5
  6. 6. 6
  7. 7. 7
  8. 8. 8
  9. 9. 9ANDY GREENBERG/WIRED
  10. 10. 10Steve Jurvetson
  11. 11. 11 Easy to learn Fast to changeFewer bugs
  12. 12. WHY EMERGENT ? 12
  13. 13. 13https://www.flickr.com/photos/jshj/4619958228
  14. 14. 14https://www.flickr.com/photos/chrisny2/4637837938
  15. 15. 15 Build. Measure. Learn.
  16. 16. 16 emerge verb • become apparent https://www.flickr.com/photos/schnappi/2321628609
  17. 17. 17 not become well-designed https://www.flickr.com/photos/evaysucamara/5438832695
  18. 18. 18 a change made in analysis for $1 would cost thousands to fix in production - The change curve
  19. 19. 19 a change made in analysis for $1 would cost thousands to fix in production - The change curve
  20. 20. SIMPLICITY What is good design? 20
  21. 21. 21 Why is this so hard? - Every developer, ever
  22. 22. 22 a system made out of genuinely simple parts, is going to be able to affect the greatest change with the least work - Rich Hickey
  23. 23. 23http://martinfowler.com/bliki/BeckDesignRules.html
  24. 24. AWAY FROM ! THE CODE 24
  25. 25. 25 Talk about it
  26. 26. 26 Draw something
  27. 27. 27 Know your challenges
  28. 28. 28 Where are we going?
  29. 29. 29
  30. 30. IN FRONT OF ! THE CODE 30
  31. 31. 31 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
  32. 32. BEFORE Preparatory refactoring 32
  33. 33. 33 Make the change easy (warning: this may be hard), then make the easy change - Kent Beck
  34. 34. 34 You must kill all your darlings - William Faulkner
  35. 35. DURING Continuous refactoring 35
  36. 36. 36 Don’t forget the last step
  37. 37. 37 Talk through it
  38. 38. AFTER Take a step back 38
  39. 39. 39 When writing code we should always be thinking of the reader - Martin Fowler
  40. 40. 40 Always leave the campground cleaner than you found it. - The boy scout rule, Robert Martin
  41. 41. 41 Perfect is the enemy of good. - Voltaire
  42. 42. RECAP Again! Again! 42
  43. 43. 43 Build. Measure. Learn. Working code is not enough change the change curve
  44. 44. 44 Simplicity
  45. 45. 45 In front of the code Away from the code
  46. 46. 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 46
  47. 47. a m e t a p h o r m a s h - u p EMERGENT DESIGN Rouan Wilsenach @rouanw rouanw.github.io thoughtworks.com

×