Interesting talk about the recurring problem of increasing complexity in software, different approaches to handling it and acknowledging decades of research on the subject.
TL;DW (yet, saved to my watch later list), but the overwhelming majority of production code is defensive. It’s code to protect against user error, malicious users, dirty upstream data, and deliver graceful error states, and exception handling. If we could trust users and upstream dependencies, all of us would be writing very simple code.
Source: SWE for over 25 years in medical, finance, and national security.
You hit the nail on the head for the first parts of the video, as they cover how quickly code is forced to grow from what you describe. It’s some of the later parts and the highlighting of research that caught my attention (and may for you as well).
What’s great is it’s divided into chapters, and there’s a pinned comment with the chapter timestamps, to skip into what may be more salient parts to check out.
Also I guess today I’m in the mindset to teach myself some new things, so I’ve also copied them over here for convenience:
- 1:40 Chapter 1 What is complexity
- 3:38 Chapter 2 A bestiary of software complexity
- 4:00 Defensive Code
- 6:53 Defensive Code Observations
- 7:37 Scale
- 9:50 Scale Observations
- 10:31 Leaky Abstraction Observations
- 12:48 Model/Reality Gaps
- 16:35 Hyperspace
- 18:34 Chapter 3 Homeostasis
- 19:53 Complexity homeostasis
- 24:20 Chapter 4 Theories of complexity
- 29:25 Chapter 5 Living with Complication
- 39:14 Complexity
for anyone wondering
I copied and special pasted the pinned comment to LibreOffice Writer, saved it as an .odt, then used Pandoc to convert that to markdown for here. There’s probably a simpler method like a markdown editor that could do special paste into markdown formatting or something, but I didn’t feel like looking for it.
Thank you kind for putting the chapters here!