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