Salma Madouri Makni — Ingénieure Android Senior

Kotlin · SDK Android · IoT & objets connectés · Île-de-France · Ouverte à de nouvelles opportunités

Ingénieure Android Senior, 10 ans d'expérience sur des logiciels mobiles critiques qui dialoguent avec du matériel : SDK billettiques NFC/APDU pour la SNCF et applications Bluetooth Low Energy pour dispositifs médicaux connectés et implantables. Experte Kotlin et Clean Architecture, habituée à livrer des SDK réutilisables aux intégrateurs, sur terminaux industriels comme sur appareils Android standards. Travaille avec un workflow augmenté par l'IA tout en gardant la pleine maîtrise de la qualité, de la sécurité et des données sensibles.

Senior Android Engineer with 10 years building critical mobile software that talks to hardware: NFC/APDU ticketing SDKs for SNCF and Bluetooth Low Energy apps for connected and implantable medical devices. Kotlin expert and Clean Architecture practitioner, used to shipping reusable SDKs to integrators on industrial terminals and standard Android devices. Works with an AI-augmented workflow while keeping full ownership of quality, security and sensitive data.

makni.salma9@gmail.com · LinkedIn · CV PDF (français) · CV PDF (English)

Expérience professionnelle

Développeuse Mobile Android Senior — SNCF

02/2022 – 01/2026 · Billettique · SDK Android

SDK Android Kotlin au cœur des services de contrôle et de distribution billettique de la SNCF, déployés sur terminaux industriels et appareils Android standards.

  • Développement des SDK Android en Kotlin pour les services de contrôle et de distribution billettique de la SNCF.
  • Lecture et traitement de conteneurs Calypso via NFC, exposés sous forme de bibliothèques Android réutilisables intégrées dans différents environnements métiers.
  • Déclinaison du produit en plusieurs implémentations pour répondre aux contraintes des terminaux industriels (Bluebird, SpringCard) et des appareils Android standards.
  • Conception et implémentation de l'architecture du SDK selon la Clean Architecture, garantissant l'extensibilité et l'isolation du domaine métier billettique.
  • Gestion des interactions NFC et de l'échange des commandes APDU via la bibliothèque Keyple.
  • Conception d’une architecture multi-plateformes gérant les terminaux Bluebird et les smartphones Android avec une base de code commune.
  • Mise en place de la CI/CD GitLab CI : build, tests et livraison du SDK automatisés.
  • Intégration de Jetpack Compose et des tests unitaires.
  • Développement des couches de persistance locale et de synchronisation pour garantir la résilience de l'application en cas de perte de connectivité.
  • Mise à disposition d'une application démo pour les tests fonctionnels.
  • Analyse et résolution de problématiques complexes liées aux interactions NFC, aux contraintes matérielles et à la compatibilité Android.
  • Support technique auprès des équipes métier et accompagnement des intégrateurs dans l'adoption du SDK.
  • Participation aux choix d'architecture, aux revues de code et à l'amélioration continue des standards de développement.

Environnement technique : Kotlin, Android SDK, NFC, APDU, GitLab, GitLab CI, Gradle, Bluebird SDK, Keyple, Clean Architecture, Dagger, Koin, Jetpack Compose, Retrofit, kotlinx-serialization, Unit tests, Coroutines / Flow, Scrum / Agile

Développeuse Mobile Android Senior — MicroPort CRM

11/2019 – 01/2022 · Dispositifs médicaux connectés · Télésurveillance

Application Android de télésurveillance assurant la collecte, le traitement et la transmission sécurisée de données cliniques issues de dispositifs médicaux implantables connectés en BLE.

  • Développement d'une application Android de télésurveillance permettant la collecte, le traitement et la transmission sécurisée de données cliniques issues de dispositifs médicaux implantables connectés via Bluetooth Low Energy (BLE).
  • Remontée des données vers les plateformes Back Office pour faciliter le suivi à distance des patients par les professionnels de santé.
  • Conception et développement de l'application selon la Clean Architecture, garantissant maintenabilité, évolutivité et testabilité.
  • Développement des fonctionnalités de communication avec les dispositifs médicaux connectés via BLE.
  • Intégration des services backend à travers des API REST sécurisées pour la transmission et la consultation des données patients.
  • Conception et implémentation des interfaces utilisateurs en collaboration avec les équipes UX/UI, conformes aux maquettes et aux exigences métier.
  • Programmation asynchrone avec Kotlin Coroutines pour optimiser les performances et la gestion des flux de données.
  • Définition et développement de la stratégie de tests : tests unitaires, tests instrumentés.
  • Participation aux revues de code, aux ateliers techniques et aux cérémonies Agile (Scrum).
  • Contribution à l'amélioration continue de l'architecture et des bonnes pratiques de développement Android.

Environnement technique : IoT, Android Studio, Kotlin, XML, Git, AndroidX, Famoco, MDM API, REST API, OkHttp, Retrofit, Room, Coroutines, BLE, Unit tests, Instrumented tests, Scrum, Dagger, Clean Architecture

Développeuse Mobile Android — TravelCar

05/2019 – 10/2019 · Mobilité · Plateforme de réservation

Plateforme internationale de mobilité : réservation de places de stationnement, location de véhicules et services de déplacement, dans un contexte de forte croissance.

  • Participation au développement et à l'évolution de l'application Android TravelCar, plateforme internationale de mobilité (stationnement, location de véhicules, services de déplacement).
  • Intervention sur des fonctionnalités stratégiques visant à améliorer l'expérience utilisateur, la fiabilité des processus métier et le suivi analytique.
  • Conception et implémentation du module de gestion des états des lieux (inspections des véhicules avant et après location).
  • Intégration et maintenance des API REST assurant les échanges entre l'application mobile et les services backend.
  • Gestion et sécurisation des migrations de bases de données locales avec Room, garantissant la compatibilité des données entre versions.
  • Mise en œuvre du plan de tracking Firebase Analytics afin d’améliorer le suivi des parcours utilisateurs et le pilotage produit.
  • Développement de fonctionnalités de géolocalisation et intégration de Google Maps pour la recherche et la visualisation des services de mobilité.
  • Optimisation des performances applicatives et amélioration de la stabilité de l'application.
  • Diagnostic et résolution des anomalies fonctionnelles et techniques dans un environnement de production à forte volumétrie.
  • Collaboration étroite avec les équipes Produit, Backend, QA et UX dans un contexte Agile Scrum.

Environnement technique : IoT, Android Studio, Kotlin, Java, XML, Git, JIRA, Glide, AndroidX, Google Maps, Room, Firebase Analytics, REST API, Retrofit, LiveData, Coroutines, Dagger, Jenkins, Scrum

Développeuse Mobile Android — Telnet Holding

09/2015 – 02/2019 · IoT · Santé connectée

Application de suivi d'indicateurs de santé (pression artérielle, poids, activité) connectée aux équipements A&D et à un connecteur spécifique Telnet.

  • Application de suivi des indicateurs de santé (pression artérielle, poids, nombre de pas) à travers les équipements A&D connectés et un connecteur spécifique de Telnet.
  • Conception et développement des fonctionnalités de découverte, d'appairage et de communication avec les dispositifs médicaux connectés via BLE.
  • Intégration des équipements de santé connectés A&D : tensiomètre UA-651BLE et balance connectée UC-352BLE.
  • Développement des mécanismes de collecte, de traitement et de synchronisation des données physiologiques.
  • Gestion des connexions BLE, du cycle de vie des périphériques et de la récupération fiable des mesures.
  • Optimisation des échanges Bluetooth afin d’améliorer la stabilité des connexions et la qualité des données.
  • Analyse et résolution des problématiques liées aux communications sans fil et à l’interopérabilité entre équipements médicaux.
  • Maintenance corrective et évolutive de l'application en production.
  • Amélioration continue des performances, de la robustesse et de l'expérience utilisateur.
  • Participation aux phases de validation fonctionnelle et aux investigations techniques liées aux remontées terrain.

Environnement technique : IoT, BLE, Android Studio, Git, SQLite, Java, XML, Scrum

Réalisations

Un SDK NFC, deux mondes matériels

Billettique Calypso en NFC pour le contrôle et la distribution SNCF.

Problème
Les applications billettiques devaient lire des cartes Calypso en NFC sur des terminaux industriels (Bluebird, SpringCard) aux contraintes propres, et sur des smartphones Android standards — sans dupliquer la logique métier, et en restant fiables hors connexion.
Mon rôle
J'ai développé les SDK Kotlin, conçu leur architecture, intégré les échanges NFC/APDU via Keyple, mis en place la CI GitLab et accompagné les intégrateurs.
Décision technique
Isoler le domaine billettique (Clean Architecture) et placer chaque spécificité matérielle derrière des contrats communs : une base de code, plusieurs implémentations matérielles.
Compromis
Une couche d'abstraction à concevoir et maintenir, en échange d'un domaine unique, testable, et d'implémentations matérielles interchangeables.
Tests
Tests unitaires du domaine, pipeline GitLab CI automatisant build, tests et livraison du SDK, et application démo pour les tests fonctionnels.
Résultat
Des bibliothèques Android réutilisables intégrées dans plusieurs environnements métiers, sur terminaux industriels comme sur smartphones standards, avec persistance et synchronisation hors ligne.

Des mesures médicales qui arrivent, même quand la radio flanche

Bluetooth LE avec des dispositifs implantables (MicroPort CRM) et des équipements de santé A&D (Telnet).

Problème
Collecter de façon fiable les données de dispositifs médicaux — implantables chez MicroPort CRM, tensiomètre et balance A&D chez Telnet — malgré des liaisons Bluetooth instables et des équipements hétérogènes.
Mon rôle
J'ai développé la couche de communication BLE de l'application de télésurveillance (MicroPort CRM), ainsi que la découverte, l'appairage, le cycle de vie des connexions et la récupération des mesures (Telnet).
Décision technique
Gérer explicitement le cycle de vie des connexions et des périphériques, et séparer la communication BLE du reste de l'application (Clean Architecture chez MicroPort CRM).
Compromis
Plus de gestion d’états en amont, pour qu’une liaison perdue mène à une reprise propre plutôt qu’à des mesures perdues ou corrompues.
Tests
Tests unitaires et instrumentés (MicroPort CRM), validation fonctionnelle et investigation des remontées terrain (Telnet).
Résultat
Des données cliniques collectées et transmises de façon sécurisée au Back Office pour le suivi à distance des patients ; des connexions plus stables et une meilleure qualité des données sur les équipements A&D.

Compétences

  • Langages : Kotlin, Java, Dart, JavaScript, SQL, XML
  • Android : Android SDK, Jetpack Compose, AndroidX, Room, Retrofit, OkHttp, Coroutines, Flow, Android Studio, Google Maps
  • Connectivité : Bluetooth Low Energy, NFC, APDU, Calypso, Keyple, REST, GraphQL, IoT
  • Architecture : Clean Architecture, MVVM, DRY, Dependency Injection, Dagger, Koin
  • Qualité & DevOps : JUnit, Espresso, MockK, Gradle, GitLab CI, Jenkins, Firebase, Git, Bitbucket, Jira, Confluence, Scrum · Agile · Kanban
  • Dév. assisté par IA : AI pair programming, AI-assisted testing, AI-assisted code review, Prompt engineering
  • Autres : Flutter, SQLite, MySQL, NoSQL, Trello

Formation

  • Diplôme d'ingénierie — Télécommunications — École Nationale d'Ingénieurs de Tunis (ENIT), 2015 · Mention très bien
  • Concours national d'entrée aux cycles de formation d'ingénieurs — Math/Physique — Institut Préparatoire aux Études d'Ingénieurs d'El Manar (IPEIEM), 2012 · Mention très bien
  • Diplôme de Baccalauréat — Mathématiques — Lycée El Menzah 9 (El Menzah 9), 2010 · Mention très bien

Langues

  • Français : Courant — langue de travail
  • Arabe : Langue maternelle
  • Anglais : B2 — lu, écrit, parlé
  • Allemand : Niveau scolaire