The first Melbourne Google Developer Group (GDG) Devfest conference since Covid was held recently at the REA offices in Richmond with about 18 talks across two rooms covering Android. AI/ML, Flutter, Web, cloud and more.
It was great to catch up with so many old colleagues/friends and hear how various Android teams were tackling problems relating to build configurations and build times, architecture consistency, tech debt and structuring re-usable Jetpack Compose components. Here’s a quick summary of the Android content I found most useful and interesting.
Dependency Management & Build Performance
During this talk the speaker ran performance tests on three variants of Gradle’s build system: Groovy, Kotlin DSL and Version Catalogs. Version Catalogs came out on top with what looked like about a 15 percent faster build time.
It also has several other nice features including dependency bundling — where groups of dependencies can be assigned to a single dependency — which is particularly useful for multi-module apps, and auto-completion in Android Studio.

Architecture Unit Testing with ArchUnit
When you have about 75 Android engineers working on a single codebase, like the ANZx team, it can be hard to maintain consistency across naming, structure and other elements of the app architecture. The ArchUnit Java library tries to help with this by using reflection to provide a rich set of unit testing APIs.

Enforcing naming conventions on class types can be done fairly easily:

I also liked the look of the “onion” architecture and layer checks to ensure correct access:

Understanding Tech Debt
In short, we don’t take tech debt as seriously as we should: financial debt isn’t considered optional but we somehow take on tech debt with little concern for paying it off. Also, tech debt will and should increase organically over time as we learn new things and the tooling improves so there needs to be a fairly aggressive effort to address it or we will likely find ourselves talking about a complete app re-write in about five years!
Taking on tech debt due to delivery pressure should be avoided as it is avoidable, unlike the reasons above. At ANZx the team aims for zero tech debt knowing that they will never actually get there.

Creating a Compose Design System
I agree that the full power of Jetpack Compose cannot be realised without a well-organised collection of re-usable and tested components. In this talk we were give a lot of useful tips for achieving this including:
- Create a boundary between the app and design system with standalone UI module.
- Create a UI catalog app to make components easily discoverable. I’ve used the Showkase library for this and recommend it as a quick way to setup a Compose component catalog.
- The rule of three: Once a UI element is used in three places it should be added to the catalog as a re-usable component.

A big thanks to all the organisers and speakers for putting together a great event!

