Je conçois des architectures et des outils réutilisables, développe et accompagne les équipes pour répondre à des besoins partagés. Développeur depuis 2011, principalement avec Symfony et TypeScript.
Je conçois des architectures et des outils réutilisables, développe et accompagne les équipes pour répondre à des besoins partagés. Développeur depuis 2011, principalement avec Symfony et TypeScript.
Développement et maintenance du monolithe Symfony de la plateforme de convoyage de véhicules.
Accompagnement technique d’une squad Symfony / React sur le logiciel de gestion pour associations.
Management de l’équipe et développement de fonctionnalités critiques, avec intervention directe sur les incidents.
Pilotage technique d'une migration AWS majeure : -45% de coûts infra.
Modernisation stack et performances : Core Web Vitals (CLS réduit à 0,0), optimisation backend.
Introduction des ADR (Architecture Decision Records) pour tracer et documenter les choix structurants.
Référent technique transverse auprès d’une équipe en croissance : mentoring et cohérence de l’architecture.
Structuration de la première squad en six mois avec le Head of Engineering : fonctionnement et rituels utilisés comme modèle pour le passage à quatre squads, dans une équipe de développement multipliée par quatre.
Responsabilité technique sur 750g.com et l’Académie du Goût.
Bundle Symfony de contenu et de SEO sur 750g.com (~8M visites/mois) : documents typés, champs personnalisables, héritage hiérarchique et URL découplées de la base de données.
Réutilisation envisagée chez Allociné, non retenue pour des raisons d’organisation interne.
Lead technique de la refonte asynchrone du tunnel de paiement des deux sites pour la DSP2 (Académie du Goût : ~700k visites/mois).
Industrialisation des pratiques de code (Code Reviews, qualité).
Développement backend de la plateforme e-commerce.
Réécriture d’un ORM pour abstraire les bases SQL et NoSQL, locales ou distantes ; compatibilité MySQL, MongoDB et Redis.
Architecture et pilotage de la migration d'un système legacy (Zend) vers Symfony.
Mise en place des pipelines CI/CD pour automatiser et sécuriser les déploiements.
Évolution de consultant à responsable technique, avec responsabilité sur l’architecture et l’organisation du développement.
Algorithme de rapprochement offres/candidats par proximité pondérée : milliers de profils, plus de 20 compétences techniques et comportementales notées de 0 à 5.
Direction de la migration du framework propriétaire vers l'écosystème Symfony.
Déploiement en production de la solution 'Sans CV' pour Pôle Emploi.
Développement d’applications métier et d’outils internes, migrations Symfony et participation à des projets de R&D pour de grands comptes.
Design et développement d'un outil interne haute performance (Node.js, WebSocket).
Développement et maintenance des modules de paiement.
Création, à mon initiative, d’un outil de suivi clients/projets partagé entre équipes, avec mise à jour en temps réel (Node.js 0.8, WebSockets).
Optimisation et maintenance des processeurs pour le module Proxy (Regex / C# / XML).
Bac+5
Audit d'un système d'information existant.
Conseil sur la stratégie d'un système d'information.
Conception et mise en œuvre de systèmes informatiques et réseaux.
Management de projets en France et à l'international.
Management d'équipes interculturelles et accompagnement du changement.
Développement d'affaires informatiques et gestion client.
Entrepreneuriat et développement d'activités innovantes.
Moteur de rendu JSX vers HTML en TypeScript, sans React ni JavaScript côté navigateur.
Moteur de rendu sans dépendance, avec props et attributs typés.
Sortie échappée et URL filtrées par défaut ; la suite de tests est elle-même contrôlée par mutation.
Fragments différés et streaming, précompilation, plugin Vite et règles ESLint.
Bibliothèque de traduction typée en TypeScript, sans dépendance et sous les 500 octets compressés.
Les clés de traduction sont autocomplétées.
Un paramètre mal orthographié dans une traduction est une erreur de compilation, pas un bug en production.
Fonctionne dans le navigateur et sous Node.js, sans configuration.