De septembre 2020 à septembre 2023, j'ai travaillé pour SNCF Réseau au sein d'une équipe qui construit des outils numériques pour l'exploitation du réseau ferré. Le contexte : une plateforme de données ferroviaires composée d'une dizaine de microservices, développée par une grande équipe mixte réunissant des salariés, des indépendants et des consultants de plusieurs cabinets. Il s'agit d'une mission au sein d'une équipe client, pas d'un produit Business Agile, et les services décrits ici ont été construits à plusieurs.
Le projet en détail
J'y intervenais comme technical lead, sur le back-end Python et avec une forte composante DevOps. J'ai développé des API REST en Django et Django REST Framework, dont une partie sur des données géographiques du réseau, stockées dans PostGIS et manipulées avec GeoDjango. J'ai aussi écrit des traitements asynchrones avec Celery et Redis, et sécurisé des points d'accès entre services.
Tous les services de l'équipe partaient d'un gabarit de projet commun. Je l'ai fait évoluer : passage à Django 4, hooks de qualité exécutés dès la génération d'un nouveau service, séparation des réglages de déploiement et d'intégration continue. Une amélioration apportée au gabarit profitait ainsi à chaque nouveau service.
L'essentiel de ma contribution tenait à l'industrialisation : pipelines GitLab CI organisés en étapes de tests, images Docker réorganisées, déploiements Kubernetes pilotés par Helm, gestion des secrets et suivi des erreurs avec Sentry. J'ai également installé l'outillage de qualité (pytest et mesure de couverture, Black, isort, Flake8, mypy) pour que chaque service réponde aux mêmes exigences avant d'être livré.
Le travail au quotidien suivait un cadre précis : un ticket par évolution, une branche par ticket, une merge request relue par un autre membre de l'équipe, puis un déploiement automatique sur les environnements de recette avant la production. Les données géographiques demandaient une attention particulière aux performances des requêtes spatiales et au volume des tables, que l'équipe traitait par partitionnement et par tâches asynchrones.
La collaboration s'est poursuivie au-delà de cette mission : de septembre 2023 à octobre 2024, je suis intervenu auprès du Groupe SNCF sur le partenariat et le financement de l'innovation ferroviaire, une mission sans développement que cette fiche laisse de côté.
En octobre 2023, la mission a changé de nature et d'interlocuteur : j'ai rejoint le groupe SNCF sur le cofinancement de recherche en intelligence artificielle, autour de la chaire portée avec l'École polytechnique. Un an de travail, jusqu'en octobre 2024, sur un terrain très différent du précédent : non plus livrer des services, mais instruire et suivre des travaux de recherche appliquée.
Une précision sur ce que cette fiche ne contient pas. Le code de cette mission vit sur les dépôts internes du groupe, derrière son réseau, et les données qu'il manipule sont confidentielles. C'est pourquoi aucune page SNCF de ce site ne donne de nombre de commits, de volume de lignes ni de capture d'écran, là où d'autres fiches en portent : la différence tient à qui possède le dépôt, pas à l'importance du travail. Les missions elles-mêmes, en revanche, se racontent sans difficulté, et les paragraphes qui précèdent les décrivent : ce qui ne se publie pas, c'est le code et les mesures, pas la nature de ce qui a été construit.
Cette mission m'a appris à avancer vite dans une grande organisation sans renoncer à la rigueur : conventions partagées, revues de code systématiques, livraisons fréquentes et traçables. C'est la même exigence que j'applique aujourd'hui aux projets de Business Agile, à une échelle plus petite et avec un interlocuteur unique.