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