FuturByte

Hire Android and Kotlin developers

Android development is Kotlin across an enormous range of devices, and hiring for it means finding someone who designs for fragmentation rather than for their own handset.

What Android and Kotlin actually is

Android development means building applications for Google's mobile platform, now overwhelmingly in Kotlin rather than Java. Kotlin is a modern typed language with null safety in the type system, full interoperability with Java, and first-class support from Google as the preferred language for the platform.

The defining characteristic of Android is variety. Applications run on an enormous range of devices with different screen sizes, processors, memory, manufacturer modifications and operating system versions, many of them years old. An application that performs well on a current flagship can be unusable on the hardware a large part of the actual user base owns, and that gap is invisible to a developer testing only on their own phone.

As with iOS, the platform is midway through an interface transition. The older approach declares layouts in XML and manipulates them imperatively; the newer one is a declarative toolkit written in Kotlin. New work generally starts in the declarative toolkit, a great deal of existing code is in the older style, and most substantial applications contain both.

The part that separates seniors from mid-levels

Lifecycle is the concept that defines Android development. The system can destroy and recreate parts of your application at any time, for reasons including rotation, memory pressure, configuration changes and the user switching away. State that is not deliberately saved is gone. A very large share of Android bugs are lifecycle bugs: work that continues after its screen is destroyed, state lost on rotation, or callbacks firing into objects that no longer exist. Developers who understand the architecture components and where state should live write substantially more robust applications.

Coroutines are the second area, and they are how asynchronous work is done on modern Android. What matters is scope: work launched in the right scope is cancelled automatically when its screen goes away, and work launched carelessly outlives it and leaks or crashes. Candidates who talk about structured concurrency and lifecycle-aware scopes are describing the correct model. Those who launch coroutines globally are describing a class of production bug.

The third is the declarative toolkit's recomposition model. Composable functions re-run when the state they read changes, and the framework decides how much to re-run. Understanding state hoisting, stability and what causes unnecessary recomposition is the practical performance skill, and it is where interface jank originates on exactly the low-end devices that are hardest to test on.

Where Android and Kotlin is used

The label “Android and Kotlin developer” covers several jobs that share a technology and little else. These are the settings the work usually turns up in, and the one you are hiring into should shape the whole process, because the judgement each demands is different.

Consumer applications

Products where Android reach matters, which in most of the world means the majority of the addressable market.

Emerging market products

Applications where low-end devices, limited storage and expensive data are design constraints rather than edge cases.

Field and logistics applications

Workforce tools on rugged or managed devices, often with offline operation as a core requirement.

Retail and point of sale

Applications on dedicated hardware, including payment terminals and kiosks.

Media and communications

Streaming, messaging and social applications where background behaviour and notifications are central.

Automotive and wearables

Adjacent Android surfaces with their own constraints and their own smaller talent pools.

If a candidate's experience sits in a different row of that list from the work you have, that is not a reason to reject them, but it is the thing to probe. Ask what would be different about their approach in your setting. Someone who can answer that has transferable judgement. Someone who says it would be much the same has probably not thought about it.

Which Android and Kotlin versions are still supported

Google requires applications to target a recent platform version to remain updatable on the Play Store, so the target version is a compliance deadline rather than a preference.

The table is generated from public release data rather than written by hand, so it states what is supported today rather than what was true when any given article was published. Of the 8 most recent release lines, 4 are still maintained and 4 have passed their published end-of-life date. That distinction is the practical one when you read a job specification: a requirement written against a line that is now out of support tells you the specification is older than the codebase it describes, and it is worth asking which of the two the new developer will actually work in.

Android OS release lines
ReleaseReleasedEnd of lifeStatusLatest patch
17 'Cinnamon Bun'2026-06-16none publishedNo published end-of-life date-
16 'Baklava'2025-06-10none publishedNo published end-of-life date-
15 'Vanilla Ice Cream'2024-09-03none publishedNo published end-of-life date-
14 'Upside Down Cake'2023-10-04none publishedNo published end-of-life date-
13 'Tiramisu'2022-08-152026-03-02End of life-
12.1 'Snow Cone v2' (aka 12L)2022-03-072025-03-03End of life-
12 'Snow Cone'2021-10-042025-03-03End of life-
11 'Red Velvet Cake'2020-09-082024-02-05End of life-

Source: endoflife.date public release data, read 2026-09-25.

Two questions follow from this table in an interview. The first is which line the candidate has most recently shipped against, because someone whose last production work was on an unsupported line has not had to deal with the changes since. The second is how they have handled an upgrade. Version migrations are where you see whether a developer reads release notes, writes characterisation tests before changing anything, and knows how to stage a rollout, or whether they upgrade in place on a Friday and hope.

The toolchain around it

Nobody hires for Android and Kotlin alone. The surrounding tools are where most of the day-to-day work happens, and a gap in any of them costs more time than a gap in the core library. This is the set that turns up most often on real job specifications alongside it.

Kotlin
The language. Java knowledge remains useful for older codebases and is no longer the default.
Jetpack Compose
The declarative interface toolkit, where new Android interface work is written.
Coroutines and Flow
Asynchronous work and reactive streams, tied to lifecycle scopes.
Hilt
Dependency injection, the standard approach on modern Android.
Room
Local persistence over SQLite, which matters because offline capability is often required.
Retrofit with OkHttp
Network access, with interceptors for authentication and retry.
WorkManager
Deferred and guaranteed background work under the platform's increasingly strict execution limits.
Android Studio profilers
Memory, CPU and recomposition profiling, ideally on real low-end hardware.

Related skills that frequently appear on the same specification: Java, React Native, Flutter, iOS and Swift, AWS.

What to test in an interview

These are the topics that separate candidates in practice. Each one is given with why it discriminates, what a strong answer sounds like, and the response that should make you slow down. None of them requires a whiteboard.

Lifecycle and state preservation

The foundation of Android, and the source of most defects.

Coroutine scope

Determines whether background work is cancelled correctly or leaks.

Compose recomposition

Where declarative interface performance problems live.

Device fragmentation

The characteristic Android challenge and the most commonly neglected one.

Background execution limits

The platform has tightened these repeatedly and applications break when it does.

Permissions and privacy

Requirements have tightened substantially and are enforced at the store.

Play Store release management

Staged rollouts and pre-launch reports are real advantages if used.

Warning signs in a Android and Kotlin codebase

The fastest way to read a candidate is to ask what they have found wrong in code they inherited. These are the patterns that come up most often, what they cost, and what fixing them looks like. A developer who recognises three or four of these from their own experience is worth more than one who can recite the documentation.

Work launched outside a lifecycle scope

State held in the wrong place

Testing only on flagship hardware

Requesting all permissions at launch

Blocking the main thread

Ignoring target version requirements

What each level can own

Job titles are not comparable between companies, so it is more useful to describe levels by what a person can be left to own without supervision. These are the boundaries we use when we assess a Android developer.

Junior
Builds screens in an existing application. Needs review on lifecycle, coroutine scope and state preservation.
Mid-level
Owns a feature including persistence, background work and tests. Can profile and fix jank.
Senior
Owns application architecture, the state and concurrency model, the offline strategy, and the release process including staged rollout.
Staff
Owns the platform upgrade path, the device support matrix, the modularisation strategy, and the response to each year's behaviour changes.

How the work is usually scoped

Team shape follows the kind of work, not the headcount you happen to have budget for. These are the shapes that come up most often and the constraint that actually governs each one.

New Android application

Views to Compose migration

Target version uplift

Performance remediation for low-end devices

Offline capability

Migration work you may actually be hiring for

A large share of Android and Kotlin work is not new development. It is moving an existing system from one state to another while it stays in service. These are the migrations that come up most often, and each one asks for a different kind of experience from the person you hire.

Java to Kotlin

XML views to Jetpack Compose

An old target SDK version to a current one

RxJava to Coroutines and Flow

Migration work rewards a different temperament from greenfield work. The useful question in an interview is not whether someone has done the specific migration you face, but whether they have ever run one incrementally: behind a flag, with both paths live, and with a way back. Developers who have only done big-bang cutovers tend to propose them again.

What a good brief for this role contains

Most of the time lost in hiring a Android developer is lost before anyone is interviewed, in the gap between what the brief says and what the team actually needs. These are the points that, for this technology specifically, change who the right candidate is. A brief that answers them can be matched in days. One that does not produces a shortlist that looks reasonable and converts badly.

If you cannot answer some of these yet, that is normal and it is still worth writing down which ones are open. An unknown that is named can be worked around. An unknown that is papered over in a job specification turns into a rejected shortlist and a restart four weeks later.

What the US market pays for this work

Android and Kotlin work is counted by the US Bureau of Labor Statistics under Software Developers. That classification is broader than the technology itself, so treat the figures as the shape of the market a Android developer is hired into rather than as a rate card for the skill. Across the United States the Bureau counts 1,687,890 people in this occupation, with a median annual wage of $135,980.

US annual wages, Software Developers, May 2025
US annual wages, Software Developers, May 2025$135,980Median$82,460$214,67010th pct90th pctMiddle half $105K to $172K

The spread matters more than the midpoint. The 90th percentile is about 2.6 times the 10th, which is a wide band for a single occupation and tells you that the title on its own carries very little pricing information. Two people described as a Android developer can sit at $82,460 and $214,670 in the same national dataset. When a budget is set from a median without asking which end of that range the work actually needs, the hire that follows is usually the wrong one in one direction or the other.

These are employer-side wage figures for people on a US payroll. They exclude employer taxes, benefits, recruitment cost and the months a seat sits empty, all of which are real and none of which appear in a salary line. The useful way to read the table is as the cost of the alternative you are comparing against, not as a number to match.

How US metro markets compare for this role

The same job is priced very differently across the country. Ranked by median annual wage for Software Developers, the gap between the highest and lowest of the 28 metro areas covered here is a factor of about 1.7. San Jose sits at the top with a median of $213,110; Pittsburgh sits at the bottom with $124,500. A budget built from a national median will be wrong in both of those markets, in opposite directions.

Median wage for software developers, by US metro area
Median wage for software developers, by US metro areaSan Jose, CA: $213,110San Jose, CASan Jose, CA$213,110San Francisco, CA: $186,640San Francisco, CASan Francisco, CA$186,640Seattle, WA: $167,280Seattle, WASeattle, WA$167,280New York, NY: $166,830New York, NYNew York, NY$166,830Boston, MA: $166,090Boston, MABoston, MA$166,090San Diego, CA: $163,270San Diego, CASan Diego, CA$163,270Los Angeles, CA: $160,920Los Angeles, CALos Angeles, CA$160,920Portland, OR: $156,000Portland, ORPortland, OR$156,000Washington, D.C.: $154,930Washington, D.C.Washington, D.C.$154,930Baltimore, MD: $138,900Baltimore, MDBaltimore, MD$138,900Denver, CO: $137,610Denver, CODenver, CO$137,610Charlotte, NC: $135,920Charlotte, NCCharlotte, NC$135,920Chicago, IL: $134,380Chicago, ILChicago, IL$134,380Austin, TX: $134,120Austin, TXAustin, TX$134,120Dallas-Fort Worth, TX: $133,290Dallas-Fort Worth, TXDallas-Fort Worth, TX$133,290Philadelphia, PA: $133,040Philadelphia, PAPhiladelphia, PA$133,040Atlanta, GA: $132,960Atlanta, GAAtlanta, GA$132,960Raleigh, NC: $132,770Raleigh, NCRaleigh, NC$132,770Miami, FL: $132,650Miami, FLMiami, FL$132,650Phoenix, AZ: $131,750Phoenix, AZPhoenix, AZ$131,750Minneapolis-St. Paul, MN: $130,920Minneapolis-St. Paul, MNMinneapolis-St. Paul, MN$130,920Detroit, MI: $130,760Detroit, MIDetroit, MI$130,760Tampa, FL: $130,450Tampa, FLTampa, FL$130,450Orlando, FL: $129,620Orlando, FLOrlando, FL$129,620Salt Lake City, UT: $129,600Salt Lake City, UTSalt Lake City, UT$129,600Houston, TX: $129,440Houston, TXHouston, TX$129,440Kansas City, MO: $124,990Kansas City, MOKansas City, MO$124,990Pittsburgh, PA: $124,500Pittsburgh, PAPittsburgh, PA$124,500
Software Developers by metro area, May 2025, ranked by median wage
Metro areaEmployedMedian wagevs US medianLocation quotient
San Jose, CA87,350$213,110+57%7.09
San Francisco, CA69,030$186,640+37%2.68
Seattle, WA92,770$167,280+23%4.10
New York, NY121,000$166,830+23%1.17
Boston, MA42,310$166,090+22%1.44
San Diego, CA20,610$163,270+20%1.23
Los Angeles, CA55,540$160,920+18%0.82
Portland, OR18,260$156,000+15%1.39
Washington, D.C.69,060$154,930+14%2.03
Baltimore, MD16,850$138,900+2%1.14
Denver, CO27,010$137,610+1%1.55
Charlotte, NC20,820$135,9200%1.41
Chicago, IL40,370$134,380-1%0.82
Austin, TX31,960$134,120-1%2.28
Dallas-Fort Worth, TX67,030$133,290-2%1.52
Philadelphia, PA28,480$133,040-2%0.91
Atlanta, GA36,300$132,960-2%1.16
Raleigh, NC12,580$132,770-2%1.56
Miami, FL18,900$132,650-2%0.62
Phoenix, AZ29,380$131,750-3%1.14
Minneapolis-St. Paul, MN27,410$130,920-4%1.29
Detroit, MI24,870$130,760-4%1.20
Tampa, FL14,230$130,450-4%0.91
Orlando, FL13,440$129,620-5%0.88
Salt Lake City, UT19,040$129,600-5%2.12
Houston, TX22,940$129,440-5%0.64
Kansas City, MO12,160$124,990-8%1.02
Pittsburgh, PA10,320$124,500-8%0.85

Location quotient compares how concentrated this occupation is in the metro against the national average. A value above 1 means the metro has more of this work than its size would predict.

The location quotient column is the more useful one for hiring. A high median tells you what a role costs; a high quotient tells you whether the people exist. San Jose, San Francisco, Seattle, Washington, D.C., Denver, Austin each have a quotient of 1.5 or above, meaning the work is concentrated there well beyond what the size of the local economy would predict. Those are the markets where a search is likely to be quick and competitive at the same time, and where a counter-offer is most likely to take a candidate off the table late in the process.

The opposite case is worth planning for too. In a metro with a low quotient, the total pool is small even when wages look reasonable, so the realistic options are to widen the search radius, accept a longer time to hire, or bring the capability in from outside the local market entirely. That last option is what most teams are weighing when they come to us.

Hiring risks worth naming

Every one of these has produced a bad hire somewhere. They are written down so that the process tests for them deliberately rather than discovering them in month three.

Flagship-only testing. Ask which low-end device they test on. This single question predicts a great deal about the application they will produce.

Java-era Android habits. Ask about coroutine scopes and Compose. The platform has moved considerably in a few years.

No release management experience. Staged rollouts and crash monitoring are genuine advantages on Android and are frequently unused.

Underestimating background restrictions. Ask what happens to their scheduled work when the device is idle, and whether manufacturer behaviour differs.

Hiring Android and Kotlin developers by metro area

Wages for this occupation vary more between US metro areas than most budget models assume. Each page below sets out the published employment and wage figures for that market, how it compares with the national picture, and what the local industry mix means for the kind of Android developer who will be available.

Frequently asked questions

Should we build native Android or use a cross-platform framework?

Native when Android is your main market, when the application depends on background work, hardware or deep platform integration, or when performance on low-end devices is commercially important. Cross-platform when you need both platforms from a small team and the interface is largely standard. In much of the world Android is the majority of the addressable market, which often settles it.

Kotlin or Java for Android?

Kotlin. It is Google's preferred language, where the documentation and libraries are aimed, and where the ecosystem is going. Java remains in large existing codebases and interoperates fully, so a mixed codebase is common and fine. New Android work in Java is now the unusual case and narrows your hiring pool rather than widening it.

Views or Jetpack Compose?

New work generally starts in Compose, and most substantial applications contain both because they interoperate and nobody rewrites working screens for their own sake. A candidate with only view-based experience will need ramp time on Compose, and one with only Compose experience will struggle in the older parts of most real codebases.

Why is our application slow for some users but not for us?

Almost certainly device fragmentation. A large part of the Android user base runs hardware several generations behind a developer's phone, with less memory and slower storage. Performance problems that are imperceptible on a flagship are severe there. The fix is to keep low-end physical devices in the development loop rather than checking on them before release.

Why does our background work stop running?

The platform has tightened background execution repeatedly to protect battery, and several manufacturers apply additional restrictions beyond the standard ones. Work scheduled the old way simply does not run on some devices. WorkManager is the supported mechanism, and even then guaranteed timing is not something Android offers.

How often do we need to update for the platform?

At least annually. Google requires applications to target a recent platform version to remain updatable on the Play Store, and each version brings behaviour changes around permissions, storage and background execution. Deferring means absorbing several years of changes at once under deadline pressure.

What does an Android developer need from us on day one?

Access to the Play Console or a clear path to it, signing keys, and at least one low-end physical test device. The last one is routinely forgotten and is the difference between an application that works for your users and one that works for your developers.

Can one developer maintain both Android and iOS natively?

For a small application, sometimes, and it is usually a false economy. Both platforms release annually, both have their own store requirements, and the context switching is real. If budget forces one person across both, a cross-platform framework is usually the more honest answer than expecting native depth in two ecosystems.