Buy a Plunger Before You Need a Plunger: Scalable, Flexible, Modular, Preventative Architecture
summary
Argues that a small set of concrete patterns — presenter + interactor + transformer, clear platform/framework/implementation layers, and Dagger-style dependency injection — turn fragile Android MVP code into scalable, modular code. Shows adding offline support by injecting an offline interactor, fixes a bug by extracting a flavor transformer so conversion logic is shared, and adds a single-list feature by swapping a transformer module. Demonstrates that wrapping third‑party APIs and naming/abstraction choices prevent large refactors and make features pluggable.
AI-written summary · about
chapters (17)
- 0:00Introduction
- 1:24Architecture basics
- 3:53Composable design
- 8:07Layered architecture
- 9:55Converting codebase
- 10:37Case study setup
- 12:00Adding offline feature
- 15:52Debugging offline bug
- 17:38Introducing transformers
- 20:28Flat list feature
- 24:40Preventative measures
- 25:23Wrapping dependencies
- 27:08Switching analytics
- 29:39Platform agnostic code
- 31:47File reader abstraction
- 33:11Naming conventions
- 35:16Summary and Q&A
related talks
31mPatterns for Safe Refactoring of Android Apps
40mGrowing Pains: Scaling and Re-architecting Apps Under Fire
41mStrategies and tactics for incrementally refactoring while keeping the app releasable
47mRefactor Without Breaking Everything: Anatomy of Incremental Modernization Patterns
43mWhat everyone can learn from building a framework
51mMicroProcess Architectures: Planning for Change, & Retaining Flexibility
54mThe Golden Principles of Software Architecture Applied To Kotlin Multiplatform
49mMitosis Pattern
