Roles and responsibilities
We are seeking a highly skilled Senior Android Native Developer with a strong background in Jetpack Compose and modern Android development practices. The ideal candidate will have a minimum of 5 years of experience building scalable and high-performance Android applications. You will play a critical role in designing, developing, and maintaining our applications while working closely with cross-functional teams to deliver a seamless user experience.
Key Responsibilities
- Design and develop advanced Android applications using Jetpack Compose and Kotlin.
- Implement MVVM or Clean Architecture to ensure maintainable and scalable code.
- Utilize Android Jetpack libraries (Compose, Navigation, Room, Hilt, ViewModel, etc.).
- Optimize applications for performance, responsiveness, and battery usage.
- Profile and debug code to identify and fix bottlenecks.
- Implement unit testing, UI testing, and integration testing using tools like JUnit, Espresso, and MockK.
- Conduct peer code reviews to maintain high code quality standards.
- Stay up to date with the latest Android tools, trends, and Jetpack Compose improvements.
- Suggest and implement improvements to the development process.
Required Skills
- Programming Languages: Kotlin (mandatory).
- UI Framework: Jetpack Compose (hands-on experience is a must).
- Architecture: Strong experience with MVVM, Clean Architecture, and Jetpack libraries.
- Tools & Libraries: Hilt/Dagger for dependency injection, Retrofit for API integration, Coroutines/Flows for asynchronous programming, Room or similar ORM libraries for local storage.
- Version Control: Git.
- Testing Tools: JUnit, Espresso, MockK, or similar frameworks.
- CI/CD Pipelines: GitHub Actions and Fastlane.
Qualifications
- Bachelor’s degree in Computer Science, Software Engineering, or a related field.
- Minimum of 5 years of experience in native Android development with proven expertise in Jetpack Compose.
Preferred Skills
- Knowledge of Kotlin Multiplatform Mobile (KMM).
- Experience with performance profiling tools and debugging techniques.
- Familiarity with Google Play policies and guidelines.
Desired candidate profile
1. Proficiency in Android Development Tools & Frameworks
- Android SDK: Expertise in the Android Software Development Kit (SDK) for building native Android applications.
- Android Studio: Proficient in using Android Studio, the official IDE for Android development, for writing, debugging, and testing code.
- Gradle: Knowledge of Gradle for automating builds and managing dependencies.
- Jetpack Libraries: Experience with Jetpack libraries, including components like LiveData, ViewModel, Room, Navigation, and WorkManager.
2. Programming Languages
- Kotlin: In-depth knowledge of Kotlin, the modern and official programming language for Android development.
- Java: Familiarity with Java for legacy Android applications or where Java is still required.
- Coroutines: Experience with Kotlin Coroutines for handling asynchronous tasks like network calls or database operations efficiently.
3. Android UI/UX Design
- XML Layouts: Creating responsive UI designs using XML layouts and understanding Android's UI patterns (e.g., LinearLayout, ConstraintLayout).
- Material Design: Implementation of Material Design principles for building intuitive and aesthetically pleasing user interfaces.
- Jetpack Compose: Experience with Jetpack Compose for building UI components in a more declarative way (for modern Android apps).
- Responsive Design: Ensuring apps are responsive across different screen sizes and orientations, including tablets and foldables.
4. App Architecture & Design Patterns
- MVVM: Proficiency in using the Model-View-ViewModel (MVVM) architecture for structuring Android apps.
- MVP/MVC: Knowledge of alternative architectures such as Model-View-Presenter (MVP) or Model-View-Controller (MVC).
- Clean Architecture: Implementing Clean Architecture to separate concerns and improve code maintainability and scalability.
- Dependency Injection: Experience using frameworks like Dagger 2 or Hilt for dependency injection in Android.
5. Data Storage & Management
- SQLite: Working knowledge of SQLite for local database management and data storage.
- Room Database: Experience using the Room persistence library for a more modern abstraction over SQLite.
- SharedPreferences: Familiarity with SharedPreferences for storing small amounts of data locally (e.g., user settings).