Working Isn't Good Enough

Lecture Notes for CS 190
Winter 2018
John Ousterhout

  • Reading: Chapter 3 of book
  • Programs evolve continuously:
    • Can't design the whole system at once
    • Can't get the design right the first time
    • Requirements change
  • Tactical Programming
    • Goal is to get the next feature or bug fix working
    • A few shortcuts and kludges are OK, if it gets things done quickly
    • Results in bad design, high complexity
    • Tactical tornadoes
  • Working isn't good enough
  • Strategic Programming
    • Primary goal is to produce a great design
      • How easy is it to evolve this code?
    • Continual small investments
  • How much to invest?
    • As much as you can afford
    • 10-20% overhead?
    • Investments pay for themselves relatively quickly (6-12 months?)
  • For this class: zero tolerance for complexity