Modernizing an inherited healthcare Android app

Senior Android Developer · Inland Empire Health Plan · 2019–2021

Problem

I inherited a government-funded healthcare Android application from the third-party developers who had originally built it. It had 7k+ active users, an aging Java and Kotlin codebase, real stability problems in production, and it had fallen behind the organization’s web platform on features. Members were using it to look at their own medical information, so the bar for correctness was not negotiable — and there was one Android developer to hold all of it.

My role

I was the sole Android developer: architecture, modernization, and the entire release lifecycle. That included working with the web and iOS teams on API design and UI mockups, and communicating status and escalations to both business and technical stakeholders.

What I owned

Refactoring the legacy codebase and converting key classes to Kotlin for readability, maintainability, and performance. Parsing and processing complex healthcare data to present users their medical histories. SQL queries to identify user cohorts and support feature testing, plus custom Google Analytics reports for business stakeholders. Azure CI/CD pipelines and the full Google Play release lifecycle — signing, publishing, and post-release monitoring. And production monitoring through Firebase Crashlytics and Kibana, which is where the critical stability issues surfaced and got debugged.

Key decision

I converted key classes to Kotlin incrementally rather than rewriting the app. A rewrite would have been cleaner on paper, but it would have frozen releases for months in a codebase with 7k+ users already waiting on feature parity, and one engineer has no margin for a big-bang cutover. Converting the classes that were actually causing instability meant the app kept shipping the whole time, at the cost of living with a mixed Java/Kotlin codebase for longer than a purist would like.

Result

Stability improved and the app closed the feature gap with the web platform, contributing to a roughly 20% increase in downloads. The Azure pipelines cut deployment time by approximately 50%, which mattered disproportionately for a solo-owned release process.

Built with: Android · Kotlin · Java · Azure DevOps · Firebase Crashlytics · Kibana · SQL