Yahoo (Verizon Media)
Yahoo Daily Fantasy — Android Architecture Refactor
Contributed to the Yahoo Daily Fantasy Sports Android app as an engineer focused on architectural improvements — migrating legacy patterns to MVVM to make the codebase easier to extend and test.
Scope
I worked on the Yahoo Daily Fantasy Sports Android app in an engineering capacity focused specifically on architectural improvements — not product strategy, launch planning, growth, or transaction infrastructure. My work was to take parts of the existing codebase that had grown organically and migrate them toward a cleaner, more testable structure.
This case study is about that scope. It is intentionally narrow: anything outside the architecture refactor was owned by other teammates and is not mine to claim.
What I Did
Migrating to MVVM
The portions of the Android app I touched used older patterns that mixed view logic, data fetching, and state directly in Activity/Fragment classes. I refactored these toward MVVM so that:
- ViewModels owned the screen state and exposed it as observable streams.
- Views became thin renderers of that state — no business logic in the UI layer.
- Repositories abstracted the data sources so ViewModels didn’t talk to network/cache code directly.
The benefit of the refactor wasn’t a flashy feature — it was that the affected screens became easier to unit-test, easier to reason about, and easier for the next engineer to extend without breaking unrelated behaviour.
Patterns Applied
- Unidirectional data flow within each ViewModel — a single source of truth for screen state.
- Sealed classes for state representation where it made sense (loading / loaded / error rather than scattered boolean flags).
- Dependency injection at construction boundaries so the new ViewModels could be exercised in isolation.
What I Did Not Do
To be explicit (because this is the lie I’m correcting on this page): I was not responsible for the product’s launch timeline, its download numbers, its store rating, its transaction throughput, or its real-time data layer. Those outcomes belong to the broader team and to product/business decisions that were not mine.
Why This Matters For Your Project
If you have an Android codebase where the original architecture has stopped scaling — screens that fight every new feature, classes that have grown to thousands of lines, no clean way to unit-test the logic — that’s the kind of work I’m well-suited for. See the HBO GO case study for a larger-scope architecture engagement on the same platform, and my Android Development services page for how I structure these engagements.
Related service
Android Development services