evolutionary design animated
play

Evolutionary Design Animated James Shore TWITTER: @jamesshore - PowerPoint PPT Presentation

Evolutionary Design Animated James Shore TWITTER: @jamesshore jshore@jamesshore.com YOW! Conferences EMAIL: jamesshore.com December 2019 WEB: github.com/jamesshore Sydney/Brisbane/Melbourne, Australia GITHUB: jamesshore.com


  1. Evolutionary Design Animated James Shore TWITTER: @jamesshore jshore@jamesshore.com YOW! Conferences EMAIL: jamesshore.com December 2019 WEB: github.com/jamesshore Sydney/Brisbane/Melbourne, Australia GITHUB:

  2. jamesshore.com

  3. jamesshore.com

  4. Max Value jamesshore.com

  5. Traditional so fu ware development Cost of each change → “This is one of the premises of XP. It is the technical premise of XP… If a flattened change cost curve makes XP possible, a steep change cost curve makes XP impossible.” —Kent Beck Extreme Programming Explained, 1st ed. XP’s assumption # of changes → 0 jamesshore.com

  6. jamesshore.com

  7. jamesshore.com

  8. Pointer (12 hrs) Cost of each change (hrs) → Lines (6.5 hrs) Touch Clear button (2.75 hrs) pointer (0.5 hr) Disappearing pointer (0.75 hr) 0 # of changes → jamesshore.com

  9. Evolutionary Design How to achieve the enabling technical premise of modern development. jamesshore.com

  10. Evolutionary Design How to achieve the enabling technical premise of modern development. } 1. Simple Design all enabled by 2. Continuous Design fast & reliable automated tests 3. Reflective Design jamesshore.com

  11. When Not to Use Evolutionary Design Avoid when refactoring is di ffj cult or expensive • Not for interfaces exposed to other teams • unless you can directly change their code • implementation can use evolutionary design • For use within teams, not across teams jamesshore.com

  12. jamesshore.com

  13. jamesshore.com

  14. jamesshore.com

  15. Simple Design Design for exactly the features you have now • Start with a walking skeleton • Do The Simplest Thing That Could Possibly Work • You Aren't Gonna Need It jamesshore.com

  16. jamesshore.com

  17. jamesshore.com

  18. jamesshore.com

  19. jamesshore.com

  20. Think Red Green Refactor jamesshore.com

  21. jamesshore.com

  22. Continuous Design Constantly review and improve the design • Merciless Refactoring • Collective Ownership • Pairing and/or Mobbing • Continuous Integration jamesshore.com

  23. Adapted from Domain-Driven Design by Eric Evans jamesshore.com

  24. jamesshore.com

  25. jamesshore.com

  26. jamesshore.com

  27. jamesshore.com

  28. jamesshore.com

  29. Simple Design Design for exactly the features you have now • Start with a walking skeleton • Do The Simplest Thing That Could Possibly Work • You Aren't Gonna Need It • Simple, not sloppy jamesshore.com

  30. Rules for Simple Design “ When , not if, I need to change this decision in the future, how hard will it be? ” • Every concept Once. • …And Only Once (Don’t Repeat Yourself) • Design intent clear and obvious • Concrete, not speculative • Cohesive: code that changes together, stays together • Decoupled: if it’s out of sight, it’s safely out of mind • Isolated: if it’s widely used, it’s abstracted by an interface jamesshore.com

  31. jamesshore.com

  32. jamesshore.com

  33. jamesshore.com

  34. jamesshore.com

  35. Reflective Design Focus your refactoring where it will do the most good. jamesshore.com

  36. Traditional Design 1. Imagine the features that the application will support. 2. Imagine a design that can be cleanly extended to support all possible features. 3. Implement the design incrementally, leaving design “hooks” for features you haven’t added. jamesshore.com

  37. Reflective Design Focus your refactoring where it will do the most good. 1. Review the code you're about to work on. 2. Identify flaws (“code smells,” di ffj culty understanding). 3. Reverse engineer design of code, if necessary. 4. Imagine how to improve the design of the code. 5. Incrementally refactor the code to reach desired design. jamesshore.com

  38. jamesshore.com

  39. jamesshore.com

  40. jamesshore.com

  41. jamesshore.com

  42. jamesshore.com

  43. jamesshore.com

  44. jamesshore.com

  45. jamesshore.com

  46. jamesshore.com

  47. Continuous Design Constantly review and improve the design • Merciless Refactoring • Collective Ownership • Pairing and/or Mobbing • Continuous Integration • Camp Site Rule: Don’t make it perfect; just make it better. jamesshore.com

  48. Continuous Design Constantly review and improve the design • Merciless Refactoring • Collective Ownership • Pairing and/or Mobbing • Continuous Integration • Camp Site Rule: Don’t make it perfect; just make it better. • Be prepared to be surprised! jamesshore.com

  49. jamesshore.com

  50. jamesshore.com

  51. Evolutionary Design How to achieve the enabling technical premise of modern development. } 1. Simple Design all enabled by 2. Continuous Design fast & reliable automated tests 3. Reflective Design jamesshore.com

  52. Simple Design Design for exactly the features you have now • Start with a walking skeleton • Do The Simplest Thing That Could Possibly Work • You Aren't Gonna Need It • Simple, not sloppy jamesshore.com

  53. Continuous Design Constantly review and improve the design • Merciless Refactoring • Collective Ownership • Pairing and/or Mobbing • Continuous Integration • Camp Site Rule: Don’t make it perfect; just make it better. • Be prepared to be surprised! jamesshore.com

  54. Reflective Design Focus your refactoring where it will do the most good. 1. Review the code you're about to work on. 2. Identify flaws (“code smells,” di ffj culty understanding). 3. Reverse engineer design of code, if necessary. 4. Imagine how to improve the design of the code. 5. Incrementally refactor the code to reach desired design. jamesshore.com

  55. Pointer (12 hrs) Cost of each change (hrs) → Lines (6.5 hrs) Touch Clear button (2.75 hrs) pointer (0.5 hr) Disappearing pointer (0.75 hr) 0 # of changes → jamesshore.com

  56. jamesshore.com

  57. Evolutionary Design Animated James Shore “Flight of the Bumblebee” by Nikolai Rimsky-Korsakov Royalty-free recording courtesy of videvo.net TWITTER: @jamesshore jshore@jamesshore.com YOW! Conferences EMAIL: jamesshore.com December 2019 WEB: github.com/jamesshore Sydney/Brisbane/Melbourne, Australia GITHUB:

Recommend


More recommend