Senior Kotlin Multiplatform (KMP) Developer
Job Description:
Descripción del Proyecto
Buscamos desarrolladores/as Kotlin Multiplatform para sumarse a un proyecto de alto impacto. El objetivo principal será desarrollar funcionalidades multiplataforma escalables, optimizar la arquitectura del proyecto e integrar aplicaciones para Android e iOS trabajando en estrecha colaboración con equipos multidisciplinarios.
Locación: Ec/Ar/Cl/Co/Pe/Uy
Inglés: No requerido
Responsabilidades Principales
Desarrollar y mantener nuevas funcionalidades utilizando Kotlin Multiplatform (KMP).
Diseñar componentes reutilizables y definir la arquitectura modular del código compartible.
Colaborar e integrarse activamente con los equipos de Android, iOS y Backend.
Integrar y adaptar SDKs multiplataforma.
Optimizar la performance, legibilidad y mantenibilidad de la aplicación.
Participar en decisiones clave de arquitectura y realizar code reviews rigurosos.
Requisitos Técnicos Indispensables
1. Dominio de Kotlin
Uso fluido de: Coroutines, Flow / StateFlow / SharedFlow, Extension Functions, Sealed Classes, Data Classes, Delegation, Inline Functions, Result y Generics.
Criterio y dominio técnico claro sobre la diferencia y uso adecuado de: object, class, interface, abstract class y sealed interface.
2. Kotlin Multiplatform (KMP)
Experiencia sólida trabajando con el mecanismo expect / actual, manejo de Source Sets (commonMain, androidMain, iosMain) y Gradle Multiplatform.
Manejo de Dependency Injection y uso de librerías compatibles con KMP.
Comprensión profunda de las limitaciones de compatibilidad entre plataformas.
3. Compose Multiplatform
Desarrollo de interfaces dinámicas aplicando: State Hoisting, remember, rememberSaveable, CompositionLocal, Side Effects, Navigation, LazyColumn, LazyGrid y Animaciones.
Comprensión sobre el comportamiento de Recomposition, Stability y optimización de Performance.
4. Arquitectura y Diseño
Aplicación de Clean Architecture, patrón MVVM, Dependency Inversion, Repository Pattern y Use Cases.
Experiencia en Arquitectura Modular, idealmente estructurando módulos como :core, :platform, :features y :appShell.
Claridad para definir responsabilidades entre las distintas capas del sistema.
5. Inyección de Dependencias & Networking
Manejo preferente de Koin (scopes, single, factory, módulos).
Experiencia consumiendo servicios a través de Apollo GraphQL, Ktor Client y REST.
Conocimiento de serialización, modelado de DTOs, Mapping y Domain Models.
6. Persistencia, Testing & Calidad
Manejo de DataStore y deseable experiencia con Room KMP (migraciones, versionado y caché local).
Experiencia realizando Unit Testing con MockK, Coroutines Test y Flow Testing.
Uso de herramientas de análisis estático de código como Sonar.
Control de versiones avanzado con Git (Rebase, Cherry Pick, Squash, resolución de conflictos).
Requisitos Deseables / Valorados
Integración de SDKs: Firebase, Dynatrace, Appdome, Analytics y plataformas de Crash Reporting.
Seguridad: Biometría, Encriptación, Certificate Pinning y Secure Storage.
Habilidades Blandas (Soft Skills)
Excelentes habilidades de comunicación técnica y fundamentación de decisiones de arquitectura.
Proactividad, pensamiento crítico y alto sentido de Ownership.
Capacidad para documentar decisiones técnicas e integrarse efectivamente a un entorno de trabajo colaborativo.