iOS at Scale(ish)
My company has one of the largest mobile engineering teams in Boston with more than 60 iOS and 20 Android engineers, and we are continuing to grow. As we grew, we encountered scaling problems that impacted our entire mobile team. Our transition to Swift, while having many benefits, caused high compile times to become a bottleneck for our developers. Our codebase had become a monolith, with many parts intertwined and tangled. Code ownership and code quality were tough to measure, define, and keep consistent. Additionally, our organization was expanding beyond our flagship app, which meant we needed ways to efficiently share code across the platform.
As part of our strategy to address these growing pains, we decided to modularize our codebase. We have since created over 40 modules that are shared across various teams and apps within our iOS organization. Breaking down our codebase has allowed us to continue to quickly scale, ship new features, and create new apps. It has also forced us to think more critically about how we design, create, and structure our code. The strategies we used to implement modularization can be applied to teams of any size in order to help achieve the same gains we did.
– What led us to modularization?
– What is a module?
– How do all of our modules fit together in our codebase?
– How did we implement this huge codebase restructure?
– How does modularity reduce compile times and improve code quality?
– What’s next for us?