First video in a series about software design is about the reason we do software design at all - to manage complexity. This is what usually ruins a codebase, the complexity that adds up over time makes it harder and harder to maintain and ruins developer productivity. We talk about some common strategies to deal with it.
My blog: https://alexkondov.com
My book: https://fullstacktao.com
Follow me on X: https://x.com/alexanderkondov
Follow me on Linkedin: https://www.linkedin.com/in/alexander-kondov-2a8b25a9/
0:00 What is complexity
1:15 Complexity from the outside world
2:14 Complexity and size
3:00 Accidental complexity
3:50 Over-engineering vs under-engineering
7:10 Managing complexity is maintainability
8:44 Colocating related logic
11:07 Hide complexity with abstractions
12:09 Spread complexity around
12:56 Avoid hypotheticals
14:23 Simple != Easy
15:09 Spend time on design
16:43 Stick to the domain language
17:54 “Am I doing this to prove I’m smart?”
19:03 Outro
Thumbnail Photo by Mike Bird