Become an Android Hero
No signups. No subscriptions. No tracking. Just free, open-source resources to help you grow as an Android engineer β€” forever.
By Mukul Jangra
What You'll Find Here
Everything you need to grow as an Android developer β€” all in one place.
πŸ“±
Android & Kotlin Deep Dives

In-depth articles on Jetpack Compose, Coroutines, architecture patterns, and modern Android development.

πŸ“¬
Weekly Newsletter

Stay updated with curated new releases, API changes, docs, and what's happening in the Android ecosystem β€” every week.

🎯
Interview Preparation

Coding challenges, system design tips, and practice questions to help you ace your next Android engineering interview.

πŸ”“
100% Free & Open Source

No signups, no tracking, no subscriptions, no paywalls. All content is free forever and the source code is fully open.

πŸ›‘οΈ
Privacy First

Zero analytics, zero cookies, zero data collection. Learn without being watched β€” your privacy is respected here.

πŸ‘‘
Forever Free Premium Content

Deep dives, interview guides, and exclusive content that other platforms charge for β€” yours forever, no strings attached.

Guides 83
Weekly Newsletter 22
Interview Prep 81
Courses 10
Roadmap
Tools I Use
Resources
All
Android
Architecture
Best Practices
Design Patterns
Gradle
Jetpack Compose
Kotlin
Kotlin Coroutines
Libraries
Performance
Security
Testing

The Complete Guide to Working in an Engineering Team

Saturday, February 14, 2026

When I started my first job as an Android engineer, I thought the hard part was writing code. I knew Kotlin, I understood Activities and...

Kotlin Coroutines Under the Hood

Friday, February 13, 2026

I still remember the first time I wrote suspend fun and felt like something magical was happening. The function could pause, go do something else,...

Do You Still Need ViewModel in Compose?

Thursday, February 12, 2026

In my previous post, I walked through different ways to write ViewModels β€” single field states, UI state classes, combine pipelines, and the Compose way...

Kotlin Coroutines Best Practices Guide

Tuesday, February 10, 2026

When coroutines first landed in Kotlin, I treated them like a nicer version of RxJava β€” just swap Observable for Flow and subscribeOn for withContext,...

Android App Startup Performance Guide

Thursday, February 05, 2026

The first time I seriously measured our app’s cold start time, I was embarrassed. 3.2 seconds. I had assumed it was β€œfast enough” because it...

Error Handling Best Practices Guide

Friday, January 30, 2026

Early in my Android career, my error handling strategy was simple: wrap everything in try-catch, log it, and move on. The app β€œworked” β€” until...

Compose Rendering Performance Deep Dive

Sunday, January 25, 2026

I used to think Compose performance was about avoiding unnecessary recompositions. Slap @Stable on your data classes, use derivedStateOf where needed, pass lambdas carefully β€”...

Dependency Injection Best Practices Guide

Tuesday, January 20, 2026

I’ve worked on Android projects where dependency injection was an afterthought β€” classes creating their own dependencies, singletons scattered everywhere, and test suites that required...

Memory Management and Leak Prevention in Android

Thursday, January 15, 2026

I once spent two days tracking down a memory leak in production that caused our app to crash on devices with 2GB RAM. The OOM...

Modularization Best Practices Guide

Saturday, January 10, 2026

I’ve worked on Android codebases that ranged from a single module with 200 files dumped into a handful of packages, all the way to 40+...

RecyclerView and LazyColumn Performance Guide

Tuesday, January 06, 2026

The worst performance issue I ever shipped was a RecyclerView with 8 different view types, nested horizontal RecyclerViews, and a DiffUtil implementation that compared items...

API Design Best Practices Guide

Friday, January 02, 2026

Over the years, I’ve reviewed a lot of Kotlin codebases β€” internal libraries, SDK modules, shared data layers β€” and the pattern I keep seeing...

Network Performance Optimization in Android

Sunday, December 28, 2025

Last year I spent three days debugging what I thought was a slow API. The backend team insisted their p95 was under 80ms. Our Android...

ViewModel Best Practises Guide

Wednesday, December 24, 2025

Over the past few years, I’ve worked on several Android codebases β€” some greenfield, some legacy migrations, some scaling from a handful of screens to...

Baseline Profiles and R8 Optimization Guide

Saturday, December 20, 2025

I noticed it on a Friday afternoon. Our release build β€” fully signed, minified, everything production-ready β€” felt sluggish on cold start. The splash screen...

Gradle Build Best Practises Guide

Tuesday, December 16, 2025

When I joined a project last year, the first thing I noticed was how long builds took. A clean build on the CI server ran...

Threading and Dispatcher Performance in Android

Friday, December 12, 2025

A few months ago, we shipped a feature that loaded a user’s transaction history alongside their profile on a single screen. Everything looked fine in...

Code Review Best Practises Guide

Monday, December 08, 2025

Early in my career, code reviews were about catching typos and enforcing bracket placement. The review comments were things like β€œadd a blank line here”...

Bitmap and Image Loading Performance

Thursday, December 04, 2025

A few months ago, I was debugging a news feed app that kept crashing on mid-range devices. The crash logs all pointed to OutOfMemoryError in...

Logging And Observability Best Practises Guide

Sunday, November 30, 2025

Last year I got pulled into a production incident at 11 PM. Users were reporting that checkout was silently failing β€” they’d tap β€œPlace Order,”...

Database Performance in Android

Thursday, November 27, 2025

A while back, I was working on a screen that displayed a list of transactions β€” maybe a couple thousand rows. The UI was visibly...

Testing Best Practises Guide

Sunday, November 23, 2025

A year ago, I inherited a codebase with over 400 tests. Sounds impressive until you actually run them. Half the suite was flaky β€” tests...

Profiling and Benchmarking Android Apps

Thursday, November 20, 2025

A few months ago, QA filed a ticket: β€œThe home screen feels slow.” No numbers, no reproduction steps, no specific device. Just β€œfeels slow.” I...

Compose Beyond The UI?

Tuesday, October 14, 2025

A few years ago, I remember managing almost everything with Threads, AsyncTask, and Handlers for background tasks and UI updates. It was quite messy, specifically...

Android 17 Beta 1 β€” What's New and What You Need to Prepare

Monday, September 15, 2025

When Android 16 shipped the resizability requirements last year, I figured most teams would get a comfortable grace period before enforcement got serious. We did....

Navigation 3 β€” Compose-Native Navigation Rebuilt from Scratch

Monday, September 01, 2025

I’ve spent more hours fighting Navigation 2 than I’d like to admit. Type-safe arguments with Safe Args that still needed string-based route patterns. A NavGraph...

15 Years of Android Architecture β€” From MVC to Compose Presenters

Friday, August 15, 2025

I started writing Android code in 2017, somewhere in the middle of this story. My first project used Activities for everything β€” business logic in...

DataStore Done Right β€” Replacing SharedPreferences

Friday, August 01, 2025

I once spent a full afternoon debugging an ANR that only happened on low-end devices during cold starts. The stack trace pointed to SharedPreferences.getString() β€”...

Haze β€” Building Blur Effects in Compose

Thursday, July 17, 2025

I spent an embarrassing amount of time trying to build a frosted glass toolbar in Compose before I accepted that Android just doesn’t make this...

Compose Graphics Deep Dive β€” Custom Drawing and Shape Detection

Thursday, July 03, 2025

A few months ago I was building a feature that needed tap detection on irregularly-shaped UI elements β€” country outlines on a map, product images...

Retaining State Beyond ViewModels with Circuit

Thursday, June 19, 2025

A few months back I was debugging a production issue where users kept losing their filter selections after switching to another app and coming back....

KSP vs KAPT β€” Why You Should Migrate Today

Thursday, June 05, 2025

Last year I migrated a mid-sized Android project from KAPT to KSP. Clean debug builds dropped from around 4 minutes to just under 2 minutes....

From Dagger to Metro β€” A Migration Story

Thursday, May 22, 2025

Every Android team I’ve worked on has had a complicated relationship with dependency injection. We know we need it β€” the alternative is manual service...

Metro β€” Next Generation Dependency Injection for Android

Thursday, May 08, 2025

My DI journey on Android has been a progression of increasingly frustrated compromises. First it was manual constructor injection β€” workable for small projects, completely...

Molecule Deep Dive β€” Compose Runtime Without the UI

Thursday, April 24, 2025

A couple of years ago, I was working on a screen that had about 12 different input sources β€” user inputs, repository observations, feature flags,...

Turbine β€” The Right Way to Test Kotlin Flows

Thursday, April 10, 2025

The first time I tried testing a StateFlow in a ViewModel, I launched a coroutine, collected emissions into a list, and asserted on the list....

The Conflation Problem of Testing StateFlows

Thursday, March 27, 2025

A few months ago, I was writing a test for a ViewModel that managed a loading screen. The logic was simple β€” set loading to...

Compose Snapshot System Under the Hood

Thursday, March 13, 2025

The first time I really looked at how Compose tracks state changes, I expected to find something like LiveData’s observer pattern β€” register a listener,...

Micro-Optimizations in Kotlin β€” What Actually Matters

Thursday, February 27, 2025

I used to think micro-optimizations were a waste of time. Profile first, optimize the hot path, don’t prematurely optimize β€” that’s the standard advice, and...

Should You Use Kotlin Sequences? The Benchmark Says No

Thursday, February 13, 2025

I’ve been suggesting asSequence() in code reviews for years. It was one of those automatic comments β€” see a filter followed by a map on...

Dispatchers.Unconfined Is a Trap β€” Use EmptyCoroutineContext

Thursday, January 30, 2025

I’ve been injecting Dispatchers.IO and Dispatchers.Main into my classes for years. It’s one of the first things you learn when someone tells you to write...

stateIn vs shareIn β€” When to Use Which and Why

Thursday, January 16, 2025

I spent an entire afternoon debugging why my search screen was dropping results. The ViewModel looked correct β€” a combine of search query and filter...

ViewModel Events as State Are an Antipattern

Thursday, January 02, 2025

I once shipped a bug where users saw the same error snackbar every time they rotated their phone. The flow was simple: user taps a...

Kotlin's Rich Error Handling β€” Beyond Exceptions

Tuesday, December 17, 2024

A few months back, I was reviewing a pull request where every repository function was wrapped in try-catch(e: Exception) with a generic error message. The...

Stop Using Booleans for State

Tuesday, December 03, 2024

A few months ago, I found a bug in production that took me embarrassingly long to track down. Users were seeing a blank screen β€”...

Why You Should Use AndroidX Betas in Production

Tuesday, November 19, 2024

A while back, I hit a bug in the Compose Foundation library causing a layout issue. The usual flicker-on-recomposition kind of thing that makes you...

Defusing the Compose BOM

Tuesday, November 05, 2024

When I set up a new Compose project a few months ago, I did what every Android tutorial tells you to do β€” I added...

Compose Navigation Guide

Friday, November 01, 2024

Navigation in Compose has been my single biggest source of frustration in the Jetpack ecosystem. Not because the API is bad β€” NavHost and NavController...

How To Write Testable Code?

Tuesday, October 22, 2024

In the early days of my career, I had no idea about testing. I’d write code, manually check if it worked, ship it, and then...

Mobile System Design Guide

Monday, October 21, 2024

Before building a product, we need to set some requirements, architecture designs, security concerns β€” all of that. These play an important role in organizing,...

Design Patterns Guide in Kotlin

Friday, October 18, 2024

A while back I was reviewing a pull request on a fairly mature Android project, and I noticed the same structural problems repeating across different...

Kotlin Scope Functions Guide

Saturday, October 12, 2024

Scope functions were the first Kotlin feature that made me feel like I was fighting the language instead of using it. Not because they’re complex...

Android Security Best Practises Guide

Saturday, October 05, 2024

Early in my career, I shipped an app that stored API keys in BuildConfig fields and user tokens in plain SharedPreferences. I thought BuildConfig was...

Compose Animation APIs Guide

Monday, September 30, 2024

I used to over-complicate animations. In the View system, animation meant choosing between ObjectAnimator, ValueAnimator, ViewPropertyAnimator, TransitionManager, MotionLayout, or raw Canvas.drawFrame loops. Each API had...

Jetpack Compose Best Practises Guide

Tuesday, September 24, 2024

A few months back, I shipped a feature that looked perfect in debug builds but dropped frames like crazy in release. The profiler showed recompositions...

Follow Right Architecture Patterns Naming

Monday, September 23, 2024

I once joined a project where the codebase had a class called DataManager. Sounds reasonable, right? Except it was 2,400 lines long, handled API calls,...

Kotlin Best Practises Guide

Sunday, September 22, 2024

A couple of years ago, I was reviewing a pull request from a teammate who had just migrated from Java. The code worked fine β€”...

Application Level Best Practises Guide

Saturday, September 21, 2024

A while back, I was working on a production app that had about twelve ContentProviders registered in the manifest β€” most of them just for...

Android Deep Links and App Links Guide

Thursday, September 05, 2024

Deep links are one of those features that sound simple β€” β€œtap a URL, open the app” β€” until you actually implement them. There are...

Kotlin Generics Deep Dive

Sunday, August 25, 2024

Generics were one of those features I thought I understood until I had to actually use them beyond List<String>. I was building a caching layer...

Compose Layouts and Modifiers Guide

Thursday, August 08, 2024

Compose layouts tripped me up more than anything else when I first moved from the View system. In XML, layout behavior is defined by the...

Android Memory Leaks Guide

Saturday, July 20, 2024

About two years ago, I got a bug report that our app was crashing with OutOfMemoryError after extended use. Not immediately β€” users had to...

How to Choose the Right Architecture?

Wednesday, July 03, 2024

I’ve worked on projects that used MVC, MVP, MVVM, and MVI. Every time we picked an architecture, someone on the team was convinced it was...

Kotlin Delegation Pattern Guide

Friday, June 14, 2024

I used to write a lot of wrapper classes. A LoggingRepository that wraps a RealRepository, forwarding every method call and adding a log statement before...

Android Custom Views Guide

Friday, May 10, 2024

Last year I needed a radial progress indicator that didn’t exist in Material Design. The specs called for a segmented arc with rounded caps, gradient...

Kotlin Coroutines Exception Handling

Friday, March 15, 2024

I once spent two days tracking down a crash that should have been obvious. A coroutine in a ViewModel was fetching data from two endpoints...

Compose Side Effects Guide

Tuesday, June 20, 2023

The first time I used LaunchedEffect in a real project, I misunderstood the key parameter and created an infinite loop that crashed the app. The...

Kotlin Flows With Operators Guide

Wednesday, February 08, 2023

When I moved from RxJava to Kotlin Flow, the first thing I noticed was how much simpler the mental model was. RxJava had Observable, Flowable,...

Android WorkManager Guide

Wednesday, June 15, 2022

The first time I needed to sync data reliably in the background β€” not just β€œfire and forget” but actually guaranteed delivery β€” I went...

How To Cache In Android?

Wednesday, January 05, 2022

The first time I really understood caching was when I profiled an app that was making the same API call every time the user switched...

Kotlin Extension Functions Guide

Thursday, August 12, 2021

The moment I β€œgot” Kotlin extension functions was when I stopped thinking of them as adding methods to classes and started thinking of them as...

Modularization Basics Guide

Saturday, April 17, 2021

Our app at work hit a point where clean builds took over four minutes. Adding a new feature meant reading through thousands of lines to...

Understanding the Layers of Clean Architecture

Friday, April 16, 2021

In the previous posts, I covered what Clean Architecture is and the principles behind it. Now let’s get concrete. The most common question I get...

Common Architectural Principles Guide

Thursday, April 15, 2021

A few years into my Android career, I noticed a pattern. Every codebase that was painful to work on violated the same handful of principles....

Introduction to Clean Architecture

Wednesday, April 14, 2021

When I started my first production Android project, the codebase was one module with Activities that did everything β€” network calls, database queries, JSON parsing,...

Android Navigation Component Guide

Friday, September 25, 2020

Before the Navigation component, handling navigation in Android was a choose-your-own-adventure of FragmentTransactions, intent flags, and manual back stack management. I once spent an entire...

Kotlin Sealed Classes Guide

Wednesday, March 18, 2020

The first time sealed classes clicked for me was during a code review. A colleague had modeled a payment flow using an enum with four...

Room Database Guide

Wednesday, June 12, 2019

I still remember the days of writing raw SQLite queries in Android. Cursor objects, manual column index tracking, forgetting to close the database helper β€”...

What's the main purpose of DI?

Thursday, January 03, 2019

Early in my Android career, I wrote ViewModels that created their own repository instances, repositories that created their own Retrofit services, and services that created...

Android Threading With Handler and Looper

Wednesday, June 20, 2018

A few years ago, I remember managing almost everything with raw Thread objects. Need to fetch data from the network? new Thread(() -> { ......

Gradle Build Process Guide

Wednesday, January 24, 2018

When I started Android development, I treated Gradle like a black box. I’d paste dependencies into build.gradle, hit sync, and pray. When something broke β€”...

Kotlin Null Safety Guide

Sunday, December 10, 2017

Before Kotlin, I spent a non-trivial chunk of my debugging time chasing NullPointerException crashes. Not because I was careless β€” Java just didn’t give you...

Understanding Android Activity Lifecycle

Thursday, June 15, 2017

One of the first production bugs I ever shipped was a lifecycle bug. The app was a simple news reader β€” nothing fancy. But users...

All
Technical Round
DSA Round
System Design Round
Architecture Round
Behavioral Round
Coding Test
Day 0

The Complete Android Interview Guide

Everything you need to know before starting your Android interview preparation β€” what to expect, how companies evaluate, and a roadmap to succeed.

Day 1

Kotlin Basics & Type System

Kotlin basics and type system questions come up in almost every Android interview.

Day 2

Functions & Scope Functions

Functions are a core part of Kotlin interviews. Scope functions, higher-order functions, and inline functions are asked frequently because they show how well you understand Kotlin's functional side.

Day 3

Collections, Sequences & Functional Patterns

Collections and functional operations come up in almost every Kotlin interview.

Day 4

Generics, Variance & Reified Types

Generics come up in almost every Kotlin interview round.

Day 5

Activity & Fragment Lifecycle

Lifecycle is the most commonly asked topic in Android interviews. Every company will ask at least 2-3 lifecycle questions.

Day 6

Android Components

Services, Broadcast Receivers, and Content Providers are three of the four core Android components.

Day 7

Intents, Intent Filters & Launch Modes

Intents, intent filters, and launch modes are core concepts that define how Android components communicate and how the system manages tasks and back...

Day 8

Views, RecyclerView & UI Fundamentals

Views, RecyclerView and UI rendering are core topics in Android interviews. This post covers the most important questions.

Day 9

Storage & Data Persistence

Every real Android app needs to persist data. These questions cover the right tool for each storage need and the common pitfalls.

Day 10

Networking & API Communication

Networking questions cover HTTP concepts, OkHttp internals, and caching strategies.

Day 11

Threading & Background Work

Threading and background work are important topics in Android.

Day 12

Kotlin Coroutines β€” Basics

Kotlin Coroutines is a simplified version of managing asynchronous tasks or operations in Android.

Day 13

Kotlin Coroutines β€” Advanced

Advanced coroutine questions test whether you actually understand what happens under the hood β€” CPS transformation, state machines, cancellation cooperation, and concurrency primitives.

Day 14

Kotlin Flows β€” Cold Flows & Operators

Flow is one of the most heavily tested topics in Kotlin interviews.

Day 15

Kotlin Flows β€” Hot Flows & Lifecycle

Hot flows are one of the most asked topics in Android interviews.

Day 16

Compose Fundamentals & Thinking in Compose

Compose fundamentals come up in almost every Android interview now.

Day 17

State Management in Compose

State management is the core of how Compose works. Almost every Compose interview will test whether you understand how state drives recomposition and...

Day 18

Recomposition, Stability & Performance

Recomposition is the core mechanism that makes Compose reactive.

Day 19

Side Effects & Lifecycle in Compose

Side effects and lifecycle are fundamental to real-world Compose development.

Day 20

Layouts, Modifiers & Custom Drawing

Layout and drawing questions test whether you actually understand how Compose renders UI under the hood.

Day 21

Navigation, Theming & Architecture Patterns

Navigation and theming questions test whether you understand how to structure a real Compose application.

Day 22

Animation APIs in Compose

Animation questions come up regularly in Compose interviews because they test whether you understand not just the APIs, but how Compose's declarative...

Day 23

Testing & Accessibility in Compose

Testing and accessibility questions appear in senior-level Compose interviews because they reveal whether you've actually shipped production Compose...

Day 24

Memory Management & Performance

This covers how memory works on Android, why frames drop, and how to find and fix performance problems.

Day 25

Notifications, Permissions & Security

Covers the Android permission model, push notification system, and security fundamentals for protecting user data.

Day 26

Gradle, Build System & CI/CD

Build system questions cover Gradle internals, dependency management, and CI/CD pipelines for Android projects.

Day 27

Kotlin Under the Hood

Understanding how Kotlin compiles to bytecode is a common advanced interview topic.

Day 28

Kotlin Contracts, DSLs & Advanced Patterns

These topics separate senior Kotlin developers from intermediate ones.

Day 29

Android Internals & Process Management

Android internals and process management come up frequently in senior-level interviews.

Day 30

Accessibility, Localization & App Quality

These topics come up in interviews when companies want to know if you build apps that work for everyone, not just the default case.

Day 31

App Links, Deep Links & Navigation

Deep links and App Links are commonly asked in Android interviews because they test your understanding of the intent system, manifest configuration,...

Day 32

Sensors, Camera & Hardware APIs

These topics come up in interviews when the role involves features like maps, fitness tracking, camera-based scanning, or Bluetooth connectivity.

Day 33

MVVM, MVI & Architecture Patterns

Architecture pattern questions come up in every senior Android interview.

Day 34

Clean Architecture & SOLID Principles

Clean Architecture and SOLID come up in almost every architecture round.

Day 35

Dependency Injection β€” Hilt, Dagger & Koin

DI questions show up in every Android architecture interview.

Day 36

Modularization & Multi-Module Architecture

Modularization questions are common in senior and lead Android interviews.

Day 37

Design Patterns in Android

Design pattern questions show up in almost every architecture round.

Day 38

Testing Strategy & Testable Code

Testing questions come up in architecture rounds because writing testable code forces good architecture.

Day 39

Error Handling & Resilience Patterns

Error handling questions test whether you think beyond the happy path.

Day 40

State Management Deep Dive

State management is where architecture rounds get hard.

Day 41

Arrays, Strings & Hash Maps

Arrays and strings are the foundation of almost every DSA interview.

Day 42

Linked Lists

Linked list problems are a staple in DSA interviews because they test pointer manipulation, edge case handling, and in-place operations.

Day 43

Stacks & Queues

Stacks and queues are among the most frequently tested data structures in coding interviews.

Day 44

Trees & Binary Search Trees

Trees are one of the most asked topics in coding interviews.

Day 45

Tries & Advanced Trees

Tries show up in string-heavy problems like autocomplete, spell check, and word search.

Day 46

Graphs β€” BFS, DFS & Traversals

Graph problems are among the most common in coding interviews.

Day 47

Graphs β€” Shortest Path & Advanced

Shortest path algorithms and advanced graph techniques like MST and Union-Find show up frequently in coding rounds at top companies.

Day 48

Sorting, Searching & Binary Search

Sorting and binary search are foundational topics in coding interviews.

Day 49

Dynamic Programming β€” Fundamentals

DP is one of the most tested topics in FAANG interviews. If a problem has overlapping subproblems and optimal substructure, it's likely a DP problem.

Day 50

Dynamic Programming β€” Advanced Patterns

Advanced DP problems show up in harder FAANG rounds and distinguish strong candidates.

Day 51

Recursion, Backtracking & Greedy

Recursion is the foundation for trees, graphs, and DP. Backtracking extends recursion to explore all possibilities and prune invalid paths.

Day 52

Bit Manipulation & Math

Bit manipulation shows up in interviews as a way to test your understanding of how numbers work at the binary level.

Day 53

System-Oriented DSA

System-oriented DSA questions bridge the gap between algorithms and real-world systems.

Day 54

Heaps, Priority Queues & Intervals

Heaps power efficient selection and scheduling problems. Interval problems test your ability to think about overlapping ranges.

Day 55

Mobile System Design Fundamentals

Mobile system design interviews focus on client-side architecture, not backend scaling.

Day 56

Design an Image Loading Library

Designing an image loading library like Coil or Glide is one of the most common mobile system design questions.

Day 57

Design a Chat Application

Chat applications are a favorite in mobile system design interviews because they combine real-time communication, offline support, local persistence,...

Day 58

Design a News Feed / Social Media Feed

Feed-based screens are one of the most common system design questions in mobile interviews.

Day 59

Design an Offline-First Application

Offline-first is a core mobile system design topic. Users expect apps to work in subways, elevators, and areas with flaky connectivity.

Day 60

Design a Video Streaming App

Video streaming is a common system design question because it touches many mobile-specific concerns β€” adaptive bitrate, buffering, background...

Day 61

Design a Ride-Sharing App

Ride-sharing apps are a favorite in mobile system design interviews because they combine real-time location, maps, background services, and...

Day 62

Design an E-Commerce App

E-commerce app design comes up frequently because it covers the full spectrum of mobile challenges β€” catalog browsing with heavy image loading,...

Day 63

Design a File Sync App

File sync apps are a staple in system design interviews because they test how you handle background processing, conflict resolution, and large data...

Day 64

Design an Analytics / Crash Reporting SDK

SDK design questions test a different angle of system design β€” you are building a library that other developers integrate into their apps, not an...

Day 65

Design a Networking Library

Designing a networking library like Retrofit or OkHttp tests your understanding of HTTP internals, request pipelines, caching, and concurrency.

Day 66

Design a File Downloader Library

Designing a file downloader library tests your understanding of HTTP range requests, background processing, disk I/O, and concurrent task management.

Day 67

Design a Location Sharing / Maps App

Designing a location sharing or maps app tests your understanding of real-time communication, battery-efficient location strategies, map rendering, and privacy.

Day 68

Design a Music Streaming App

Designing a music streaming app like Spotify tests your understanding of audio playback, background services, media sessions, offline caching, and playback queue management.

Day 69

Coding Test β€” What Companies Expect

Most Android interview pipelines include a practical coding test β€” either a take-home project or a live coding session.

Day 70

Build a Weather / News Reader App

The weather or news reader app is the most common coding test assignment.

Day 71

Build a Movie / Product Listing with Detail Screen

The list-detail pattern is a staple coding test assignment.

Day 72

Build a Custom UI Component

Some coding tests ask you to build a custom UI component from scratch β€” a circular progress indicator, a rating bar, a custom chart, or a...

Day 73

Code Review & Refactoring Challenge

Some companies hand you an existing codebase and ask you to review it, identify problems, and refactor.

Day 74

Build a StackOverflow Users / GitHub Repos App

The StackOverflow users or GitHub repos app tests API integration, pagination, search, and clean architecture in a realistic coding challenge.

Day 75

Build a To-Do / Notes App

The to-do or notes app is the purest test of Android fundamentals β€” Room, state management, clean architecture, and UI polish without relying on any external API.

Day 76

Machine Coding Round β€” What to Expect

The machine coding round is a timed, hands-on coding session where you build or modify a feature live, typically in 1-2 hours.

Day 77

STAR Method & Common Behavioral Questions

Every company has a behavioral round. It tests how you communicate, handle conflict, and work with others.

Day 78

Leadership, Ownership & Technical Decision-Making

Senior-level interviews dig into how you lead without a title, own outcomes end-to-end, and make sound technical decisions when there's no clear...

Day 79

Agile, Scrum & Team Collaboration

Many companies ask about how you work within Agile teams.

Day 80

Career Growth, Failure & Salary Negotiation

These questions come up in almost every final round.

🟣

Kotlin Mastery

Master Kotlin from fundamentals to advanced patterns β€” null safety, generics, DSLs, inline functions, and idiomatic Kotlin for production Android code.

8 Modules Β· 49 Lessons Β· 10 weeks
⚑

Kotlin Coroutines & Flows

Master structured concurrency, suspend functions, Flow operators, StateFlow, Channels, and exception handling for production Android apps.

9 Modules Β· 50 Lessons Β· 10 weeks
🎨

Jetpack Compose Mastery

Build modern Android UIs from scratch β€” declarative thinking, state management, side effects, custom layouts, animations, performance, and testing.

12 Modules Β· 61 Lessons Β· 12 weeks
πŸ—οΈ

Android Architecture Mastery

Design scalable, testable Android apps β€” MVVM, MVI, Clean Architecture, Repository pattern, Use Cases, and modularization strategies.

10 Modules Β· 56 Lessons Β· 10 weeks
πŸ”’

Android Security & Privacy

Secure your Android apps β€” encryption, KeyStore, ProGuard/R8, network security, biometrics, secure storage, and privacy best practices.

9 Modules Β· 48 Lessons Β· 7 weeks
πŸš€

Android Performance Mastery

Optimize every layer β€” startup time, memory management, rendering performance, Compose optimization, battery efficiency, APK size, network tuning, threading, micro-optimizations, and profiling with Android Studio tools.

10 Modules Β· 55 Lessons Β· 12 weeks
βš™οΈ

Gradle & Build Systems

Master Gradle for Android β€” build scripts, plugins, variant management, build optimization, version catalogs, and custom tasks.

10 Modules Β· 56 Lessons Β· 6 weeks
πŸ§ͺ

Android Testing Mastery

Write tests that catch bugs β€” unit testing, Compose UI testing, integration tests, TDD patterns, test architecture, and mocking strategies.

10 Modules Β· 52 Lessons Β· 8 weeks
πŸ’‰

Dependency Injection Mastery

Master DI in Android β€” Hilt, Dagger, Koin, manual DI, scoping, multi-module architecture, and testing patterns.

10 Modules Β· 57 Lessons Β· 6 weeks
πŸ—οΈ

System Design for Mobile

Design scalable Android apps β€” offline-first architecture, caching strategies, pagination, data sync, modularization, and real-world system design patterns.

10 Modules Β· 54 Lessons Β· 8 weeks
Android Studio
Android Studio
Primary IDE for Android development β€” powerful debugging, Compose preview, and deep Gradle integration.
Claude AI
Claude AI
AI coding assistant by Anthropic β€” helps with code reviews, writing, research, and pair programming.
Obsidian
Obsidian
Markdown-based knowledge base β€” local-first notes with linking, graphs, and full ownership of your data.
Fork
Fork
Fast and friendly Git client for Mac β€” clean UI for branching, merging, and managing repositories.
iTerm2
iTerm2
Feature-rich terminal emulator for macOS β€” split panes, profiles, and deep shell integration.
MacBook Pro
MacBook Pro M4 Max
Daily driver machine β€” blazing fast builds, all-day battery, and native ARM performance for Android dev.
Brave
Brave Browser
Privacy-focused browser β€” blocks ads and trackers by default, Chromium-based with fast performance.
Proton Mail
End-to-end encrypted email β€” zero-access architecture, based in Switzerland, no ads or tracking.
Signal
Signal
Private messenger with end-to-end encryption β€” open source, no ads, no trackers, just secure messaging.
Bitwarden
Open-source password manager β€” end-to-end encrypted vault, cross-platform sync, and self-host option.
YubiKey Security Key
Hardware 2FA key β€” phishing-resistant authentication for accounts, SSH, and GPG signing.
GrapheneOS
GrapheneOS
Privacy and security focused mobile OS β€” hardened Android with sandboxed Google Play compatibility.
NewPipe
NewPipe
Lightweight YouTube frontend β€” no ads, no tracking, background playback, and downloads without Google.
Official Docs
Blogs & Newsletters
YouTube & Talks
GitHub Repos
Community
πŸ“—
Android Developer Docs
The official source for Android APIs, guides, best practices, and code samples.
πŸ“—
Kotlin Language Docs
Official Kotlin language reference β€” syntax, coroutines, flows, and standard library.
πŸ“—
Jetpack Compose
Official Compose docs β€” UI toolkit, state management, side effects, navigation, and testing.
πŸ“—
Android Architecture Guide
Google's recommended app architecture β€” UI layer, data layer, domain layer patterns.
πŸ“—
Kotlin Coroutines Guide
Official guide to coroutines β€” structured concurrency, flows, channels, and exception handling.
πŸ“—
Android Source Code Search
Search the AOSP and AndroidX source code directly β€” understand how the framework works internally.
πŸ“—
AndroidX Library Explorer
Browse all Jetpack libraries, their versions, release notes, and dependencies.
πŸ“—
AndroidX Release Notes
Track every AndroidX library update β€” changelogs, bug fixes, and new API additions.
πŸ“—
Android Dev Tools
Official tooling docs β€” Android Studio, ADB, Profiler, Layout Inspector, and command-line tools.
πŸ“—
Compose Testing Guide
Official guide to testing Compose UIs β€” semantics, finders, assertions, and test rules.
πŸ“—
Kotlin Flow on Android
Official guide to using Kotlin Flows in Android β€” StateFlow, SharedFlow, and collecting safely.
πŸ“—
Arrow Kotlin (Functional Programming)
Functional programming library for Kotlin β€” immutable data, error handling with Either, and optics.
πŸ“—
Twitter Compose Rules
Static analysis rules for Jetpack Compose β€” best practices for performance and correctness.
πŸ“—
Android Security Bulletin
Monthly security patch details β€” vulnerabilities, CVEs, and security updates for AOSP.
πŸ“—
Semantic Versioning
The spec behind version numbers β€” understand MAJOR.MINOR.PATCH and when to bump each.
πŸ“
Android Developers Blog
Official blog from the Android team β€” new releases, feature announcements, and MAD Skills.
πŸ“
JetBrains Kotlin Blog
Kotlin language updates, new features, KMP progress, and ecosystem news from JetBrains.
πŸ“¬
Android Weekly
Curated weekly newsletter with the best Android articles, tutorials, and library releases.
πŸ“¬
Kotlin Weekly
Weekly Kotlin newsletter β€” language tips, library updates, and community highlights.
πŸ“¬
jetc.dev
Dedicated Jetpack Compose newsletter β€” articles, samples, and latest Compose developments.
πŸ“
ProAndroidDev
Community-driven Android development blog on Medium β€” trending articles from experienced engineers.
πŸ“¬
Effective Android by Jorge Castillo
Deep dives on Compose internals, architecture patterns, and advanced Android topics.
πŸ“
Compose Internals by Vinay Gaba
How the Compose runtime, compiler, and slot table work under the hood.
πŸ“
Android Developers on Medium
Official Medium publication β€” MAD Skills series, architecture guides, and Compose tutorials from Google.
πŸ“¬
KMP Weekly
Weekly newsletter focused on Kotlin Multiplatform β€” shared code, libraries, and cross-platform patterns.
πŸ“¬
JetpackCompose.app Newsletter
Curated Compose articles, new components, and community projects delivered to your inbox.
πŸ“¬
Google Android Newsletter
Official newsletter from the Android team β€” new releases, features, and developer stories.
πŸ“
Craft Better Software
Software engineering newsletter on clean code, architecture decisions, and career growth.
πŸ“
Krossovochkin
Deep technical Android posts β€” coroutines internals, custom Lint rules, and engineering insights.
πŸ“
TypeAlias
Visual and beginner-friendly Kotlin tutorials β€” coroutines, generics, and collections explained clearly.
πŸ“
Kt. Academy
Kotlin education platform by Marcin MoskaΕ‚a β€” courses, articles, and the "Kotlin Coroutines: Deep Dive" book.
πŸ“
Stack Overflow Blog
Engineering best practices, developer surveys, and insights from the world's largest dev community.