Gabe Giro

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.

AndroidKotlinMVVMArchitecture

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.