Clean Up Your GOOOP: How to Break OOP Muscle Memory
summary
Argues that copying OO habits into Go produces “goop” with concrete examples: structs are not classes and embedding is not inheritance, which leads to surprising method dispatch; packages, not types, are the unit of encapsulation so huge packages can blow builds (one refactor turned 7–8 minute builds and 80 MB binaries into sub-second builds and 7–8 MB by splitting packages); interfaces are implicitly satisfied and the consumer defines interfaces, avoiding huge 91‑method APIs and 60‑method service interfaces.
AI-written summary · about
chapters (11)
- 0:00Breaking OOP habits
- 1:13What is OOP
- 4:27Go vs OOP
- 9:03Embedding vs inheritance
- 11:15Packages as design units
- 11:36Circular dependencies
- 15:33Consumer-defined interfaces
- 21:10Project structure pitfalls
- 26:10Idiomatic Go architecture
- 27:54SOLID in Go
- 31:51Summary
related talks
33mIs Go Object-Oriented? A Case of Public Opinion
04mGo is a great OO language
48mClear Is Better Than Clever - What Makes Go Stand Out
17mFrom Java to Go: I Have a Hammer and See Nails Everywhere
05mComposition Over Inheritance
26mGo is Boring... And That's Fantastic!
01h 02mKeeping it Simple With Go
23mSimplicity is Complicated
