Nebil Kriedi wrote this article about scaling up the development of the Depop iOS application, both in terms of number of features developed in parallel, and in terms of number of contributors to the code base.
Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.
Author explains how in this context it is critical to modularise a large and old codebase, into small, independent and testable components. Along the way we will also share some of the solutions we adopted to deal with dependency management and to optimise build performance in a continuous delivery setup.
The article is split into:
- Codebase overview
- Initial approach to defining the clear boundaries between the main macro-components
- Explaining what is a module?
- Assessing the effort
Good read for anybody working in a fast-growing company! Sample project repository also provided.[Read More]