Architect and build large-scale Android applications using Clean Architecture + MVVM, enforcing strict separation of concerns across layers.
Design and maintain Compose-first UI systems, including custom theming, state management, performance optimization, and recomposition control.
Deep understanding dependency injection design using Dagger/Hilt, with component scopes, lifecycle implications, graph optimization, and test overrides.
Drive modularization strategy (feature modules, core modules, build optimization) to enable parallel development and fast CI pipelines.
Own application performance: startup time, memory usage, threading, ANR prevention, and Compose runtime efficiency.
Establish and enforce code quality standards, architectural boundaries, and long-term technical direction.
Write highly testable code with meaningful unit tests, integration tests, and UI tests.
Collaborate with backend engineers to define API contracts, error models, and offline/edge-case behavior.
Mentor other Android engineers through code reviews, architecture discussions, and technical decision-making.
Participate in technical design reviews and challenge product decisions when they compromise system integrity.
Job requirements
5+ years of professional Android development experience, with real-world production apps at scale.
Strong mastery of Kotlin, including coroutines, Flow, structured concurrency, and immutability patterns.
Deep understanding of Clean Architecture principles and MVVM, including when not to follow them blindly.
Expert-level understanding of Dependency Injection, including:
How Dagger/Hilt generate graphs
Scope hierarchies and lifecycle safety
Performance and build-time trade-offs
Solid production experience with Jetpack Compose, including:
State hoisting and unidirectional data flow
Recomposition control and performance tuning
Interop with View-based systems
Proven experience with Android modularization, including Gradle configuration, dependency boundaries, and build performance optimization.
Strong understanding of Android internals: lifecycle, threading, process death, configuration changes, and background execution limits.
Ability to reason about trade-offs, not just follow trends or libraries.