Android 2027: nine phases of fundamentals, from Kotlin to system design, with AI woven through every stage
This article is translated from "Android Developer Roadmap 2027: What to Learn, What Interviews Ask, and Where AI Fits", original link https://medium.com/proandroiddev/android-developer-roadmap-2027-what-to-learn-what-interviews-ask-and-where-ai-fits-240ba695584a, published by Mayank Kumar on October 30, 2026.
If you are an Android developer, you might now be asking yourself three questions:
- What should I learn next?
- Since AI can already write code, does this knowledge still matter?
- What will interviewers ask me?
The past year has not made things easier. In May 2026, Google announced that Android UI is now Compose-first, and put the View components that Compose replaces into maintenance mode: only critical bug fixes, no new features, but also no plans to remove them. The same day, Android CLI 1.0 was officially released, and AI agents can build and run Android applications. Additionally, Google is reportedly piloting the use of Gemini for programming interviews.
This article answers all three of those questions. It is a complete 2027 roadmap: what to learn, the order in which to learn it, how deep to go, what interviewers will ask at each stage, and where AI fits in.
Short answer: First learn Kotlin and the Android platform, then coroutines, Compose, and architecture, then data, testing, production, and system design. Use AI at every stage, but move fast enough to quickly verify its results. Interviews will cover these topics, plus coding questions and design questions.
I consulted the official Android Developers and Kotlin documentation, recent public interview transcripts from developers, and what I have observed working in real Android production environments to build this roadmap. This is my own roadmap, not one published by Google or JetBrains.
What changes are facing Android developers in 2027?
A product roadmap is only useful when it matches the platform you will be shipping on. The changes of the past year affect what you should learn, so prioritize the newest material.
- February 1, 2027: The Play Store will block updates to apps that do not support 16 KB memory pages (targeting Android 15 and above). Learning tip: even if you have never written C++ code, you need to understand how native libraries and your build method affect this mechanism.
- 2027: Developer verification will expand to all apps released on certified Android devices. Learning tip: even apps released through channels other than the Play Store will need developer verification.
- August 31, 2026: New apps and updates must target Android 16 (API 36). Learning tip: you must understand API 36's behavior changes, not just the APIs themselves.
- July 2026: Google stated that over 68% of the top 1000 apps use Compose in production. Learning tip: Compose is the default expectation from employers.
- May 19, 2026: Compose-first: Views get only critical bug fixes, no new features. Learning tip: learn Compose first; learn Views in order to maintain legacy code.
- May 19, 2026: Android CLI 1.0 and Android Skills for AI agents. What to learn: agents can build and run Android apps; your job focus will shift to reviewing how they run.
None of these replace the fundamentals. They are mostly better suited to people who already understand lifecycle, state, and building.
How should you think about 2027?
Before listing topics, here are five rules. They matter more than any single library.
- Master the fundamentals before the tools. Libraries come and go every year. Lifecycle, state, threading, and data flow have not changed much in the past decade. Learn what will still apply in 2030.
- One project, rather than ten tutorials. Build one application and keep improving it at every stage. You learn far more from fixing your own designs than from completing someone else's projects.
- Use AI, but verify. Let AI write code, explain things, and make suggestions. Then verify its correctness with tests, profilers, or documentation. If you cannot verify it, you are not ready to ship it.
- Go deep in one area. Stay solid across all nine stages, then choose one area to go deep in: performance, architecture, testing, AI features, or Kotlin Multiplatform (KMP). Depth is key to being a senior engineer.
- Show your work. GitHub repositories, short documents, or talks are more convincing than certificates. They also give you real interview material.
Roadmap overview
Each stage depends on the previous one. Compose concepts do not make much sense before you understand state. State does not make sense before you understand lifecycle and process termination. Skip a stage and you can still ship features, but you will end up debugging by guessing. AI makes it worse, because it gives you more code to guess about.
- 1. Kotlin and DSA fundamentals: language, collections, generics, object-oriented programming (OOP), DSA, Git, Gradle. Pass bar: build and test a small Kotlin project, and explain your choices.
- 2. Android platform: components, lifecycle, process termination, window insets, permissions, background limits. Pass bar: explain what happens when the operating system terminates your app, and prove that state recovers.
- 3. Coroutines and Flow: structured concurrency, cancellation, dispatchers, StateFlow. Pass bar: handle cancellation, failure, and two simultaneous requests without bugs.
- 4. Compose UI: state, recomposition, side effects, Navigation 3, adaptive layouts. Pass bar: build a multi-screen app with loading, error, empty, and data states.
- 5. Architecture: UI layer and data layer, unidirectional data flow, ViewModel, dependency injection, modules. Pass bar: defend every functional layer you design.
- 6. Data and offline: HTTP, Room, DataStore, caching, sync, database migrations. Pass bar: features still work when the network is slow or goes down.
- 7. Testing: fakes, ViewModel and Flow tests, Compose UI tests, continuous integration. Pass bar: automatically catch real regressions.
- 8. Production: profiling, jank, ANR, Baseline Profiles, R8, security, version releases. Pass bar: reproduce a problem, fix it, and show before/after data.
- 9. System design: mobile design, sync, failure handling, internals. Pass bar: design an application, and defend two different options.
If you are already an Android developer, do not default to starting at stage one. Use the pass-bar checks as a test, and start at the first stage you fail.
The nine stages
Each stage contains the same parts: why it matters, what you must know, what to learn when you want to go deeper, where to start, the interview questions it prepares you for, and a self-test exercise.
Stage 1: Kotlin and DSA fundamentals
Kotlin is the language of Android. Mastering its syntax is easy, but understanding the language's capabilities and its limitations takes longer. This stage also covers data structures and algorithms (DSA), which most Android interviews still test in the coding round.
Must know
- Types:
valandvar, type inference, null safety (?.,?:,!!,let), smart type casts - Functions: default and named parameters, extension and infix functions, lambda expressions, higher-order functions,
inlineandreified - Classes: data classes, sealed classes, enum classes, object classes, companion object classes, value classes, interfaces, visibility
- Generics: variance (
in,out), star projection (*) and why it exists - Collections: read-only vs mutable collections, sequences,
map,filter,fold,groupBy - Equality:
==vs===,equalsandhashCode - Idioms: scope functions,
by lazy, class delegation,lateinit, exceptions - Design: object-oriented programming (OOP), SOLID principles, and common design patterns in Android development (builder, factory, observer, strategy, adapter, singleton)
- Data structures and algorithms (DSA) fundamentals: Big-O notation, arrays, strings, hash tables, linked lists, trees, graphs, recursion, basic dynamic programming
- Tooling: Git, Gradle basics (including Kotlin DSL and version catalogs)
Go deeper
- Kotlin and Java interop (
@JvmStatic,@JvmOverloads, platform types) - Reading Kotlin-generated bytecode
- DSL builders, contracts, context parameters
- Annotation processing with KSP
Where to start: First read the Kotlin documentation, then What's new in Kotlin 2.4 to see where the language is heading.
Interview questions
lateinitvsby lazy: when do you use which?- After compilation, what does an extension function generate? Can it access private members?
- Why can you pass a
List<String>but not aList<Any>? Why can you not pass aMutableList<String>? - (Advanced) What does
inlinechange at the call site? Why doesreifiedrequire it? - (Advanced) How does
by lazyhandle threading by default? When do you need to change it?
Try this: Write a sealed UiState with four states, and add a when function that handles them. Add a fifth state. Watch what the compiler does, and explain why that is the point of sealed types.
Stage 2: Android platform
This is the stage people often skip, and where many production bugs breed. The platform itself is also changing. Apps targeting Android 16 can no longer opt out of edge-to-edge display, predictive back is enabled by default, and orientation and window size restrictions are ignored on large screens. Apps targeting Android 17 lose the large-screen opt-out and require a new local network access permission.
Must know
- App components: Activity, Service, BroadcastReceiver, ContentProvider
- Intents: explicit and implicit intents, intent filters, PendingIntent, deep links and app links
- Lifecycle: Activity, Fragment (for existing code), and process lifecycle, process priority
- Configuration changes and process termination:
SavedStateHandle,rememberSaveable, what is saved and what is reloaded - Tasks, back stack, and launch modes
- Context types and when each is available
- Resources, qualifiers, and the manifest file
- Permissions: runtime permissions and special permissions, photo picker, scoped storage
- Notifications and channels; foreground services and their types
- Background restrictions: Doze mode, app standby, which apps can run in the background
- Windows: edge-to-edge display, window insets (space taken by system bars, keyboard, and notches), predictive back, large screens and foldables
- Main thread, Looper, and Handler
Go deeper
- Binder and inter-process communication
- Zygote and how app processes start
- App Startup library, multi-window, app bundles, and feature delivery
- Form the habit of reading the "behavior changes" page for each Android version
Where to start: Activity lifecycle and Saving UI states guides.
Interview questions
- Walk through the Activity lifecycle in detail when the user rotates the screen and then presses Home.
- How does a ViewModel survive configuration changes? Can it continue running after process termination?
singleTopvssingleTask: when do you use which?- What is the difference between a started service and a bound service? When must a service run in the foreground?
- (Advanced) How would you find a process-termination bug in your app?
Try this: Open your app, fill in a form, press Home, and then run adb shell am kill <your package name>. Open it again from recents. Did the form recover?
Stage 3: Coroutines and Flow
Many of the "happens sometimes" bugs in Android are concurrency bugs. This is also where AI-written code most often looks right while being wrong.
Must know
- Suspending functions;
launch,async,runBlocking - Scopes:
CoroutineScope,viewModelScope,lifecycleScope - Structured concurrency: Job, parent and child coroutines, and why scopes wait for their children
- Dispatchers and
withContext; never block the main thread - Cancellation: it is cooperative;
isActive,ensureActive, rethrowCancellationException - Exceptions: propagation,
CoroutineExceptionHandler,SupervisorJob,supervisorScope, timeouts - Flow: cold flows, operators (
map,combine,flatMapLatest,debounce),catch - StateFlow and SharedFlow,
stateInandshareIn,WhileSubscribed - Safe collection:
repeatOnLifecycle,collectAsStateWithLifecycle - Bridging callbacks with
callbackFlow; protecting shared state withMutex - WorkManager for work that must complete even when the app is closed
- Testing with
runTestand test dispatchers
Go deeper
- Continuations and compiler-generated state machines
- Channels and
select flowOn,buffer,conflate, and backpressure (when the producer is faster than the collector)- Threads, thread pools, and Java memory model basics
- RxJava interop for legacy code
Where to start: First the Kotlin coroutines guide, then Android's coroutine best practices.
Interview questions
- What is the difference between
launchandasync? - StateFlow vs SharedFlow: when do you use which?
- When one child coroutine fails, what happens to the other children? How does
supervisorScopeaffect this? - Where should an API call be made in a ViewModel, and which dispatcher should be used?
- (Advanced) Why is catching
CancellationExceptiondangerous? (See the code snippet in the AI section.) - (Advanced) How does Flow handle a fast producer and a slow collector?
Try this: Use async in a coroutineScope to launch two requests, and make one of them fail. What happens to the other? Switch to supervisorScope and explain the difference.
Stage 4: Compose UI
Google now says all Android UI should be built with Compose. Views still work and receive critical fixes, but no new features are added. The goal of this stage is not creating screens, but predicting when and why a screen needs to recompose.
Must know
- Composable functions, Row, Column, Box, and why modifier order matters
- Material 3 and theming
- State:
remember,mutableStateOf,rememberSaveable - State hoisting and unidirectional data flow (UDF): state flows down to the UI, events flow up
- Recomposition, skipping, and stability
- Side effects:
LaunchedEffect,DisposableEffect,rememberCoroutineScope,derivedStateOf,snapshotFlow - Lazy lists and why keys matter
- Navigation 3
- Forms, text input, and image loading
- Previews and CompositionLocal
- Semantics and accessibility
- Window size classes and adaptive layouts for phones, foldables, and tablets
- Basic animation
Go deeper
- The three phases: composition, layout, and drawing
- Custom layouts,
Modifier.Node, and Canvas drawing - The snapshot system and slot table (how Compose remembers state between recompositions)
- The Composable compiler stability report
- View interop for existing apps, and Glance for widgets.
Where to start: Thinking in Compose, then the Compose performance guide.
Interview questions
- What triggers recomposition?
- What is the difference between
rememberandrememberSaveable? - When do you use
LaunchedEffect? What happens when its key changes? - What makes a class stable? Why does that matter?
- (Advanced) A list stutters when scrolling. How do you find out why?
- (Advanced) How does Compose remember state between recompositions? (Slot table)
Try this: Enable recomposition counts in the Layout Inspector and scroll a list. Find a composable that recomposes too much, and fix it.
Stage 5: Architecture
Google's architecture recommendations are a good benchmark. They strongly recommend a data layer, including repositories, unidirectional data flow (UDF), and dependency injection. They recommend a domain layer only when business logic needs to be reused across multiple ViewModels, or when a ViewModel becomes too complex. Architecture should solve the problem you have. A small app does not need every layer.
Must know
- Layers: UI layer, data layer, and an optional domain layer
- ViewModel: what it owns, and what it must absolutely never hold (Context or View)
- UI state: a single
uiStateas aStateFlow, modeled with data and sealed classes - One-off events such as navigation or Snackbar
- Repositories, data sources, and single source of truth
- MVVM vs MVI-style state handling
- Dependency injection: constructor-first injection, Hilt modules, scoping, and
@HiltViewModel - Model mapping between layers; modeling errors
- Applying SOLID principles to Android code
Go deeper
- Modularization: feature modules and core modules, API modules and implementation modules
- Gradle convention plugins
- Clean architecture and its pros and cons
- Other dependency injection options, and when manual dependency injection is enough
- Google's Now in Android sample app as a reference
Where to start: The app architecture guide and the recommendations page.
Interview questions
- Why expose a
StateFlowinstead of aMutableStateFlow? - MVVM vs MVI: what problem does each solve?
- How does Hilt build a ViewModel?
- When does a domain layer earn its place?
- (Advanced) How do you split a large application into modules? How do you prevent bad dependencies between modules?
- (Advanced) Design an SDK architecture that other applications can embed.
Try this: Create a ViewModel that calls Retrofit directly. Move that call into a repository, write a fake repository, and test the ViewModel without a network connection.
Stage 6: Data, networking, and offline
In real applications, data is mostly delayed, missing, or stale. The genuinely interesting problems start with network failure.
Must know
- HTTP, REST, status codes, and API protocols
- JSON with kotlinx.serialization or Moshi
- Retrofit; OkHttp interceptors, timeouts, and cache
- Room: entities, DAOs, Flow queries, relations, transactions, and database migrations (changing the table schema without losing user data)
- DataStore (and SharedPreferences in legacy code)
- Offline-first: the local database as a data source
- Paging 3
- WorkManager for sync
- Errors, retries, backoff, and timeouts
- Authentication tokens and secure token refresh
- Image loading and caching
Go deeper
- WebSockets and FCM push
- GraphQL and the Ktor client
- SQL indexes and query performance
- Resolving conflicts from data edited on two devices
- Static data encryption
Where to start: The data layer guide and the offline-first guide.
Interview questions
- What does your app show when offline?
- How do you write a Room migration safely?
- Five requests fail at the same time because a token expired. How do you refresh the token only once?
- How do you build instant search without sending a request on every keystroke?
- (Advanced) Design sync for an app that is used offline for days.
Try this: Set up a list page to read only from Room and refresh via the network in the background. Turn on airplane mode. Does the content still display?
Stage 7: Testing and code quality
Just because something ran on your phone once does not mean it is done. Google's recommendation is to prefer fakes over mocks, and to test ViewModels, the data layer, navigation, and performance. The key is choosing what to test, not writing more test cases.
Must know
- Local tests vs instrumented tests, and when to use each
- JUnit and clear assertions
- Fakes vs mocks
- ViewModel and repository tests
- Coroutine tests:
runTest, test dispatchers, replacingDispatchers.Main - Flow tests
- Room tests with an in-memory database
- Compose UI tests with semantics; Espresso for View code
- Lint and static analysis
- Continuous integration (CI), running tests on every pull request
Go deeper
- Screenshot testing
- Robolectric
- Code coverage tooling, and why coverage is not the ultimate goal
- Gradle-managed devices and device clusters
- Finding and fixing flaky tests
Where to start: Android testing basics.
Interview questions
- Fake or mock: which do you prefer, and why?
- How do you test a ViewModel that uses
viewModelScope? - In a new feature, what do you test first?
- (Advanced) Your UI tests are flaky on CI. What do you check first?
Try this: Deliberately break a feature, for example by swapping two lines in a mapper. Does any test fail? If not, write a test that would fail.
Stage 8: Production engineering
Shipping is a different skill from building. In 2027, it also includes rules that did not exist a few years ago: 16 KB page support, annual target API deadlines, and developer verification.
Must know
- Debugging: Logcat, breakpoints, Layout Inspector, database and network inspectors
- Memory: profiler, heap dumps, memory leaks, LeakCanary
- ANR: causes and how to read traces
- Rendering: jank, frame timing, JankStats
- Startup: cold, warm, and hot startup
- Baseline Profiles and Macrobenchmark
- R8, keep rules, and app size
- Security: keystore, network security config, Play Integrity, not storing keys in the APK
- Release: signing, App Bundles, Play test tracks, staged rollouts, in-app updates
- Monitoring: crash reporting (e.g. Firebase Crashlytics), remote config, and Android Vitals
- Platform rules: target SDK upgrades, 16 KB pages, developer verification
Go deeper
- Perfetto and custom trace sections; logging and network inspection tools such as Timber and Chucker
- Native crashes
- Gradle build speed and configuration cache
- Feature flags and safe releases
- Privacy review and the Play data safety form
Where to start: Performance overview.
This is the part I care most about, because "the app is slow" is not a bug report you can fix. You need data first.
Interview questions
- What causes an ANR (Application Not Responding)? How do you debug ANRs in production?
- How do you find a memory leak?
- How do Baseline Profiles speed up startup?
- (Advanced) The crash rate rises after a release. Walk through what you would do in the next hour.
- (Advanced) How do you cut cold startup time in half? How do you prove it?
Try this: Measure cold startup with Macrobenchmark. Add a Baseline Profile. Measure again and record both results.
Stage 9: System design and advanced skills
At this point, you stop asking "how do I build this screen" and start asking "what can go wrong, and who is accountable". System design is not just boxes and arrows; it includes requirements, data models, failure cases, and tradeoffs you can explain.
Must know
- Clarifying requirements: number of users, scale, offline needs, and what matters most
- API design between the app and the backend
- Data models and cache strategy
- Offline sync and conflict handling
- Paging and image loading pipelines
- Real-time updates: WebSocket, FCM, polling, and their pros and cons
- Background sync, retry mechanisms, and failure handling
- Authentication and security
- Logging, metrics, and monitoring
- Module boundaries and team ownership
Common design questions
Chat app, news or social feed, photo gallery, offline notes or todo list, shopping cart with filters, maps or trip tracking, video player, file upload, LRU cache, SDK for other apps.
Go deeper
- Android internals: ART and garbage collection, Looper and MessageQueue, rendering pipeline (Choreographer, RenderThread, vsync)
- Leading migrations in large codebases
- Writing design documents and mentoring
Where to start: The app architecture guide and the modularization guide.
Interview questions
- Design a chat app that works offline.
- Design an image-heavy Instagram-like feed.
- Design an LRU cache.
- (Advanced) Design an SDK for other teams to embed. What should its API look like? How do you do versioning?
- (Advanced) How do you safely roll out a risky change to millions of users?
Try this: Design an offline-first chat app on paper. Then list three ways it could fail, such as duplicated messages, messages arriving in the wrong order, or messages lost when the process is killed, and explain how your design handles each one.
What role does AI play in the Android roadmap?
AI is not stage ten. It runs through every stage at the same time, in two different ways: using AI to do your work, and building AI into the applications you ship.
Part A: How Android engineers use AI
Google now ships the tools. Android CLI 1.0 lets agents such as Android Studio, Claude Code, or Codex create, build, and deploy Android applications. Android Skills give agents Google's best practices for tasks such as adaptive UI or test setup.
Must know
- Giving tools the right context and clear constraints
- Working step by step: plan, make a small change, review, test
- Reviewing AI code for lifecycle, threading, state, and security holes
- Checking whether AI-written tests fail, not just whether they pass
- What code and data can be shared with which tools
- Knowing when to stop prompting and read the documentation or source code
- The basics of how agents and MCP servers connect tools to models
Here is the kind of code AI tools often write. It compiles, works fine on the normal path, and looks clean in code review:
// Almost right
fun loadProfile() = viewModelScope.launch {
runCatching { repository.fetchProfile() }
.onSuccess { _uiState.value = UiState.Data(it) }
.onFailure {
crashReporter.log(it) // also logs normal cancellations
_uiState.value = UiState.Error
}
}
// Right
fun loadProfile() = viewModelScope.launch {
try {
_uiState.value = UiState.Data(repository.fetchProfile())
} catch (e: CancellationException) {
throw e // let cancellation finish
} catch (e: IOException) {
crashReporter.log(e)
_uiState.value = UiState.Error
}
}
runCatching catches every Throwable, including CancellationException. When the user leaves the page and the coroutine is cancelled, the first version treats it as a failure. It logs an error that never happened, and keeps executing code after the coroutine should have stopped. The Kotlin documentation is explicit: if you catch a CancellationException, you need to rethrow it.
Only someone who learned stage three can spot this. That is why AI makes fundamentals more valuable, not less important.
Part B: Building AI features into apps
Google's guide to choosing an AI solution opens with one rule: use the simplest model and tool that can do the job.
| Option | When to use it | Caveats |
|---|---|---|
| On-device (Gemini Nano, ML Kit GenAI API, Prompt API) | Privacy-focused, supports offline, no per-request cost | Only supported on some devices; best for short text tasks |
| Cloud (Firebase AI Logic, your own backend) | For large models, image and video input, complex tasks | Network, latency, cost, user data leaves the device |
| Hybrid | Use on-device when the device supports it, cloud as fallback | Two code paths to build and test |
Must know
- Choosing on-device, cloud, or hybrid for a feature
- Calling a model and streaming results into Compose state
- Structured output and safe parsing
- Timeouts, retries, rate limits, and error handling
- Cost and latency budgets
- Keeping API keys off the device, and keeping user data safe
- Checking model output and handling wrong answers in the UI
- AI-friendly UX: show progress, allow users to correct results
- AppFunctions, so on-device agents can use your app's features
- Classic ML Kit for vision and text tasks that do not need large models
Go deeper: embeddings and retrieval, evaluating model output with a test set, building agents.
Every item on this list is a stage 3, 6, 7, or 8 skill with a model in the middle. AI features do not replace the roadmap; they are a test of it.
AI interview questions
- Review this AI-generated ViewModel and find the error.
- How do you check AI-generated code before merging it?
- Should this feature be deployed on-device or in the cloud? Why?
- How do you prevent model calls from leaking user data or API keys?
- What is an MCP server? How does it connect tools to models?
What do Android interviews look like now?
Based on recent Android interview experiences developers shared publicly in 2026 (from SDE-1 to SDE-2), some patterns stand out. These are individual stories, not surveys, but they all point in the same direction:
- Coding rounds still appear. Most interviews include a data structures and algorithms (DSA) round (e.g. sliding window, two pointers, hash tables). Some ask for a small coroutine task. Android experience does not let you skip these.
- Android interviews test depth, not breadth. ViewModel internals and state retention after configuration changes come up repeatedly. So do coroutines. Interviewers ask "how does it work" and "what happens if", rather than "what is it".
- Design rounds start early. Even SDE-1-level interviews may include a design round. Topics include image loading libraries, analytics SDKs, infinite image grids, and shopping apps.
- Some companies add a machine coding round. You build a small runnable app live in 45 to 60 minutes, or as take-home work.
- AI has entered interviews. It comes up as a topic (what tools you use, what MCP is, how you use AI at work). In May 2026, Google reportedly ran a pilot letting junior and mid-level candidates use Gemini to read, debug, and improve existing code.
How to prepare for each round
- Coding (DSA): Tests problem-solving under time pressure. Preparation: starting from month one, practice a few medium-difficulty problems each week. Explain your approach out loud before writing code.
- Android and Kotlin depth: Tests stages 1 to 5. Preparation: use each stage's interview questions. Answer out loud, then check your answers against the documentation.
- Machine coding: Tests writing clean, runnable code quickly. Preparation: practice building a list, detail, and search app in 60 minutes. Prepare a project template you are familiar with.
- Mobile system design: Tests stages 6 to 9. Preparation: practice common design questions: requirements first, then data, API, cache, offline patterns, and failure handling.
- AI-assisted coding (where offered): Tests reading code and reviewing AI output. Preparation: practice using AI to fix bugs in code you did not write, and explain every change you accept.
- Hiring manager and behavioral: Tests accountability and judgment. Preparation: prepare four real stories: a tricky bug, a disagreement, a mistake, and something you led.
What gets asked in an interview depends on the company and your level. Do not count how many questions you memorized; count how many you can explain, build, and handle "what if" scenarios for.
What can you learn later?
A roadmap that treats everything as equally important helps no one. These topics are only worth learning when your product, team, or next role needs them.
- Kotlin Multiplatform and Compose Multiplatform. JetBrains released Compose Multiplatform stable for iOS in May 2025, and Kotlin Multiplatform is a focus of the Kotlin roadmap. It is a powerful skill, but it builds on stages 1 to 7. Learn it after completing those stages, or when your team shares code.
- XML Views, Fragment, and RxJava. Many production apps still use them, and Fragment lifecycle still comes up in interviews. Learn enough to maintain and migrate them. For new code, prefer Compose, coroutines, and Flow.
- Specialized APIs. Bluetooth, camera, media, location, health, Wear OS, TV, Auto, and XR. Go deep when a product needs it. But everyone should master the basics of privacy and permissions.
The rule is simple: master the fundamentals first, then dive deep based on the product's specifics.
Where should you start based on your experience?
- Android newcomer (0-1 years): Start at stage 1 and go in order. Google's Android Basics with Compose course covers the early stages well. Start coding exercises early. Stay away from AI features and KMP for now.
- Working Android developer (1-4 years): Test yourself with the "pass bar" column. Stages 2, 3, and 7 are the easiest to skip while shipping features: process termination, cancellation, and tests that catch real bugs. Check those first, then add system design.
- Senior developer (5+ years): Stages 8 and 9 are your job. Fill in both AI tracks, and make sure you can still answer stages 2 and 3 off the cuff, because you will be reviewing everyone's AI-written code.
Should you build several small apps or one real project?
One project, improved iteratively, teaches you more than a dozen tutorial apps. It also gives you something real to talk about in interviews.
A good roadmap project should have:
- three to five Compose screens
- a remote API plus Room, with offline behavior
- a ViewModel, a repository, and a
uiStatefor each screen - loading, error, empty, and data states
- unit tests, some UI tests, and continuous integration (CI)
- one performance issue you measured and fixed
- a README with an architecture diagram and your decisions
Once the system is stable, add one AI feature that solves a real user problem, such as search or summarization. That one feature will cover streaming output, error handling, cost, privacy, and testing. Add it last, not first.
How long does this take? A sample 6-month plan
If you already know how to program, here is a sample plan with about 12 to 15 focused hours a week. At 8 to 10 hours a week, expect closer to 9 months. If you already pass any stage, skip it.
- Month one: Kotlin and DSA fundamentals, Git and Gradle
- Month two: Android platform, lifecycle and process termination
- Month three: Coroutines, Flow, and Compose UI
- Month four: Architecture, data, and offline features
- Month five: Testing, performance, and releases
- Month six: System design, project polish, and mock interviews
Three things run through all six months: a few coding problems each week, both AI tracks, and your one project.
How I follow this roadmap in public
I have been developing Android apps for over six years. I still think a product roadmap is not a one-time thing, but something to constantly review and refine.
At work, I built a reminder feature that pings the user every few minutes until they open an urgent message. The simplest version used an in-app timer, but once Android terminates the process, the timer stops working, and Doze mode itself delays timers. What ultimately worked was handing the repeating loop to WorkManager and saving the current message ID to disk instead of memory. Process termination, Doze mode, and background restrictions are stage 2 interview topics, and this feature is when those concepts stopped being interview theory for me.
So now I am going through these steps again, this time at the production level: read the docs, build a small example, find what breaks, and then explain why from memory. AI helps at every step, but it does not replace testing or review.
Posts will be published on the blog, and videos on YouTube. I will keep updating this roadmap as Android changes.
FAQ
Will AI replace Android developers? I do not think the current evidence points in that direction. AI tools do write more code, but more developers are skeptical of their accuracy (46% vs 33%). In the end, someone still has to decide what to build, verify it runs on real devices, and own it in production. Some interviews are also moving in this direction: from writing code to reading, reviewing, and fixing it.
Do I need to learn Kotlin Multiplatform to get an Android development job? For most native Android roles, no. Kotlin Multiplatform helps when a team needs to share code with iOS or Web teams. It is recommended to learn Kotlin Multiplatform after mastering the fundamentals of Kotlin, coroutines, architecture, and testing, because Kotlin Multiplatform builds on those.
Do Android developers really need data structures and algorithms (DSA)? Generally yes. Even SDE-2-level Android interviews still commonly include a coding round. DSA also helps with daily work: choosing the right collection, keeping lists fast to update, and optimizing cache size. Practice a little each week rather than cramming before an interview.
Build the foundation first, then dive deep
No tech stack guarantees you an Android career in 2027. But the order is clear: Kotlin, platform, concurrency, Compose, architecture, data, testing, production, and finally system design. AI runs through all of it, as both tool and feature. Interviews will test this path, plus coding and design ability.
The goal is not to learn every tool.
The goal is to understand the problems, build something effective, and keep improving as Android changes.
Which stage are you working on now, and which one have you been putting off?
Originally published at https://imayankkumar.com on October 30, 2026.
Welcome to search and follow the WeChat public account "稀有猿诉" for more quality articles!
Protect originality, do not repost!