PPrepLearn
Progress Β· 0/5 phases

πŸ“¦ πŸ“¦ 90-Day Android/Kotlin/KMP Roadmap

3 min read Β· Notion

πŸ“¦ Frontend β†’ Android/KMP Engineer transition. 90 days. 5 phases. From Kotlin basics to production-grade Kotlin Multiplatform apps.


πŸ“Œ How to use this template

  • Work phases in strict order β€” every phase is a prerequisite for the next
  • Daily ritual: study the concept β†’ write code β†’ break it intentionally β†’ fix it β†’ log one insight
  • Use the Daily Tracker to stay accountable
  • Open each Phase page for full breakdowns, projects, real-world references, and mistake corrections

πŸ’‘ The #1 rule of Android/KMP engineering: The platform is the constraint. Understanding the Android lifecycle, the JVM memory model, and the Kotlin compiler internals is what separates engineers who fight the framework from engineers who use it correctly.


πŸ—ΊοΈ Roadmap at a glance

PhaseDaysFocusKey Output
Phase 1 β€” Kotlin FoundationsDays 1–15Language internals, coroutines, type systemIdiomatic Kotlin fluency
Phase 2 β€” Android CoreDays 16–35Lifecycle, Jetpack, Compose, NavigationProduction Android app skeleton
Phase 3 β€” Architecture & PatternsDays 36–55MVI, Clean Architecture, DI, testingScalable, testable app architecture
Phase 4 β€” Kotlin MultiplatformDays 56–75KMP setup, shared logic, platform APIs, CMPShared business logic across Android + iOS
Phase 5 β€” Expert Android/KMPDays 76–90Performance, CI/CD, advanced Compose, productionStaff-level mobile engineering

⚑ The Android/KMP Engineering Decision Framework

Ask these questions in order for every feature you build:

  1. Where does this logic live? β€” shared module (pure Kotlin, no platform) or platform module?
  2. Who owns the state? β€” ViewModel, Repository, or UI local state?
  3. How does it survive configuration change? β€” ViewModel survives rotation. Composable state does not.
  4. How does it survive process death? β€” SavedStateHandle or persistence layer.
  5. How is it tested? β€” unit test (pure Kotlin), integration test (Android), or UI test (Compose)?
  6. What is the threading model? β€” which coroutine dispatcher? Is it safe to call from the main thread?

πŸ“Š My progress

  • Current phase: Phase 1
  • Current day: Day 1 of 90
  • Apps shipped: 0
  • KMP modules built: 0

  • ☁️ Phase 1 β€” Kotlin Foundations
  • πŸ“± Phase 2 β€” Android Core
  • πŸ—οΈ Phase 3 β€” Architecture & Patterns
  • 🌐 Phase 4 β€” Kotlin Multiplatform (KMP)
  • 🧠 Phase 5 β€” Expert Android/KMP

πŸ’» Tech stack this roadmap builds on

LayerTechnology
LanguageKotlin 2.x
UI (Android)Jetpack Compose
UI (iOS via KMP)Compose Multiplatform
ArchitectureMVI + Clean Architecture
DIKoin or Hilt
AsyncKotlin Coroutines + Flow
NetworkingKtor Client (KMP)
Local DBSQLDelight (KMP) or Room (Android)
BuildGradle Kotlin DSL + Convention Plugins
CI/CDGitHub Actions + Fastlane
TestingJUnit5, Turbine, Paparazzi, XCTest

πŸ“… Android/KMP Daily Tracker

Related