Swift Heroes 2024

Swift Heroes 2024

De-coupling Dependencies through Inversion
2024-04-19 , Auditorium

At Skyscanner we have a large iOS codebase that has been evolving for over 10 years. Until recently, the dependencies between modules stopped us from compiling any single module independently. With compilation times growing to 8-10 minutes per build, this was becoming a serious toil for our engineers and a new approach to our module architecture was desperately needed.

This talk describes how the Skyscanner iOS team is using dependency inversion to break apart our dependency tree, decoupling features and enabling us to build each module independently. This reduces toil for common development tasks and is allowing us to make cost savings on our CI.

The techniques described here enable any codebase to scale both the amount of code and the team size while keeping compilation times small. Projects of any size can benefit from decoupling features in this way, as using dependency inversion allows flexibility to change implementations without the need to change code in higher level parts of the project and embraces composition as the primary mechanism to extend functionality.

Michael has worked as an iOS developer in a broad range of tech companies with over 10 years of iOS development experience. His first senior role was for the music streaming company Omnifone where Michael worked on the music streaming app ‘Rara’ before this product was acquired by Apple. He then moved to The Telegraph Media Group as an iOS team lead working with developers from across Europe to build The Telegraph’s suite of mobile applications. In his current role at Skyscanner Michael has become a mobile expert for Skyscanner’s identity platform, helping to architect their password-less identity solution, and building an OAuth based approach for the secure transfer of both anonymous and authenticated traveller’s identities.