Compositional Software Design - Better, Smaller Code, Faster
Compositional Software Design is a design style where you design your components for composability - meaning they are designed to be composed together to form larger composite solutions to various problems. This video explains my version of compositional software design - which is centered around the SCIFI principles: S: Split unit responsibility recursively. C: Connect the resulting units. I: Improve interfaces. F: Facilitate use of core components. I: Iterate on the design. This video covers how to split and connect your components for both dynamic reusability and replaceability - which enables you to achieve two-way reusability. This video also explains how compositional design tends to lead to smaller code bases and faster development over time. Chapters: 0:00 Introduction to Compositional Software Design and its benefits 1:47 Don't skip Design Thinking 4:24 Disclaimer: Not all is new 4:51 What are you designing for? 5:03 Compositional software design goals 5:40 The SCIFI principles 7:28 S - Split unit responsibility recursively 8:35 Split for reusability 9:12 Split for replaceability 9:52 Two-way reusability 10:41 When to use interfaces? 11:48 Three classical responsibility splits 12:21 Split action from action 13:22 Split action from scope or context 14:55 Split action from state management 17:32 C - Connect the units 18:15 Connection direction 21:18 Connection mutability 34:16 I - Improve interfaces 37:16 F - Facilitate the use of core units 40:04 I - Iterate on the design 42:42 Summary of Compositional Software Design 45:38 Case - File hashing - example of applying SCIFI 01:07:24 Deviating fromt he principles is okay 01:08:47 Smaller code base - how? 01:11:24 Faster development - how? 01:13:55 Beyond OOP

Back to Basics: C++ API Design - Jason Turner - CppCon 2022

Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn’t 1.0 - Andrew Kelley Explains

Linus Torvalds: AI Is Changing Linux Fast

What Nobody Tells You About Being a Quant

Jonathan Blow - Jai Demo and Design Explanation (KEYNOTE) - Updated

Co-Creator of Haskell: Functional Programming, Thinking in Types, Useless Languages | Simon Jones

"Software Fundamentals Matter More Than Ever" — Matt Pocock

How To Think SO CLEARLY People Assume You're A Genius

Thread Signaling in Java

Turing Award Winner: Disagreeing with Google, Postgres, Future Problems | Mike Stonebraker

Software architecture, human judgment, and AI's limits with Grady Booch

Chip design from the bottom up – Reiner Pope

What to teach when AI writes the code | Rainer Stropek | TEDxLinz

Full Walkthrough: Workflow for AI Coding — Matt Pocock

How to Start Coding | Programming for Beginners | Learn Coding | Intellipaat

How I program C

Linus Torvalds Just EXPOSED Microsoft's Biggest Problem Yet

We're 99.9% sure this pattern is true, but no one can prove it

