La plupart d'entre nous prenons des milliers de photos chaque année sans jamais prendre le temps d’en regarder la plupart. Popsa est là pour vous permettre d’identifier celles qui comptent vraiment pour vous et à les transformer en objets concrets que vous conserverez et prendrez plaisir à redécouvrir, encore et encore.
Nos applications mobiles embarquent des modèles de machine learning directement sur les appareils des utilisateurs, sans transfert vers le cloud. Elles analysent les photos, repèrent les visages et les moments significatifs, puis génèrent une mise en page qui raconte une histoire. Vu de l’extérieur, ça parait simple, et c’est précisément l’objectif.
En réalité, cette simplicité repose sur une architecture complexe : applications iOS, Android et web, services backend pour les règlements et la gestion des commandes, infrastructure dédiée au traitement et à la distribution des images dans plus de 50 pays. Ces systèmes traitent des données personnelles sensibles et des transactions financières. Ils doivent rester performants et sécurisés, et il est essentiel que l’équipe entretienne une compréhension claire et à jour de l’ensemble du système.
Cette compréhension repose sur une documentation qui décrit les interactions entre les systèmes, les conventions en place et les zones sensibles à surveiller. C’est ce qui permet à une équipe de maintenir, sécuriser et faire évoluer des systèmes complexes, sans dépendre d’une seule personne à l’origine de chaque élément. Mais maintenir cette documentation à jour est un réel défi auquel toutes les équipes d’ingénierie ont été confrontées à un moment ou à un autre –, la nôtre y compris !
J’ai travaillé au sein de suffisamment d’équipes d’ingénierie pour connaître ce cycle. À chaque fois, quelqu’un dit : « cette fois, on va vraiment tenir la doc tech à jour correctement ». S’ensuit un regain d’efforts : les pages se multiplient, les conventions sont consignées, les schémas d’architecture prennent forme. Parfois, les équipes vont même jusqu’à changer entièrement d’outil (GitHub, Confluence, Coda), insufflant un nouvel élan. Pendant quelques semaines, parfois quelques mois, tout est parfait.
Puis, ça se dégrade.
Non pas par manque d’attention, mais parce que l’évolution d’un logiciel n’est pas linéaire. On peut absorber des dizaines de changements progressifs sans que la documentation devienne désuète. Puis survient une refonte de la couche d’authentification, une migration vers un nouveau framework, ou une réorganisation d’API… La documentation était juste au moment où elle a été rédigée, mais le code, lui, a continué d’évoluer. Par exemple, nous venons de refondre notre application iOS, passant d’une navigation linéaire à une navigation par onglets. Après un changement d’une telle ampleur, des sections entières de documentation peuvent décrire un système qui n’existe plus. La documentation devient facilement obsolète.
La plupart des ingénieurs en sont conscients. C’est pourquoi notre équipe s’est récemment dit que pour résoudre ce problème il fallait considérer la documentation comme un système, plutôt que comme une simple tâche.