Engineering for Software
summary
Argues software engineering is an empirical craft with ten concrete rules: five to optimize learning — iteration and feedback, working incrementally, experimental trials and being empirical — and five to manage complexity — modularity, cohesion, separation of concerns, abstraction and controlling coupling. Gives concrete examples: aircraft evolution via incremental testing, ISS built module by module, iPhone features added over releases, SpaceX Starship tests that blow up then inform a successful landing, and a testability fix using dependency injection and a fake engine.
AI-written summary · about
chapters (23)
- 0:00Intro
- 1:25How do you think of your work?
- 3:17Who cares?
- 4:20What is engineering?
- 8:51The impact of science & engineering
- 11:44What is engineering really for?
- 16:58Optimize for learning
- 17:15Iteration
- 20:55Feedback
- 23:57Incremental
- 26:19Experimental
- 29:08Empirical
- 32:11Managing complexity
- 33:33Modularity
- 37:01Cohesion
- 37:29Separation of concerns
- 39:17Abstraction
- 42:51Coupling
- 46:24Example
- 50:24The tools of our trade
- 53:42Embrace change
- 54:35Main takeaway
- 55:16Outro
related talks
37mEngineering for Software
35mEngineering for Software - How to Amplify Creativity
57mEngineering for Software
45mTaking Back "Software Engineering"
47m‘Engineering' for Software - How to Amplify Creativity
42mwhy software development is an engineering discipline
40mTaking Back "Software Engineering" – Craftsmanship is Insufficient
38mSolving the Hard Problems
