Ouvert aux opportunités en remote ou en télétravail fréquent

Ingénieur iOS senior

Amissan Amoussou-G.

Actuellement ingénieur de développement iOS chez Instant System, où la billettique mobile est mon domaine d'expertise.

J'ai eu la chance de travailler dans des entreprises de toutes tailles depuis le début de ma carrière : une startup de moins de dix salariés, une entreprise de taille intermédiaire avec Instant System, et un grand groupe du CAC 40 avec Orange, via Inetum. Je suis très versatile et je m'adapte facilement à mon environnement comme à mon cadre de travail. Ce qui ne change pas, quel que soit le contexte, c'est ma rigueur et mon engagement dans mon équipe et dans la vie de l'entreprise.

Pendant une année complète, j'ai tenu seul la billettique mobile iOS d'Instant System. J'y ai conçu des fonctionnalités qui sécurisent aujourd'hui nos applications de m-ticket.

  • Alpes-Maritimes
  • Télétravail complet ou fréquent
  • Français · anglais professionnel (TOEIC 840)
Écran principal de KCalories : le journal alimentaire de la journée.KCalories

~5 M

C'est le nombre de personnes qui utilisent aujourd'hui des applications auxquelles j'ai contribué.

6 ans

Six années de développement iOS professionnel, dont une en alternance.

> 99,9 %

C'est le taux de sessions sans crash de KCalories, et la mesure du sérieux que je mets dans ce que je livre.

01 · Problèmes résolus

Du problème posé à la mise en production

Deux contextes très différents : la billettique embarquée dans trente-trois applications de transport, et une application que j'ai menée seul de bout en bout.

La billettique mobile des réseaux de transport

Instant System · depuis mai 2023 · en production

J'arrive dans une équipe sans aucun développeur mobile, seul sur le périmètre billettique de l'ensemble du portefeuille — pendant un an. Voici cinq chantiers, avec le problème qui les a déclenchés et ce qu'ils ont produit.

01L'authentification qui déconnectait sans raisonUn code hérité que personne ne voulait toucher — refondu avec des acteurs

Problème

Quand plusieurs requêtes recevaient une réponse « non autorisé » en même temps, chacune déclenchait son propre rafraîchissement de jeton. Les rafraîchissements concurrents s'invalidaient entre eux, et l'utilisateur se retrouvait déconnecté sans raison apparente. Le code d'authentification datait de 2019 et personne ne voulait y toucher.

Décision

J'ai pris l'initiative de la refonte, et je suis passé en async/await avec un acteur pour porter l'état d'authentification.

Pourquoi un acteur plutôt qu'un verrou : un verrou protège l'état à condition qu'on pense à le prendre partout — rien ne le vérifie, et un verrou tenu pendant une attente asynchrone est un blocage qui n'attend que son heure. Avec un acteur, l'isolation devient une propriété du type : tout accès venant de l'extérieur est nécessairement sérialisé, et l'oubli n'est plus possible.

Le cœur de la correction : la tâche de rafraîchissement en cours est mémorisée. Les requêtes concurrentes n'en lancent pas une nouvelle, elles attendent la même. Un seul rafraîchissement, quel que soit le nombre d'appels simultanés — plus une garde contre la boucle de réessais sur un même appel.

Résultat

L'authentification sur TCL est devenue nettement plus stable. Fin des déconnexions inexpliquées — celles qu'on ne reproduit jamais en test et qu'on ne voit qu'en production.

actorasync/awaitTaskSendable
02La fraude au QR codeUne initiative en sprint d'innovation, devenue une fonctionnalité vendue

Problème

Un titre dématérialisé s'affiche en QR code. Les fraudeurs en prenaient une capture d'écran qu'ils transmettaient à des tiers — et au contrôle, rien ne distinguait la copie de l'original.

Décision

En sprint d'innovation, j'ai pris l'initiative de concevoir une bibliothèque interne qui masque le contenu de l'écran dès qu'une capture ou un enregistrement est en cours. Le titre reste lisible pour son porteur, et disparaît de tout ce qui pourrait être partagé.

Résultat

Déployée sur l'ensemble des applications, puis reprise sur le nouveau socle. Les clients en sont satisfaits — au point que c'est devenu une fonctionnalité qu'ils paient. Une idée de sprint devenue une ligne de valeur.

03Le rechargement de carte sur le réseau lyonnaisDu POC à la production, développé quasiment seul

Problème

Le réseau lyonnais attendait de pouvoir recharger une carte de transport depuis le mobile. Côté iOS, tout restait à faire : l'intégration du SDK du prestataire de billettique n'avait jamais été menée.

Décision

J'ai d'abord prouvé l'intégration par un POC — un POC ne doit pas montrer que ça marche, il doit montrer ce qui va coincer en production. Puis j'ai développé quasiment seul la fonctionnalité complète sur iOS, jusqu'à la mise en production.

Résultat

Livrée. Je suis aujourd'hui l'un des référents techniques de l'application TCL, dont je suis l'expert, et je porte le lancement du m-ticket dessus.

04Tenir la clean architecture jusqu'au boutLe produit porte le défaut, le prestataire n'override que sa différence

Problème

L'architecture d'abstraction par prestataire de billettique avait été posée par le tech lead. Mais des implémentations totalement indépendantes du prestataire vivaient quand même dans les modules prestataires — donc dupliquées autant de fois qu'il y a de fournisseurs.

Décision

J'ai créé le module d'un nouveau prestataire alors qu'il présentait peu de spécificités : le faire vivre à part aurait été plus court, mais aurait laissé un trou dans l'architecture. La cohérence de bout en bout valait la ligne de code en plus.

Et j'ai milité pour — et obtenu — la remontée au niveau du produit des implémentations indépendantes du prestataire. Les prestataires ne surchargent plus que ce qu'ils veulent réellement changer.

Résultat

Moins de duplication entre fournisseurs, et une règle claire qui tient sans arbitrage : le produit porte le comportement par défaut, le prestataire n'override que sa différence.

05Le lancement du nouveau socleOùra et la Toscane, sur tous les pans fonctionnels

Problème

Le nouveau socle produit, en clean architecture avec injection de dépendances, devait embarquer toute la billettique — sans régression par rapport à un socle éprouvé depuis des années.

Décision

Je suis intervenu sur tous les pans fonctionnels : catalogue d'achat, panier, produits à paramètres, historiques d'achat, gestion de bénéficiaires, achat pour autrui. Et j'ai écrit la bibliothèque interne de génération des QR codes à partir d'un payload encodé — la brique qui porte la validation du titre et son contrôle.

Résultat

Socle lancé sur Oùra (Auvergne-Rhône-Alpes) et sur la Toscane. J'y ai appris SwiftUI, l'injection de dépendances et cette architecture en production, sur un produit livré.

SwiftSwiftUIUIKitSwift ConcurrencyActeursClean ArchitectureModules SPMInjection de dépendancesXcodeGenJenkinsfastlane · match

KCalories, le compagnon nutritionnel

Projet personnel · quatre stacks, seul, en cinq mois

App Store

Problème

J'ai payé pour trois applications de suivi nutritionnel. Le prix n'a jamais été le frein — aucune ne réunissait tout : le jeûne, le suivi calorique, le suivi cétogène en glucides nets, et une interface qui ne se subit pas.

Je voulais aussi savoir si je pouvais tenir un produit entier, pas seulement une couche iOS.

Décisions et réalisations

  • Construire les quatre stacks moi-même plutôt que d'assembler des services : application iOS, backend, back-office d'administration, page de présentation. Tenir le produit de bout en bout était le but, pas un moyen.
  • Architecture stricte et modules SPM dès le premier jour, quand rien ne l'imposait encore — les frontières se posent avant d'avoir de quoi les remplir, sinon elles ne se posent jamais.
  • Feature flags et intégration continue dès la première semaine, pour livrer sans bloquer et sans rituel manuel.

Résultats

  • Publiée sur l'App Store cinq mois après la première ligne de code.
  • Plus de 99,9 % de sessions sans crash, relevés dans App Store Connect — au-dessus de ce qu'on attend d'une application mobile qui tourne bien.
  • Version 2.0 vingt jours après la 1.0 : la chaîne de livraison tenait.
  • Disponible en français et en anglais, avec deux thèmes complets.
SwiftUISwiftDataClean ArchitectureModules SPMFeature flagsBackendBack-officeCI/CDFR · EN
02 · Applications en production

33 applications de transport sur lesquelles j'ai travaillé

Chez Instant System, les applications de transport sont construites en marque blanche sur un socle commun. La couche de billettique que je développe et maintiens est embarquée dans chacune de celles-ci — de Lyon à la Toscane, jusqu'à la Polynésie française.

Applications éditées par les autorités de transport et leurs exploitants. Ma contribution porte sur la couche mobile de billettique — achat, usage, validation et contrôle — et son intégration dans chaque application.

03 · Compétences clés

Quelques compétences clés, et des exemples concrets d'utilisation

Concurrence et état partagé

Les jetons de session, leur renouvellement et les retours d'erreur sont l'endroit où les accès concurrents produisent les bugs qu'on ne reproduit jamais. Acteurs, async/await, isolation : ce que le compilateur garantit à ma place vaut mieux que ce que je promets de vérifier.

Frontières et modularisation

Clean Architecture en modules séparés plutôt qu'en dossiers, et des modules qui dépendent d'un contrat, jamais d'une implémentation. Une frontière que le compilateur ne refuse pas n'est pas une frontière — c'est une convention qu'on finit par oublier.

Du code au produit livré

Génération de projet par spec plutôt que par fichier binaire, signature gérée par fastlane et match, pipelines par produit et par module, feature flags pour découpler la livraison de la mise en service. Ce qui n'est pas automatisé finit par ne pas être fait.

04 · Missions

Où j'ai travaillé, et ce que j'y ai fait

Ingénieur iOS

Instant System · Sophia Antipolismai 2023 → aujourd'hui
Référent technique billettiqueScrum Master · depuis février 2025Ambassadeur IATuteur
  • Seul développeur mobile du périmètre billettique pendant un an, sur l'ensemble du portefeuille : stabilisation de la production et développement de fonctionnalités.
  • Développement quasiment seul du rechargement de carte de transport sur l'application TCL, dont je suis aujourd'hui l'un des référents techniques.
  • Deux bibliothèques internes conçues et livrées : la protection anti-fraude des titres à l'écran, et la génération des QR codes de validation.
  • Création du module d'un nouveau prestataire billettique, et remontée au niveau du produit des implémentations indépendantes du prestataire — défendue, puis obtenue.
  • Refonte complète de la gestion de session — jetons, renouvellement, retry, déconnexion — portée par des acteurs et async/await.
  • Onboarding de tous les développeurs mobiles arrivés après moi, iOS et Android ; tutorat officiel d'un développeur iOS.
  • Ateliers d'architecture avec le CTO et les architectes ; démos client ; conduite d'entretiens de recrutement.
  • Scrum Master de mon équipe sans quitter le développement — et resté l'un de ses principaux contributeurs techniques.

Swift · SwiftUI · UIKit · Swift Concurrency, acteurs, async/await · Combine · Clean Architecture 3 puis 4 couches · injection de dépendances · SPM, XCFrameworks, CocoaPods · XcodeGen et specs YAML · Jenkins · fastlane · match · Bitbucket · SAFe

Ingénieur iOS

Mail Orange — Orange, via Inetum · Mouginsjanv. 2022 → avr. 2023
  • Fonctionnalités et corrections sur une messagerie à environ un million d'utilisateurs, dans une équipe de trois développeurs iOS.
  • Sujets menés de bout en bout dès les premières semaines : brouillons, gestion des pièces jointes.
  • Maintien de la compatibilité multi-versions d'iOS et du layout iPad, sur une base très utilisée en tablette.
  • Travail sur un existant hétérogène — VIPER sur le composeur, MVP ailleurs.
  • Participation aux refinements et aux décisions techniques ; échanges avec les équipes tierces sur les services intégrés.

Swift · Objective-C · UIKit programmatique, xib, storyboards, Auto Layout · MVP · VIPER · Delegate, Observer · UIDocumentPicker · app extensions · CocoaPods · SAFe

Ingénieur iOS — alternance

STIILT · Niceoct. 2020 → oct. 2021
  • Migration complète d'Objective-C vers Swift de l'application d'autopartage de véhicules premium, déjà publiée sur l'App Store — la base passe de 30 % à plus de 92 % de Swift en un an.
  • Migration menée en parallèle des livraisons de fonctionnalités par un collègue, sur la même base, sans interrompre les mises en production. La stratégie était de mon ressort.
  • Refonte de la couche réseau, profiling et optimisation.

Objective-C → Swift · UIKit · MVC · storyboards, xib · CocoaPods · migration incrémentale sur application vivante

Formation

2020 — 2021Master 2 Ingénierie informatiqueUniversité Côte d'Azur — Nice
2019 — 2021Diplôme d'ingénieur en sciences informatiquesPolytech Nice Sophia Antipolis — spécialité Intelligence Ambiante et Mobile
2016 — 2019Ingénieur des travaux informatiquesInstitut Africain d'Informatique — Lomé

Certifications

novembre 2025Professional Scrum Master IScrum.orgVérifier le certificat
2025Certified SAFe 6 PractitionerScaled AgileVérifier le certificat

Projets ouverts

Advanced CalendarComposant calendrier SwiftUI, construit par pont sur UIKit pour dépasser les limites de UICalendarView. Écrit parce que le framework ne suffisait pas.
News AppFil d'actualité en MVVM, parsing en direct, signature par fastlane et match. Écrite pour l'entretien technique d'Instant System.Code source

Langages

SwiftObjective-C

Interface

SwiftUIUIKitAuto LayoutDynamic TypeiPadApp extensions

Concurrence

async/awaitActeursSwift ConcurrencyCombineGCD

Architecture

Clean ArchitectureMVVMMVPVIPERInjection de dépendancesModules SPMFeature flags

Outils et CI/CD

XcodeXcodeGenSPMCocoaPodsXCFrameworksfastlanematchJenkinsGitBitbucket

Collaboration et pilotage

Jira — administration, JQL, boards kanbanConfluenceGoogle Workspace — agendas partagés, salles, visios

Méthode

SAFeScrumCode reviewTests unitairesRefinementMentorat
Hors du code

Qui je suis

Mister Good MoodÉlu en 2024, au vote de toute l'entreprise.

Délégué de classe, président du comité étudiant, capitaine d'équipe. Ça a commencé tôt et ça ne s'est jamais arrêté : aujourd'hui je suis Scrum Master et coach de mon équipe, et je porte le brassard au foot de l'entreprise.

Les sujets dont personne ne veut, je les prends. La bibliothèque anti-fraude est sortie d'un sprint d'innovation où j'avais carte blanche. L'authentification n'avait pas bougé depuis 2019 et tout le monde la contournait — je l'ai reprise. Et travailler seul sur un périmètre entier ne me fait pas peur : je l'ai fait pendant un an.

En dehors, c'est la salle et le terrain. La nutrition et la mécanique du corps me passionnent — assez pour que j'en aie fait une application.

Ce qui m'occupe ailleurs

  • Musculation
  • Nutrition
  • Football
  • Photo de paysages
  • Voyages

Travaillons ensemble.

Je suis bien dans ma mission actuelle chez Instant System, où j'occupe une place centrale. Je reste néanmoins ouvert aux opportunités intéressantes, celles où je peux apporter ma pierre à l'édifice. Écrivez-moi de préférence par mail.

amissan.ag@outlook.fr