Extreme Programming - KeynesYouDigIt/Knowledge GitHub Wiki

via Software-Development#high-level-methodologies

Kent Beck @ DDD -Continued Learning: The Beauty of Maintenance

(only kinda related to XP - move me?) https://www.youtube.com/watch?v=3gib0hKYjB0

  • Change is inherent to software - people see the changes they want once they see the software

  • paraphrasing "the green book"

    • good definition of "coupled" - for any element (module, service, var, funk), any change Delta,
      • Element A is coupled with element B when change Delta in A must result in a change in B for the software to function.
  • The cost of software is the cost to change the software (assuming, as stated above, change is constant)

  • coupled software becomes more expensive to change following a power law distribution

  • Cohesion has a surprising definition

    • Some element A is cohesive such that sub-elements An ARE coupled
      • A module is "cohesive" when its classes are coupled (wat?)
      • Ergo, small, cohesive elements are good, and should be broken up and decoupled, but should remain cohesive for shared work.
      • Making a module "cohesive" (and thus internally coupled) saves time and starts to help you identify where important decoupling can happen!
        • its not guaranteed but its a place to start and help you reason about code.
  • ((Like Tim Ferris says)) What would this look like if it were simple?

  • some times you make the change easy before making the (now easy) change