Ma méthodologieMy method

Je construis un projet comme on construit une maison. I build a project the way you build a house.

Je ne pose pas les briques avant d'avoir coulé les fondations, et je ne coule pas les fondations avant de savoir qui habitera là. Chaque projet que je démarre passe par les mêmes cinq documents, dans le même ordre, du terrain jusqu'à la fiche de pose d'un seul mur — puis par le raccordement aux réseaux, sans quoi rien n'est habitable.

I don't lay bricks before the foundations are poured, and I don't pour foundations before I know who will live there. Every project I start goes through the same five documents, in the same order, from the plot of land down to the fitting sheet for a single wall — then through the utility hook-up, without which nothing is habitable.

Ces templates, je les ai écrits pour moi, à force de reprendre des projets que j'avais laissés de côté et de ne plus savoir ce que mon code d'il y a trois mois était censé faire. Ils ne décrivent aucun projet en particulier : ils décrivent ma façon de l'aborder.

I wrote these templates for myself, after picking up projects I had set aside and no longer knowing what my code from three months earlier was supposed to do. They describe no particular project: they describe how I approach one.

Je les remplis toujours dans cet ordre, et je m'interdis de passer au suivant tant que le précédent est flou. C'est la seule discipline que je m'impose vraiment — le reste s'en déduit.

I always fill them in this order, and I refuse to move to the next one while the previous one is still vague. It is the one discipline I really hold myself to — the rest follows from it.

FondationsFoundations Cahier de chargesRequirements brief
PlanBlueprint Spécifications fonctionnellesFunctional specifications
HabitantsResidents User stories
ChantierSite work Plan de développementDevelopment plan
BriqueBrick Spécification technique d'une featureTechnical spec for one feature
RéseauxUtilities Infrastructure et exploitationInfrastructure and operations
01 / Les fondations01 / The foundations

Cahier de chargesRequirements brief

J'écris d'abord pourquoi le projet existe, pour qui, et dans quelles limites. Le contexte, les objectifs utilisateurs et business, le périmètre par type d'utilisateur, puis les besoins techniques : architecture backend, mobile, médias, mode hors-ligne, performance, monitoring, RGPD.

I first write down why the project exists, for whom, and within what limits. The context, the user and business goals, the scope per user type, then the technical needs: backend architecture, mobile, media, offline mode, performance, monitoring, GDPR.

Je termine par ce que j'avais l'habitude de remettre à plus tard : les contraintes, les phases, les indicateurs de succès et les risques. C'est le document qui m'autorise à dire non à une bonne idée six mois plus tard, la mienne y compris.

I end with what I used to put off: the constraints, the phases, the success metrics and the risks. This is the document that lets me say no to a good idea six months later, including my own.

Tant que je n'arrive pas à écrire la section 3 sans hésiter, c'est que je ne sais pas encore pour qui je construis. Je n'ouvre pas l'éditeur ce jour-là.

As long as I can't write section 3 without hesitating, I don't yet know who I am building for. I don't open the editor that day.

Ce que contient le documentWhat the document holds
1 · Introduction — contexte, inspiration
2 · Objectifs — utilisateurs, business
3 · Périmètre fonctionnel par cible
4 · Besoins techniques
5 · Valeurs ajoutées clés
6 · Contraintes et recommandations
7 · Planning et phases
8 · Indicateurs de succès
9 · Risques et mitigation
1 · Introduction — context, inspiration
2 · Goals — users, business
3 · Functional scope per audience
4 · Technical needs
5 · Key added value
6 · Constraints and recommendations
7 · Schedule and phases
8 · Success metrics
9 · Risks and mitigation
Ce que contient le documentWhat the document holds
Grands modules → sous-modules
· fonction
· champs requis
· processus de validation
· vues et filtres disponibles
Fonctionnalités globales
Projets futurs (roadmap)
Conformité et légal
Main modules → sub-modules
· function
· required fields
· validation process
· available views and filters
Cross-cutting features
Future work (roadmap)
Compliance and legal
02 / Le plan02 / The blueprint

Spécifications fonctionnelles détailléesDetailed functional specifications

Le cahier de charges dit ce que je construis ; celui-ci dit comment chaque pièce se comporte. Je descends module par module : la fonction, les champs requis, le processus de validation, les vues disponibles, les filtres.

The requirements brief says what I am building; this one says how each room behaves. I go down module by module: the function, the required fields, the validation process, the available views, the filters.

Je donne un chapitre à part aux systèmes transverses — géolocalisation, modération — parce qu'ils traversent les murs et que je me suis déjà fait piéger à les traiter comme des détails d'un module. La roadmap et la conformité ferment le document.

I give cross-cutting systems — geolocation, moderation — a chapter of their own, because they run through the walls and I have already been caught treating them as details inside a module. The roadmap and compliance close the document.

03 / Les habitants03 / The residents

Là, j'arrête de penser en développeur. This is where I stop thinking like a developer.

En tant que quelqu'un qui n'a pas écrit ce code,
je veux faire une seule chose, simplement,
afin de ne pas avoir à comprendre la machine derrière.
As someone who did not write this code,
I want to do one single thing, simply,
so that I never have to understand the machine behind it.

Une spécification décrit un système ; une user story décrit quelqu'un qui s'en sert. J'écris ensuite des critères d'acceptation que je peux cocher, ce qui m'empêche de décider tout seul que « c'est fini ».

A specification describes a system; a user story describes someone using it. I then write acceptance criteria I can tick off, which stops me deciding on my own that something is « done ».

Priorité MoSCoW, complexité en points, dépendances. Le récapitulatif par priorité dessine mon MVP : ce que je construis d'abord, ce que j'accepte de repousser.

MoSCoW priority, complexity in points, dependencies. The summary by priority draws my MVP: what I build first, what I agree to push back.

Must have Should have Could have Won't have
04 / Le chantier04 / The site work

Plan de développementDevelopment plan

Je découpe le projet en features codées, chacune avec ses modèles, ses endpoints, ses services, ses règles métier, ses permissions et ses dépendances. Je trace le diagramme de dépendances avant de choisir par quoi je commence : je ne pose pas la toiture avant les murs, même quand la toiture est la partie amusante.

I break the project into coded features, each with its models, endpoints, services, business rules, permissions and dependencies. I draw the dependency diagram before choosing where to start: I don't put the roof on before the walls, even when the roof is the fun part.

J'en sors mes sprints, un planning estimatif et une checklist de démarrage. C'est le document que j'ouvre chaque semaine pour savoir où j'en suis.

Out of it come my sprints, an estimated schedule and a start-up checklist. It is the document I open every week to know where I stand.

01Vue d'ensemble, arborescenceOverview, folder tree
02Méthodologie standard par featureStandard method per feature
03Liste complète des featuresFull feature list
04Hiérarchie et dépendancesHierarchy and dependencies
05Ordre de développement, sprintsDevelopment order, sprints
06Planning estimatifEstimated schedule
07Checklist de démarrageStart-up checklist
Le geste qui se répèteThe gesture that repeats

Treize phases, les mêmes pour chaque feature. Thirteen phases, the same for every feature.

Je ne saute aucune étape, et je me suis fixé quatre paliers de tests bloquants : tant qu'ils ne passent pas, je ne monte pas à l'étage suivant. Ça me ralentit sur le moment ; c'est ce qui fait qu'un projet de six mois est encore reprenable au septième.

I skip no step, and I have set myself four blocking test gates: until they pass, I don't go up to the next floor. It slows me down in the moment; it is what makes a six-month project still workable in the seventh.

01SpécificationsSpecifications
02ModèlesModels
03Tests modèlesModel tests
04Services
05Tests servicesService tests
06Serializers
07Tests serializersSerializer tests
08Views
09Tests API
10URLs
11Admin
12Documentation
13Refactoring
05 / La brique05 / The brick

Spécification technique d'une featureTechnical spec for one feature

Mon dernier niveau de zoom : un seul module, avec sa priorité, sa durée estimée et ses dépendances. J'y note les modèles fichier par fichier, les champs et leurs contraintes, les managers, les méthodes, les services, les tests attendus et l'arborescence exacte des fichiers que je vais toucher.

My last zoom level: a single module, with its priority, its estimated duration and its dependencies. I note the models file by file, the fields and their constraints, the managers, the methods, the services, the expected tests and the exact tree of files I am going to touch.

Quand ce document est écrit, coder n'est plus une suite de décisions mais de l'exécution — et c'est le seul moment où je m'autorise à ouvrir l'éditeur.

Once this document is written, coding is no longer a series of decisions but execution — and that is the only point at which I let myself open the editor.

Ce que je remplis avant de coderWhat I fill in before coding
☐ Priorité · durée · dépendances
☐ Description du module
☐ Modèles — champs, managers, méthodes
☐ Utilitaires et services
☐ Tests à créer
☐ Structure de fichiers
☐ Configuration
☐ Checklist de développement
☐ Points clés
☐ Priority · duration · dependencies
☐ Module description
☐ Models — fields, managers, methods
☐ Utilities and services
☐ Tests to write
☐ File structure
☐ Configuration
☐ Development checklist
☐ Key points
06 / Les réseaux06 / The utilities

Infrastructure et exploitationInfrastructure and operations

Une maison sans eau ni électricité n'est pas habitable. Je prépare le raccordement pendant que les murs montent, pas après : environnements séparés, conteneurisation, secrets sortis du dépôt, base de données et stratégie de migration, reverse proxy et TLS.

A house without water or power is not habitable. I prepare the hook-up while the walls go up, not after: separate environments, containerisation, secrets kept out of the repository, database and migration strategy, reverse proxy and TLS.

Ensuite je l'exploite, et ça ne s'arrête jamais. Chaque commit passe par ma chaîne de CI/CD — linter, suite de tests, build de l'image, déploiement — et je ne mets rien en production sans savoir comment je reviens en arrière.

Then I operate it, and that never stops. Every commit goes through my CI/CD pipeline — linter, test suite, image build, deployment — and I put nothing into production without knowing how I roll back.

Puis je surveille : logs centralisés, métriques, alertes, sauvegardes que je restaure pour de vrai. Une sauvegarde que je n'ai jamais restaurée, je considère qu'elle n'existe pas.

Then I watch: centralised logs, metrics, alerts, backups that I actually restore. A backup I have never restored, I treat as non-existent.

C'est la partie que personne ne voit quand tout va bien. C'est aussi la seule qui me réveille la nuit, donc je préfère l'avoir écrite avant.

This is the part nobody sees when everything is fine. It is also the only one that wakes me up at night, so I would rather have written it down beforehand.

La chaîne de livraisonThe delivery pipeline
push → linter et formatagepush → linter and formatting
suite de tests complètefull test suite
build de l'image conteneurcontainer image build
déploiement stagingstaging deployment
migrations de base de donnéesdatabase migrations
production · retour arrière possibleproduction · rollback available
Ce qui tourne en continuWhat runs continuously
Supervision — logs centralisés, métriques, alertes sur seuil.
Monitoring — centralised logs, metrics, threshold alerts.
Sauvegardes — automatisées, chiffrées, testées par restauration.
Backups — automated, encrypted, tested by restoring them.
Sécurité — secrets hors du dépôt, accès SSH restreint, mises à jour système.
Security — secrets out of the repository, restricted SSH access, system updates.
Capacité — dimensionnement, cache Redis, montée en charge.
Capacity — sizing, Redis cache, scaling up.
CI/CD Docker Kubernetes Nginx · TLS Terraform Grafana Netdata Linux PostgreSQL · Redis Monitoring SauvegardesBackups

Pourquoi je m'impose autant d'écrit avant de coder Why I put myself through this much writing before coding

Je l'ai appris à mes dépensI learned it the hard way

Modifier le modèle de données au cinquième mois d'un projet me coûte un temps énorme : migrations, services, tests et API à reprendre en même temps. Décider tôt m'épargne des bugs, des maux de tête et des frustrations.

Changing the data model in month five of a project costs me an enormous amount of time: migrations, services, tests and API all have to be reworked at once. Deciding early spares me bugs, headaches and frustration.

Je travaille par intermittenceI work in bursts

Mes projets s'interrompent et reprennent. Ces documents gardent l'avancement hors de ma tête, cases cochées comprises : je reprends là où je m'étais arrêté, pas là où je crois m'être arrêté.

My projects stop and start again. These documents keep the progress outside my head, ticked boxes included: I pick up where I actually left off, not where I think I left off.

Je veux pouvoir déléguerI want to be able to delegate

Une feature spécifiée à ce niveau, je peux la confier sans réunion : les règles métier, les permissions et les tests attendus sont déjà écrits noir sur blanc.

A feature specified at this level I can hand over without a meeting: the business rules, the permissions and the expected tests are already written down.

Voir les projets construits comme ça See the projects built this way