Kevin Finn, an Engineering Manager on Betterment's mobile team, works to build mobile experiences and craft object-oriented abstractions. Prior to his role at Betterment, Kevin worked at Google in San Francisco. Kevin studied Computer Science and Math at Cal Poly San Luis Obispo.
When building iOS apps, there's a tendency to just put everything in the view controller, leading to what many have called the massive view controller anti pattern. This leads to many problems: these monolithic classes are harder to understand, impossible to compose, and generally force engineers into rewriting common logic in many view controllers instead of finding good abstractions. On top of all of this, they're extremely difficult to reuse: what happens when different interactions with your app have overlapping steps?
Learn through a series of examples how the iOS team at Betterment addresses this problem, using light view controllers that are responsible for as little as possible, instead delegating their logic to models, network-backed resource objects, data sources, views, and flow objects. This way view controllers are solely responsible for what they're best at: lazily loading and configuring a view, presenting it on screen, and delegating everything else to modular, reusable components. This allows us to achieve an extremely high level of code reuse without overly complicated components.