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 - PHP Jo'burg 2015

542 views

Published on

Slides from my talk at the 2015 PHP Craft Conference in Johannesburg. 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

Emergent design - PHP Jo'burg 2015

  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 thoughtworks.com
  2. 2. 2
  3. 3. 3
  4. 4. 4 It is not enough for code to work. - Robert Martin
  5. 5. 5
  6. 6. 6
  7. 7. WHY DESIGN ? 7
  8. 8. 8
  9. 9. 9
  10. 10. 10
  11. 11. 11ANDY GREENBERG/WIRED
  12. 12. 12Steve Jurvetson
  13. 13. 13 Easy to learn Fast to changeFewer bugs
  14. 14. WHY EMERGENT ? 14
  15. 15. 15https://www.flickr.com/photos/jshj/4619958228
  16. 16. 16https://www.flickr.com/photos/chrisny2/4637837938
  17. 17. 17 Build. Measure. Learn.
  18. 18. 18 emerge verb • become apparent https://www.flickr.com/photos/schnappi/2321628609
  19. 19. 19 not become well-designed https://www.flickr.com/photos/evaysucamara/5438832695
  20. 20. 20 a change made in analysis for $1 would cost thousands to fix in production - The change curve
  21. 21. 21 a change made in analysis for $1 would cost thousands to fix in production - The change curve
  22. 22. SIMPLICITY What is good design? 22
  23. 23. 23 Why is this so hard? - Every developer, ever
  24. 24. 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
  25. 25. 25http://martinfowler.com/bliki/BeckDesignRules.html
  26. 26. AWAY FROM ! THE CODE 26
  27. 27. 27 Talk about it
  28. 28. 28 Draw something
  29. 29. 29 Know your challenges
  30. 30. 30 Where are we going?
  31. 31. 31
  32. 32. IN FRONT OF ! THE CODE 32
  33. 33. 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
  34. 34. BEFORE Preparatory refactoring 34
  35. 35. 35 Make the change easy (warning: this may be hard), then make the easy change - Kent Beck
  36. 36. 36 You must kill all your darlings - William Faulkner
  37. 37. DURING Continuous refactoring 37
  38. 38. 38 Don’t forget the last step
  39. 39. 39 Talk through it
  40. 40. AFTER Take a step back 40
  41. 41. 41 When writing code we should always be thinking of the reader - Martin Fowler
  42. 42. 42 Always leave the campground cleaner than you found it. - The boy scout rule, Robert Martin
  43. 43. 43 Perfect is the enemy of good. - Voltaire
  44. 44. SOME TECHNIQUES 44
  45. 45. 45 Code smells https://www.flickr.com/photos/ericparker/11245157393
  46. 46. 46 Side effects
  47. 47. 4747https://www.flickr.com/photos/campra/7833151482 Refactor to patterns
  48. 48. 48 Clean code is a hygiene factor https://www.flickr.com/photos/tambako/2515141429
  49. 49. 49 There are only two hard things in Computer Science: cache invalidation and naming things. - Phil Karlton
  50. 50. 50 Small things are easier to understand
  51. 51. 51 SOLID Single responsibility principle Open/closed principle …
  52. 52. RECAP Again! Again! 52
  53. 53. 53 Build. Measure. Learn. Working code is not enough change the change curve
  54. 54. 54 Simplicity
  55. 55. 55 In front of the code Away from the code
  56. 56. 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
  57. 57. a m e t a p h o r m a s h - u p EMERGENT DESIGN Rouan Wilsenach @rouanw thoughtworks.com

×