BBC Rob Pridham Dec 7, 2020

Modernising a Legacy Android App Architecture: Part Two - MVVM

Article Summary

Rob Pridham from BBC Sport ditched the trendy frameworks and went old school—callback listeners and view controllers—to modernize their Android app. Controversial? Maybe. Effective? Absolutely.

In part two of BBC Sport's Android modernization series, Pridham explains why his team rejected popular solutions like RxJava, LiveData, and Data Binding in favor of a simpler MVVM+C pattern. The approach prioritizes comprehension over cleverness, using humble callbacks and view controllers to connect fragments, viewmodels, and views.

Key Takeaways

Critical Insight

BBC Sport's deliberately simple MVVM+C architecture with callbacks outperformed complex reactive frameworks by making the codebase more maintainable and new developers productive faster.

The team's experience applying this pattern on BBC Sounds revealed unexpected benefits that only emerged over time—and some surprising challenges with event chains.

About This Article

Problem

BBC Sport's Android codebase had accumulated multiple conflicting UI patterns across different development eras. MVC, MVVM, MVI, and MVP all coexisted, which left new developers confused about where presentation logic should actually live and made architectural standards unclear.

Solution

Rob Pridham's team implemented MVVM+C, an opinionated pattern that uses callback listeners and view controllers as explicit glue layers. They rejected RxJava's massive API surface area and avoided committing to LiveData early on, which helped them maintain hexagonal architecture principles.

Impact

The consistent pattern made it easier to onboard graduate developers. They could look at tangible examples across all feature implementations and understand the approach quickly. The simplified approach also reduced how much framework complexity new developers had to learn alongside Android, Kotlin, and domain knowledge.