Graduate Program KB

Chapter 1 - What is Design and Architecture?

  • No difference between design and architecture

    • Often split to mean that architecure is high level and design is low level
    • Distinction is nonsensical
    • Architecture of a house includes every light, switch, outlet
    • Little detalis support high level decisions
    • Continuous fabric which defines the shape of the system
  • Measure of design quality is the effort required to meet the needs of the customer

  • Case study

    • Exponential growth of engineering staff
    • Growth of the code reached an asymptote
    • Cost per line of code exponential
    • No thought given to cleanliness or structure
    • productivity declines with every release
  • Tortoise and the hare

    • "We can clean it up later"
    • But no time for that, have the next feature to develop
    • Overconfident in ability to remain productive
    • Making messes is always slower, even on short time scales
  • Jason Gorman's experiment

    • Every day he wrote a program to convert decimals to roman numerals
    • Used TDD every odd number day
    • Got faster over time
    • But all the TDD days were significantly faster ~ 10%
    • The slowest TDD day was faster than the fastest non TDD day
  • The only way to go fast is to go well

  • The only way to address the decline in productivity is to take responsibility for the mess

    • Not to restart from scratch and make another mess