Esc
 Naviguer  Ouvrir Esc Fermer
Aller au contenu

15.3 — Communication & collaboration

🎯 Objectif : devenir le coéquipier que les autres veulent dans leur équipe. Communiquer en async par défaut, écrire pour être lu, donner du feedback qui aide, dire non quand c’est nécessaire — sans abîmer la relation.

À l'issue de cet axe, tu sauras :

  • Rédiger un RFC, un ADR, un post-mortem suivant des templates éprouvés
  • Donner un feedback de code review respectueux et utile (Conventional Comments)
  • Pratiquer le pair / mob programming — quand et comment
  • Adopter l'asynchrone par défaut, défendre ton focus sans nuire à l'équipe
  • Identifier quand une réunion est justifiée — et la rendre productive

Confirmé 13 min prérequis : aucun prérequis technique

« Si la réunion peut être un message, c’est un message. » — devise des équipes distribuées matures

FormatCoûtQuand l’utiliser
Doc / RFC / ADR0 interruptionDécisions structurantes, contexte durable
Slack messageFaibleQuestion rapide, partage info
Slack threadFaibleDiscussion ciblée
Loom / vidéo asyncMoyenneDémo, walkthrough complexe
Réunion 1:1ForteFeedback humain, conflit, mentorship
Réunion d’équipeTrès forteDécision urgente nécessitant discussion live

Règles :

  • Une question fermée → message Slack.
  • Une question ouverte → thread.
  • Plus de 5 ping-pong dans un thread → escaler en 15 min de call.
  • Décision impactant > 3 personnes → écrire un RFC.

Un RFC est un document court qui propose une décision technique ou organisationnelle. Format pratiqué chez Cloudflare, Stripe, Vercel, etc.

  • Choix structurant : « Migrer de REST vers GraphQL »
  • Nouvelle architecture : « Multi-tenancy par schéma Postgres »
  • Convention d’équipe : « Adopter Conventional Commits »
  • Refactor non-trivial : « Découper le monolithe en 3 services »
# RFC-001 — <titre>
**Auteur** : @nom
**Date** : YYYY-MM-DD
**Statut** : draft / under review / accepted / rejected / superseded by RFC-N
## Contexte
Quel problème on résout. Pourquoi maintenant.
Lien vers tickets / incidents / docs pertinents.
## Proposition
Ce qu'on veut faire. En clair.
## Alternatives envisagées
| Alternative | Avantages | Inconvénients |
|-------------|-----------|---------------|
| Option A | … | … |
| Option B | … | … |
| Statu quo | … | … |
## Risques et coûts
- Migration : ~ X jours
- Risque Y : mitigation Z
## Plan d'exécution
1. Phase 1 (sem 1-2) — …
2. Phase 2 (sem 3-4) — …
3. Phase 3 (sem 5+) — …
## Métriques de succès
- Avant : X
- Cible : Y
- Comment on mesure : …
## Décision finale
À remplir une fois les commentaires intégrés.
  1. Rédige en draft, partage en lecture, 3-7 jours de feedback async.
  2. Itère sur les commentaires.
  3. Sync de 30 min si conflit non résolu en async.
  4. Décide explicitement (statut → accepted/rejected).
  5. Implémente.

Garde tes RFC dans le repo (docs/rfcs/). Versionnés, recherchables, exécutables comme code.


Un ADR est un mini-document qui capture une décision d’architecture, son contexte, et ses conséquences. Plus court qu’un RFC.

« Pourquoi diable est-ce qu’on utilise PostgreSQL au lieu de MongoDB pour ce service ? »

3 ans plus tard, plus personne ne sait. L’ADR le fige au moment de la décision.

# ADR-014 — Choix de PostgreSQL pour les commandes
**Date** : 2026-04-30
**Statut** : accepté
**Décideurs** : @alice (lead), @bob, @carol
## Contexte
On stocke des commandes avec relations vers users, products, payments.
Volumétrie attendue : 100k commandes/jour, ACID requis.
## Décision
On utilise PostgreSQL 17.
## Conséquences
### Positives
- Transactions ACID natives
- Joins riches sur relations users/products/payments
- pgvector si on veut l'embedding produit plus tard
- Équipe déjà habituée
### Négatives
- Scale vertical principalement, sharding lourd
- Pas de stockage key-value performant : pour le panier (volatile),
on utilisera Redis en complément
### Alternatives écartées
- **MongoDB** — relations complexes pas son fort
- **DynamoDB** — vendor lock AWS, pas de joins
- **MySQL** — JSON moins puissant, pas pgvector

ADR vs RFC :

  • ADR : décision prise, un fait historique. Court (1 page).
  • RFC : décision à prendre, on cherche du feedback.

Un RFC accepté devient un ADR. Beaucoup d’équipes utilisent uniquement des ADR : décision prise, capturée, terminée.


Couvert en détail dans 14.6 Fiabilité. Trois piliers :

  1. Blameless — pas de chasse aux sorcières.
  2. Sous 7 jours — la mémoire s’efface vite.
  3. Actions concrètes avec owner et deadline.

Une équipe dont les post-mortems n’aboutissent à aucune action mérite ses incidents répétés.


BénéficeEffet
QualitéDétecte bugs, mauvaises décisions
ApprentissageTout le monde apprend du code des autres
Diffusion connaissancePersonne n’est seul à connaître X
ConformitéTrace audit, GDPR, sécurité
CohérenceLe code reste lisible par tous

Conventional Comments propose une nomenclature simple :

PréfixeSens
praise:Souligner ce qui est bien — facile, à faire !
nitpick:Détail mineur, pas bloquant
suggestion:Proposition d’amélioration
issue:Problème à corriger
question:Demande de clarification
thought:Réflexion sans demande d’action
chore:Tâche annexe à faire (typo, format)
note:Information utile
nitpick: pourrais-tu utiliser `const` plutôt que `let` ici ?
suggestion (non-blocking): on pourrait extraire ça dans un util.
issue (blocking): la requête n'est pas paramétrée — SQL injection.
praise: jolie utilisation du pattern observer ici 🙂
RèglePourquoi
Review dans la journéeAu-delà, le contexte se perd, l’auteur change de tâche
Mentionner ce qui est bienPas que du négatif. Crée la sécurité psychologique
Préciser ce qui bloque« issue blocking » vs « suggestion non blocking »
Justifier les remarquesPas « c’est mal » mais « risque X parce que Y »
Question avant accusation« Pourquoi cette approche ? » > « Pourquoi tu as fait ça ? »
Limiter à 400 lignes par PRAu-delà, la review devient superficielle
Approuver quand satisfaitPas de chichis, ne traîne pas
Auteur = répondre à chaque commentaireMême par « bon point, je change »
  • « LGTM 👍 » sans avoir lu → fausse review.
  • Review dictatoriale : imposer son style sans justification.
  • Bikeshedding sur le formatage (Prettier / Biome règle ça).
  • Demander 30 changements sur une PR de 50 lignes → l’auteur abandonne.
  • PR de 2000 lignes → splitter en 5.
## Description
Ajoute le rate-limit sur /auth/login (5 req/min/IP).
Lié à #1234, RFC-027.
## Comment tester
1. `npm run dev`
2. `for i in {1..10}; do curl -X POST http://localhost:3000/auth/login -d '{}'; done`
3. À partir du 6ème : 429 Too Many Requests.
## Captures
[screenshot Postman]
## Checklist
- [x] Tests ajoutés
- [x] Doc OpenAPI à jour
- [x] Pas de breaking change

Plus la PR est expliquée, plus la review est rapide et bonne.


Deux dev sur un clavier. Pas une heure perdue — un investissement.

ModeComment
Driver / NavigatorDriver tape, navigator pense plus loin. Permutation toutes les 15-25 min
Ping-pong (TDD)A écrit le test rouge, B le fait passer, B écrit le test suivant, A le fait passer
Strong-styleLe navigator décide, le driver tape. Interdit de toucher le clavier sans l’avis du navigator
SituationBénéfice
Onboarding d’un nouveauDiffusion rapide du contexte
Bug épineux4 yeux > 2 yeux
Feature critiqueSécurité psychologique + qualité
Code review en liveÉvite l’asynchrone douloureux
Pas pour : tâches triviales, exploration soloCoût disproportionné

3+ personnes sur un même problème. Plus rare, excellent sur :

  • Architecture nouvelle (alignement immédiat).
  • Bug critique en prod.
  • Onboarding d’un projet complexe.

Coût élevé (3 personnes × 2h = 6h/personne). À doser.


Pour donner un feedback factuel :

Situation : « Hier en standup… » Behavior : « Quand tu as dit “non, c’est faux” sur la suggestion de Marie… » Impact : « …Marie n’a plus parlé du sprint, ce qui nous a privé de son input. »

Évite : « Tu es agressif » (jugement de personnalité, indéfendable). Préfère : décrire le comportement observable, l’impact mesurable.

Le feedback est un cadeau. Discipline :

  1. Écouter entièrement avant de répondre.
  2. Demander des exemples concrets (« peux-tu me donner un cas ? »).
  3. Reformuler pour vérifier la compréhension.
  4. Remercier — même si tu n’es pas d’accord.
  5. Décider : intégrer / négocier / écarter explicitement.

Un dev qui ne demande jamais de feedback se prive de progression. Une habitude saine : « 1 truc que j’ai bien fait sur cette PR, 1 truc que j’aurais pu mieux faire ? » à la fin de chaque revue.

Distinct du feedback de manager. Plus fréquent, plus opérationnel :

  • « Ton commit fix bug ne dit rien — pourrais-tu écrire fix(auth): redirect after expired session la prochaine fois ? »
  • « J’ai galéré à comprendre cette fonction sans test, peux-tu en ajouter un ? »

Direct, court, sans filtre. Ça rend l’équipe forte.


Réunions — quand justifiées, comment productives

Section intitulée « Réunions — quand justifiées, comment productives »

Avant de créer une réunion, réponds :

  1. Y a-t-il une décision à prendre maintenant ?
  2. Y a-t-il un conflit à résoudre ?
  3. Y a-t-il information à diffuser + Q&A nécessaire ?

Si non aux 3 → message / RFC / Loom.

ÉlémentPourquoi
Agenda dans l’inviteSinon on improvise = on perd du temps
Durée pré-fixée30 min par défaut, 15 si possible
Décisions notées en liveQui ? Quoi ? Pour quand ?
Async pre-readLire le doc 24h avant, on commence par les questions
Liste des absents assuméeSi décision impactante, escaler à eux après
  • Réunion récurrente dont l’objet est flou.
  • « On en parle ? » sans agenda.
  • Status réunion que personne ne lit après.
  • 15 personnes dont 12 silencieuses.
  • Sans décision, juste « rediscussion ».

Le calendrier d’un IC senior ne devrait pas dépasser 8 h de réunions / semaine. Au-delà, le focus disparaît, et la prod aussi.


Le concept (Amy Edmondson, The Fearless Organization) : pouvoir prendre un risque interpersonnel sans peur d’être ridiculisé.

C’est ce qui fait que les équipes :

  • Reportent les bugs au lieu de les cacher.
  • Posent les questions « bêtes » qui sauvent du temps.
  • Disent « je ne sais pas » au lieu d’inventer.
  • Pratiquent le post-mortem blameless sincèrement.

Ce n’est pas du « toujours d’accord ». C’est « on peut être en désaccord sans guerre ».

Construire :

  • Reconnaître les erreurs publiquement (à commencer par les leads).
  • Récompenser les questions / signalements.
  • Sanctionner explicitement les comportements toxiques (sarcasme, humiliation publique).
  • Créer des espaces (1:1, rétrospectives) où le feedback circule.

Une PR de 1500 lignes arrive sur ton bureau. Que faire ?
Tu trouves un comportement risqué dans une PR (validation manquante côté API). Comment le formuler ?
L'équipe a une réunion récurrente « stand-up product » de 1h le lundi avec 12 personnes. Tu hérites de l'organisation. Que ferais-tu ?
Lors d'un post-mortem, tu remarques qu'un dev cache la cause exacte de l'incident. Que faire ?

  • The Pragmatic Programmer — Hunt & Thomas
  • Crucial Conversations — Patterson et al. (feedback difficile)
  • The Fearless Organization — Amy Edmondson (sécurité psychologique)
  • Conventional Commentsconventionalcomments.org
  • RFCs at Cloudflare / Stripe — articles publics
  • ADR Toolsgithub.com/npryce/adr-tools
  • Loom / Tella — vidéo async

Suite : 15.4 — Apprendre à apprendre — méthodes durables pour rester pertinent.