Imagine a quarter-long refactor: turning a big ball of mud, held together by RxSwift and 1500-line view models, into a modular, fully testable codebase. All while actively developing other features and shipping the app. What triggered that massive refactor? An innocuous estimation request. And a decision that shaped the future…
It's Monday morning. You're halfway through your coffee when a Slack message pops up from the Platform team: Hey, we noticed UserService.fetchLoyaltyPoints() is throwing an error for 12% of users. Can you take a look? You open UserService.swift, and your heart sinks. Eleven dependencies. Twenty-five methods. Eight hundred forty-seven lines…

