I spent a little time watching some of the developer-focused presentations given at the recent Swift Heroes event, and an insightful explanation of the benefits of modular iOS app development from JustEat principal developer, Alberto De Bortoli is worth flagging up.
Fast growth? New problems…
Since its inception, JustEat has grown quickly; this led it to adopt a modular approach to development quite early on, De Bortoli explains.
The move followed a couple of years during which the company operated two distinct teams to handle development of its apps: One team was dedicated to the UK, where the company began, while the other handled apps for international markets.
Unfortunately, while this helped the UK team develop faster, the decision to run two groups also accelerated rapid code diversification as the apps diverged. As a result, the company became less able to deliver consistent experiences.
That’s when the decision to bring the teams together again took place. But doing so posed other problems, in part, because developers had become a little protective over the work they had done.
To reconcile this, the company decided to adopt a modular approach. It needed to find some way to move app development forward and — as it was expanding rapidly — completely rewrite existing code to avoid unpredicted consequences.
Lay strong foundations
Strong foundations are critical to app development, even more so when building modular apps. De Bortoli believes one of the first requirements is to “Integrate people first, technology later,” he said.
This makes sense at every level of the enterprise, I think. Digital transformation demands the erosion of siloes in favor of positive collaboration.
De Bortoli explains: “We decided to gradually and strategically modularize parts of the mobile products and onboard them onto the other codebase in a controlled and safe way.”
The team also rewrote and improved elements of the code using Swift, delivering robust improvements at a foundational level. These efforts extended to developing a framework with which to A/B test apps and enable/disable specific feature modules, enabling the app to scale to local market need.
For De Bortoli, adopting this kind of approach — in which functionality is separated into independent, interchangeable modules, each of which contains all that’s required to do one aspect of the app’s overall task — enabled JustEat to reuse parts of the code across multiple products, and helped it unify development streams.
His experience is that modular architectures are easier to work with than vast, monolithic code bases, at least to some extent, though the workload of ensuring all these components work together poses additional strain.
The advantage of the approach is that multiple developers can work on different modules within the overall solution simultaneously, and can iterate those modules more rapidly. That’s a huge benefit, though not one that every app developer needs.
“Benefits become tangible only after a certain complexity threshold is crossed,” he says.
Several years on and the company seems to have an app infrastructure that’s sufficiently robust to handle a huge range of different needs, with features that can be enabled, disabled or personalized for specific audiences and geographies.
The JustEat app needed this because it is offering menus from over 205,000 restaurants, handling thousands and thousands of orders from its 54 million customers, in multiple languages across multiple nations.
It does this while supporting personalized experiences, special offers, mobile payments and all wrapped up in a highly secure, approachable app wrapper.
In what are very much layman’s terms, I like to think of this approach to app development as a little like building multiple “widget” apps for separate tasks that complement each other. If you want a more in-depth account, De Bortoli has an excellent guide here.
In the case of JustEat, modular development has have helped the company deliver scale and agility across its mobile/iOS operations, and — as you might expect, given this conversation emerged at Swift Heroes — Swift has been an important enabling technology for the attempt.