Companies whose apps are compiled from millions of lines of code usually also set up a mobile platform team. At this scale, the company will have dozens of native engineers or more. They’ll run into the problem of native development tools starting to have performance or process issues at this scale, with no good off-the-shelf solutions. This was the case at Uber, and I hear the same of companies like Facebook, Spotify and similar places.
Build time at this scale is one of the biggest problems. By at scale, I mean building a project with a few million lines, and doing this a dozen times per engineer, times a hundred or more engineers. Throw in running a full automation test suite, and it’s not hard to justify hiring a few people to build something that’s better than what most services have to offer.
Should you use Bazel, Buck, Gradle or [xcodebuild](https://developer.apple.com/library/archive/technotes/tn2339/_index.html? What are optimizations you can make on the build? This problem space will keep engineers busy: especially as the build tools area is an ever evolving one.
The workflow of shipping more than a few apps is also challenging. Each app needs to have checkpoints from the build cut, through test phases - localization tested, manual and smoke tests, performance tests, beta users and others. Orchestrating this process for one app is not that difficult. However, keeping track of dozens of build trains, across iOS and Android in an efficient way is something that internal tools can do better than anything you can readily buy. You’ll find yourself needing to build a build or release train for your own needs.
The maturity of tools keeps improving across both iOS and Android - I personally expect more off-the-shelf solutions to become available in the coming years. Still, compare the mobile tooling ecosystem to that on the backend, and tooling for large mobile apps seems to be less of a solved problem than it is for large backend systems.
Building Mobile Apps at Scale
"An essential read for anyone working with mobile apps. Not just for mobile engineers - but also on the backend or web teams. The book is full of insights coming from someone who has done engineering at scale."
- Ruj Sabya, formerly Sr Engineering Manager @ Flipkart