JA.ENG
FICHE R-04 / RÔLE·CLIENT Safran · JCDecaux · Naept · ID-1 · Thales LAS·PÉRIODE 2008 — 2026·PAGE 01 / 01
R-04 · Rôle · Safran · JCDecaux · Naept · ID-1 · Thales LAS · ~ 15 ans

Outiller plutôt que répéter

Quand une tâche se répète, ou qu'un système refuse de se laisser observer, je construis l'outil — un réflexe présent sur chacun de mes postes, du banc de test FPGA à la génération de code.

ContextesSafran · JCDecaux · Naept · ID-1 · Thales
DomaineOutillage & automatisation
RôleConcepteur d'outils
Étendue2008 → 2026
Lecture~ 5 min
Bancs de testGénération de codeInstrumentationCI/CDFirmware OTATCLPythonC++ / QtDockerOpen source
##

Un réflexe, pas une mission.

§ 01 — Contexte

Aucun de mes postes ne s'intitulait « développeur d'outils ». Pourtant, à chacun d'eux, j'ai fini par en construire — parce qu'une tâche revenait trop souvent, parce qu'un système ne se laissait pas observer, ou parce que la même information était recopiée à trois endroits différents.

Cette fiche rassemble ce fil, présent de mon stage de fin d'études jusqu'à aujourd'hui. Il ne s'agit pas d'outillage pour l'outillage : à chaque fois, le déclencheur a été un problème concret qui coûtait du temps, ou un risque d'erreur qu'on ne pouvait pas se permettre.

##

Voir ce qui est invisible.

§ 02 — Observer

La première famille d'outils sert à observer. Un bus série, un lien haute vitesse, un système embarqué en fonctionnement ne se laissent pas inspecter à l'œil nu : il faut construire l'instrument qui rend leur comportement lisible.

C'était l'objet de mon stage de fin d'études — un outil d'espionnage et d'injection FlexRay sur FPGA, à une époque où les équipements du commerce étaient rares et coûteux. On retrouve la même logique dans le banc de test « Iron Bird » conçu pour un train chez Bombardier Transport, dans la messagerie de banc de test développée pour Thales, dans les outils PC de mise au point en C++/Qt chez JCDecaux, et, quinze ans après le FlexRay, dans les instruments de mesure que j'ai embarqués à l'intérieur du FPGA chez Thales LAS pour objectiver les performances des liaisons série rapides.

2009 · Outil FlexRay sur FPGA
Espionnage, analyse et injection de trames pour bancs de test automobile — Safran Engineering Services.
2010 — 2012 · Bancs de test
Banc « Iron Bird » pour un train (Bombardier Transport), messagerie de banc de test (Thales).
2014 — 2019 · Outils de mise au point
Outils PC en C++/Qt pour tester et régler les cartes d'affichage — liaisons RS422/485/232, JCDecaux.
2025 — 2026 · Instrumentation embarquée
Outils de mesure implantés dans le FPGA pour qualifier PCIe, AURORA, JESD204B/C — Thales LAS.
##

Ne pas écrire ce qui peut être généré.

§ 03 — Générer

La deuxième famille attaque un autre problème : la recopie. Dès qu'une même information vit à plusieurs endroits — dans le code matériel, dans le code logiciel, dans la documentation — elle finit par diverger. Ce n'est pas une hypothèse, c'est une certitude à l'échelle d'un projet qui dure.

Chez Thales LAS, ce problème se posait sur des milliers de registres répartis sur une dizaine de FPGA. En binôme avec un développeur logiciel, j'ai mis en place un atelier où tout part d'une description unique : le code matériel, son pendant logiciel, la documentation, les interconnexions et les bancs de test en sont dérivés automatiquement, en quelques secondes. J'y ai ajouté le versionnement et l'identification automatiques, pour qu'on sache toujours quelle version d'un composant on a en face de soi. Le détail est dans la fiche projet.

##

Industrialiser le chemin jusqu'à la production.

§ 04 — Automatiser

La troisième famille concerne le trajet du code jusqu'à son usage réel. Chez Naept, j'ai conteneurisé l'ensemble du produit et mis en place un déploiement continu via GitLab CI, derrière un reverse-proxy Traefik.

Chez ID-1, j'ai installé l'intégration continue sur un environnement qui n'en avait pas — via Bitbucket, pour les applications web comme pour le firmware des boîtiers ESP32. Côté embarqué, la chaîne fait plus que compiler : elle exécute les tests, produit les binaires, vérifie que la reprogrammation à distance fonctionne sur la nouvelle version, et fabrique l'utilitaire de flashage des boîtiers neufs.

Ce dernier point est celui dont je suis le plus content. L'utilitaire est conçu pour être lancé par mon responsable, qui n'est pas du métier : mettre un boîtier sortant de production dans son état de livraison ne demande plus de développeur. Une chaîne d'outillage qui s'arrête à la porte de l'équipe technique n'est qu'à moitié terminée.

Ce travail n'est jamais visible dans le produit fini. Il se mesure autrement : au nombre de fois où l'on peut livrer sans crainte, et au temps qu'on ne passe plus à refaire à la main une manipulation qu'on a déjà réussie.

##

Rendre l'outil réutilisable par d'autres.

§ 05 — Partager

Quand l'outil dépasse mon besoin propre, il a vocation à sortir. Chez Naept, plusieurs briques développées pour le produit ont été publiées en open source — conversion ProseMirror ↔ HTML, contributions à PHPWord, Eloquent Sequence — parce qu'il n'y avait aucune raison que le problème soit résolu deux fois.

P-01 · Source unique
Une information, un endroit
Tout ce qui peut être dérivé l'est ; la recopie manuelle est traitée comme un défaut, pas comme une méthode.
P-02 · Mesurer
Observer avant de conclure
Un système qu'on ne peut pas instrumenter est un système sur lequel on n'a que des opinions.
P-03 · Proportion
L'outil doit coûter moins que le problème
Outiller ce qui se répète ou ce qui risque de casser, pas ce qui se fait une fois.
P-04 · Transmission
Un outil que je suis seul à savoir lancer
…n'est pas terminé. Documentation, intégration au flot existant, publication — ou, au mieux, un utilitaire qu'un non-développeur lance sans moi.
##

Ce que cela dit de moi.

§ 06 — Bilan

Je supporte mal de refaire à la main quelque chose que j'ai déjà fait une fois, et encore moins de reposer sur une vérification humaine là où une machine serait plus fiable.

Ce réflexe a une conséquence directe sur ma façon de concevoir : je cherche tôt la représentation qui permettra de tout dériver ensuite, et je préfère investir quelques jours dans un outil plutôt que de payer indéfiniment le prix d'une tâche répétitive. C'est aussi, très concrètement, ce qui rend un projet supportable dans la durée pour ceux qui le reprendront.

« Le bon moment pour construire l'outil, c'est la deuxième fois qu'on fait le travail à la main — pas la dixième. »

— note d'auteur