Product Goal
En tant que manager technico/fonctionnel, je souhaite améliorer ma capacité à interagir efficacement avec les développeurs en construisant un site web personnel qui démontre ma compréhension des pratiques du software craftsmanship moderne (TDD, BDD, Clean Code, DDD). L'objectif n'est pas de devenir développeur, mais de développer une compréhension concrète des enjeux techniques, de la qualité du code, et de l'expression du métier dans le code source, afin de mieux dialoguer, challenger et collaborer avec les équipes de développement. Le site sert de laboratoire d'apprentissage où l'IA est utilisée comme partenaire pédagogique pour accélérer cette remise à niveau, tout en garantissant que je maîtrise chaque ligne de code produite.
Contexte
Ancien développeur (1995–2020), ce projet est un laboratoire personnel de remise à niveau sur le développement web moderne. Je cherche à m'acculturer encore plus, via la pratique, à la programmation orientée objet, TDD, CI/CD, BDD (Gherkin) et des principes issus du clean code et du DDD. N'ayant pas vocation à devenir développeur (et à rattraper 30 ans d'expérience de mes amis Crafter) je le fais en s'appuyant sur l'IA comme partenaire de travail pédagogique (code sous supervision + explication détaillée). L'objectif reste fonctionnel : avoir un site vitrine pour présenter mon parcours et mes compétences Mais les moyens et les stratégies mis en œuvre visent la qualité du design, la lisibilité du code et l'expression explicite du métier dans le code. C'est de l'"over engineering" pour quelques pages qui auraient pu être réalisées avec WordPress mais... l'exercice aurait été moins formateur.
Objectif
Toucher du doigt ce que pratiquent les crafters avec qui j'ai eu l'occasion de travailler. Mon objectif est de pratiquer :
- la programmation orientée objet
- dans un contexte web complet (front-end et back-end)
- avec des langages et outils modernes
- en appliquant, même à petite échelle, les bonnes pratiques du software craftsmanship
Pour y parvenir, j'ai fait un choix assumé : utiliser une IA comme partenaire de travail pour coder « à ma place » mais :
- produire du code sous ma supervision
- expliquer en détail ce code, son architecture et ses choix de conception, afin que je progresse et garde la plus grande maîtrise possible de ce qui est construit
Ici, l'IA n'est pas une béquille, mais un accélérateur d'apprentissage.
Mon parcours : développeur, puis décideur
Je suis un ancien développeur, avec une expérience professionnelle allant de 1995 à 2020, principalement sur l'environnement 4D. Ce contexte m'a permis de construire de très solides bases en :
- modélisation de données
- conception de bases de données relationnelles
- SQL (un peu rouillé)
- algorithmie et raisonnement logique
En revanche, mon parcours ne m'a pas exposé directement à :
- la programmation orientée objet « pure »
- les design patterns
- les frameworks modernes
- la culture du code issue du software craft
Dès 2010, mon entreprise a financé et j'ai dirigé une équipe de développeurs C#. Nous avons connu un échec marquant : en trois ans, le projet est devenu un monolithe spaghetti… que nous avons fini par jeter. Cette expérience a été déterminante. Elle a conduit l'équipe à une remise en question profonde, puis à l'adoption progressive de pratiques solides :
- BDD & TDD
- Clean Code
- DDD
- architecture hexagonale
- CQRS et Event Sourcing
Aujourd'hui, en tant qu'ancien éditeur de logiciel, j'ai expérimenté la différence entre du code qui fonctionne et du code de qualité.
Les principes non négociables du projet
Même pour un projet personnel, même pour apprendre, je considère que le minimum est :
- CI/CD : le code est versionné, testé et déployable
- TDD : les tests guident le code
- un historique clair sur GitHub
- un déploiement rapide dans un environnement accessible à des utilisateurs réels (testeurs, amis, tiers)
- des itérations courtes et du feedback rapide
Le code n'est pas écrit « pour moi seul », mais pour être :
- lu
- compris
- critiqué
- amélioré
Un accent fort sur l'expression du métier
Je suis particulièrement attaché à la capacité du code à exprimer l'intention métier. je trouve puissant que les intentions soient "dans le code source". C'est pourquoi j'aime utiliser des scénarios BDD en Gherkin un langage compréhensible par des non-développeurs Ce principe est mal connu donc mal aimé.
Mes arbitrages
- IDE : Cursor
- Langage : TypeScript
- Frontend : Next.js
- Gestion du code : GitHub
- TDD : Jest
- BDD : Cucumber.js
- Hébergement : Vercel
Ce que j'ai fait
- Installer Cursor
- Installer Git
- Installer NodeJS
- Créer un compte GitHub (que j'ai associé à Cursor)
- Créer un compte Vercel (où j'ai créé un projet associé à mon projet sous GitHub)
- Mon premier promt dans Cursor a été de lui demander d'afficher un "Hello World"
- Après, je n'ai pas arrêté d'enchainer les prompts :
. pour faire émerger petit à petit de nouveaux contenus sur le site . pour lui demander de refactoriser le code . pour lui imposer des BDD et TDD . pour recevoir une formation sur la syntaxe en TypeScript et le comportement de Next.JS
Ce qui a émergé rapidement
- L'envie de documenter en temps réel cette expérience
- L'envie d'être le plus transparent possible et de rendre ces informations publiques
- Me détourner un temp du projet initial (refaire mon site Web) pour implémenter des fonctions de journalisations et les publier
Dora Metrics
- mettre en places les Dora Metrics qui peuvent l'être (même si c'est parfois un peu artificiel)
- j'ai déjà eu des email d'erreur de déploiement envoyés par Vercel : je peux donc calculer le "Failed deployment recovery time"
- présenter une synthèse, automatiquement tenue à jour, via une page dédiée ici

