Android developer skills: what to learn first, and what can wait
Android skills age fast, but the ones underneath them don't. Get state, threading and the app lifecycle right in Kotlin, and every new Jetpack library becomes an afternoon of reading instead of a rewrite. Kotlin Multiplatform, custom Gradle plugins and deep graphics work can wait until a team actually needs them from you.
291 open jobs
Step oneGets you the interview
Idiomatic KotlinScreeners skim your code for data classes, sealed interfaces for UI state, null safety without a pile of double-bang operators, and extension functions used with restraint. Kotlin that reads like translated Java is the fastest way to get passed over.
Jetpack Compose state handlingAnyone can lay out a screen. What gets you a call is knowing remember versus rememberSaveable, hoisting state out of a composable, and collecting a StateFlow with collectAsStateWithLifecycle so the screen doesn't leak work in the background.
Coroutines and Flow basicsYou should be able to launch work in viewModelScope, switch to Dispatchers.IO for disk and network, and explain why a Flow stops when nobody collects it. Take-home tasks almost always hinge on this.
A networking and storage layerRetrofit or Ktor for the API, Room or DataStore on disk, and a repository class that decides which one wins. A portfolio app that works on a train with no signal tells a hiring manager you've thought past the happy path.
Step twoGets you the offer
Lifecycle and process deathInterviewers love asking what happens to your screen when the system kills the app in the background. Answering with SavedStateHandle, a Don't Keep Activities test and a clear story about configuration changes is what separates a mid-level hire from a junior one.
Testing that catches real bugsUnit tests on ViewModels with Turbine for Flow, fake repositories instead of mocking everything, and a few Compose UI tests on the flows that make money. Showing you know which tests are worth writing matters more than a coverage number.
Dependency injection with HiltMost teams you'll join already use Hilt or Dagger, and the offer round often includes reading an unfamiliar module graph. Knowing scopes, qualifiers and why a singleton holding an Activity context leaks memory saves your future teammates a painful review.
Modular Gradle buildsBig apps split into feature and core modules with version catalogs and convention plugins, and slow builds are a daily complaint. If you can explain why a change in one module rebuilds half the app, you sound like someone who's worked on a real codebase.
Step threeGets you promoted
Startup and rendering performanceSenior Android engineers profile with Perfetto and the Android Studio profiler, add Baseline Profiles, and track down Compose recompositions that make a list stutter on a cheap phone. Shaving time off cold start is the kind of win product managers actually notice.
Release engineering in the Play ConsoleOwning staged rollouts, halting a bad release, reading Android vitals and keeping up with target SDK deadlines is unglamorous work. The person who runs it calmly becomes the person trusted with the whole app.
Background work and battery rulesWorkManager constraints, foreground service types, exact alarm permissions and manufacturer battery savers all break sync features in different ways. Designing sync that survives those rules is a staff-level problem most teams keep getting wrong.
Architecture decisions other people followWriting the doc that picks a navigation approach, sets the rules for module boundaries or plans an XML-to-Compose migration is how you move from lead on a feature to lead on the app. The code matters less here than getting a team to agree.