Senior Mobile Software Engineer with Kotlin
Our client is modernizing its retail platform, transitioning from a legacy POS solution to a modular, offline-first architecture that supports POS terminals, self-checkout kiosks, and self-scanning devices. The platform is built around a shared Kotlin Multiplatform (KMP) core, powering key retail processes such as checkout, payments, customer management, and promotions across Android and Desktop applications.
We are looking for a Senior Kotlin Developer who is experienced in Kotlin Multiplatform delivery, comfortable owning complex shared modules in a layered architecture, and motivated by the challenge of building the reliable, platform-agnostic foundation that modern retail operations depend on.
Responsibilities:
-
Technical delivery: Design, implement, and maintain shared KMP modules for POS business capabilities, ensuring code is high-quality, maintainable, and performant across JVM/Desktop and Android targets.
-
Architecture ownership: Define clean repository, service, facade, DTO, and bridge contracts between Kotlin, platform-specific code, and the VueJS/TypeScript UI layer.
-
Platform integration: Implement platform-specific code for desktop and Android targets using expect/actual patterns, without leaking platform concerns into shared business logic.
-
Offline-first delivery: Build offline-capable flows with local persistence, caching, synchronization readiness, and explicit failure handling.
-
Code quality: Write clean, well-structured code, participate in reviews, and improve existing modules through refactoring where needed.
-
Testing: Write automated tests for domain rules, use cases, repositories, bridge contracts, and coroutine-based flows.
-
Collaboration: Work closely with frontend engineers, QA, product owners, and architects to align on contracts, requirements, and feature delivery.
-
Knowledge sharing: Support teammates by sharing knowledge and mentoring less experienced Kotlin developers when appropriate.
-
Team alignment: Respect team agreements and processes, while providing regular updates on progress, trade-offs, and technical decisions.
Qualifications:
Must Have
- 5+ years of experience with Kotlin, including strong hands-on KMP delivery to at least two targets (preferably Android and JVM/Desktop)
- Solid understanding of Clean Architecture: domain, use-case, infrastructure, and platform layers with dependency inversion and repository abstractions
- Practical experience with Kotlin Coroutines and Flow: structured concurrency, suspend APIs, Flow-based state and events, cancellation, and error propagation
- Experience with offline-first or local-first client architecture: local persistence, caching, synchronization concepts, and conflict handling
- Familiarity with dependency injection patterns, preferably Koin: constructor injection, module composition, and test overrides
- Strong testing discipline: unit and integration tests using Kotlin Test or equivalent, test doubles, and coroutine testing utilities
- Experience integrating REST/OpenAPI-style services: typed DTO mapping, serialization, and resilient client-side communication
- Comfortable with Gradle Kotlin DSL, modular builds, and CI-friendly project structures
- Effective communication skills for collaboration with frontend developers, QA, and product stakeholders
Nice to Have
- Android application development experience, including lifecycle awareness and platform integration
- Desktop JVM client experience, especially Electron sidecar or local service integration patterns
- Understanding of VueJS 3 and TypeScript to collaborate effectively on Kotlin-to-UI bridge contract design
- Experience with plugin or extensibility architecture: extension points, lifecycle management, and isolation
- Performance engineering experience for latency-sensitive client operations (e.g., fast item scan, payment flows)
- POS, retail, payment, promotion, or hardware peripheral integration experience
- Familiarity wit