When leading a team of iOS and Android developers and creating the same application for both platforms, you are bound to face one (or all) of these issues:
1. PRODUCT: Tech debt and architecture issues are slowing development
Your team is having difficulty adding new features because too many parts of your codebase are tangled and interconnected. As a result, new bugs emerge whenever you add new features or fix existing bugs. Your team is constantly putting out fires when they could be innovating on the product.
Android and iOS engineers should be able to deliver on both platforms. However, modern teams often lack a structure for leveling up engineers to deliver on both platforms. Furthermore, with little or no collaboration, this makes it particularly difficult to achieve feature parity between the two apps. It’s just too labor-intensive and requires too much management time.
3. PROCESS: Your engineering approach could be better defined
It could be that your iOS and Android engineers work at different speeds, making it tough to keep feature releases in sync. At the same time, independent backlogs can make some things slip between the cracks. And if some features are deliberately delivered on one platform before the other, it’s more difficult to predict when the second will be available because the code isn’t being shared. In effect, separate apps and separate teams result in divergent apps and user experiences.
(diagrams by Sam Hill, designed by Nelmer De La Cruz)
How to get started
So where do you start with Kotlin Multiplatform (KMP) — In a word, small.
PRODUCT: Start small — and avoid big risks
Start by isolating a single layer or component or feature. For example, you can isolate the persistence layer, in effect creating a single database implementation for both platforms.
PEOPLE: Create platform-agnostic teams
With KMP, your development teams no longer have to be siloed. By expanding the common ground and simplifying platform code, you gain an opportunity to easily level up your platform engineers — both iOS and Android — to become mobile engineers. A few low-risk ways to do this?
Introduce flex time for Android engineers to learn iOS, and vice-versa.Insist the same platform-specific developer tackle the same user story on both platforms. (This is understandably a slower process but it has higher long-term ROI.)Perform shared code reviews. (For example, have an Android developer write a pull request, and get an iOS developer to review it.)As tasks start becoming more multiplatform, code reviews start giving developers opportunities to see complete stories and draw parallels between platforms
PROCESS: Promote D.R.Y. (Don’t. Repeat. Yourself)
Creating a platform-agnostic environment extends beyond just development. It’s equally important to consolidate the processes that drive development. Tracking a multiplatform feature in a single place makes it simple to maintain platform alignment. Having all of you multiplatform developers participating in the same planning processes improves communication. Consolidated defect tracking makes sure bugs don’t fall through the cracks on a platform.
So, if you are looking for opportunities to accelerate and optimize development, KMP is a great way to begin streamlining and future-proofing your product, people, and process:
- Product: KMP focuses on sharing code at the business logic layer (where most architecture issues occur) and enables you to address the issue in a piecemeal fashion — no big decisions. You start small at your own pace and see the results before continuing.
- People: Using KMP, your engineers will be better prepared for the future, increasing the value of your department to the wider organization because they can deliver on multiple platforms.
- Process: With KMP at the center, you introduce better engineering processes that promote code sharing and multiplatform development.
For engineering managers interested in starting small with Kotlin Multiplatform and reducing the risk of adoption, we’re happy to announce The Touchlab Refactory to Hacker Noon readers.
The Touchlab Refactory deploys a dedicated code logistics team to perform an architectural review, refactor code, and provide a detailed roadmap for future development in Kotlin Multiplatform.
How it helps mobile engineering leaders?
- Incremental refactoring
- Defined timeframe
- Separate work track, dedicated team
- More testing, less time
- Improved architecture
- Less duplication
- Kotlin Multiplatform expertise