Impact
Feedback
Le feedback est une des valeurs d’eXtreme Programming exprimée comme suit:
Nous prennons chaque engagement d’itération au sérieux en fournissant un logiciel fonctionnel. Nous faisons une démonstration précoce de notre logiciel, puis nous écoutons fréquemment et attentivement pour apporter les modifications nécessaires. Nous parlons du projet et adaptons notre processus à celui-ci, et non l’inverse.
En synthèse dans ce contexte d’une équipe de développement logiciel, il s’agit de solliciter et écouter fréquemment et attentivement “les parties prenantes” pour adapter la façon de faire en vue d’atteindre un objectif commun.
Coaching
Cette section regroupe quelques réflexions personnelles sur le coaching. Pour préciser la perspective avec laquelle j’aborde le coaching dans ce blog, vous pouvez éventuellement commencer par un à propos de coaching
Engagement — comprendre et agir
Synthèse pratique du concept d'engagement (source Philonomist) et lien avec la cartographie des paris du blog pour agir en atelier.
Philonomist propose ce dernier mois un test sur l’engagement. L’occasion pour moi
- d’approfondir cette notion à la mémoire de mes derniers accompagnements en coaching d’organisation,
- de me rappeler de la place accordée à l’engagement dans l’agilité, notamment en lien avec la valeur de courage, et la façon dont on définit et respecte les objectifs)
- de le relier à mes articles précédents
- de safisfaire ma curiosité (et rentabiliser mon abonnement) en revisitant le site Philonomist et (re)découvrant quelques articles toujours intéressants, par leur questionnement sur le monde de l’entreprise.
- enfin d’imaginer un atelier, selon mon inspiration du moment que je puisse sortir si l’occasion se présente.
Ceci écrit, voilà déjà une forme d’engagement que d’établir une liste d’actions et de critères qui font sens pour obtenir un résultat.
🔧 Audit & Améliorations Écoconception 2025
Audit d'écoconception du site Hugo - Recommandations basées sur GR491 (INR) et outils Lighthouse/Kastor.green. Plan d'action pour réduire l'empreinte numérique.
🎯 Objectif: Réduire l’Empreinte Numérique du Site
Cet audit vise à identifier les gisements d’économie d’énergie et de ressources sur le site Hugo, en s’appuyant sur les pratiques GR491 de l’Institut du Numérique Responsable (INR).
🛠️ Outils d’Audit Utilisés
| Outil | Utilité | Points forts |
|---|---|---|
| Lighthouse | Performance, accessibilité, bonnes pratiques | Scores détaillés, recommandations prioritaires |
| Kastor.green | Analyse d’empreinte carbone numérique | Liens direct vers RGESN et GR491 de l’INR |
| Web Vitals | Métriques Core Web Vitals | Compression, temps de réponse |
📊 Améliorations Identifiées (Priorisées)
🔴 Critique (Impact > 200 Kib)
| Action | Gain Estimé | Pratique GR491 | Hugo Implementation |
|---|---|---|---|
| Activer compression Gzip/Brotli | 437 Kib | 1.1 - Réduire poids transféré | Config output.formats.HTML.mediaTypes |
| Éliminer CSS inutilisé | 260 Kib | 4.2 - Optimiser CSS | Utiliser PurgeCSS ou TailwindCSS avec purge |
| Réduire JavaScript inutilisé | 176 Kib | 2.1 - Minimiser ressources JS | Lazy loading, code splitting par section |
🟡 Important (50-200 Kib)
| Action | Gain Estimé | Pratique GR491 | Hugo Implementation |
|---|---|---|---|
| Images optimisées (WebP, dimensions) | ~150 Kib | 3.1 - Images responsives | Hugo image processing + formats multiples |
| Ajouter attributs width/height images | ~50 Kib | 3.2 - Éviter CLS | Front-matter YAML ou shortcodes |
| Diffuser avec cache HTTP efficace | Voir durée | 5.1 - Cache statique | Headers Cache-Control: max-age=31536000 |
🟢 Recommandé (< 50 Kib)
| Action | Gain Estimé | Pratique GR491 | Hugo Implementation |
|---|---|---|---|
| Ajouter print CSS | ~10 Kib | 1.3 - Média queries print | assets/css/print.css + @media print |
| Minifier HTML/JSON | ~20 Kib | 1.2 - Minification | Config Hugo minify.minifyOutput = true |
| Lazy loading iframes | ~5 Kib | 2.3 - Lazy loading | Attribut loading="lazy" sur iframes |
| Supprimer polyfills inutiles | ~15 Kib | 2.1 - Code mort | Audit bundle JS, vérifier support navigateurs |
🗺️ Mini-Guide Opératoire (Basé sur GR491)
Phase 1: Diagnostic Détaillé (GR491 Critère 1-2)
Objectif: Identifier consommation réelle avant/après
🤖 IA Responsable: Éthique, Risques et Gouvernance
Comprendre l'IA responsable - Enjeux de gouvernance, risques, et cadres de référence pour une IA plus humaine et durable.
🎯 L’IA Générative: Un Outil Qui Donne Le Vertige
L’intelligence artificielle générative s’est imposée en quelques mois comme un outil transformateur. Mais transformer vers quoi? Pour qui? Et à quel coût?
Bien que l’IA nous procure un sentiment d’omniscience avec la capacité de tout savoir sur tout en quelques prompts, il n’en reste pas moins des zones d’ombre.
Besoin De Hauteur de Vue
L’IA n’est pas neutre. Elle encode les choix, les biais, les valeurs de ceux qui l’ont créée. La question n’est pas “faut-il utiliser l’IA?” mais plutôt:
Pour un pragmatisme responsable
Cet article est inspiré par les conversations sur les fondamentaux et principes de l’organisation du travail que nous questionnons dans l’exercice de la fresque de l’agilité.
La question ici est de savoir si le pragmatisme est à la bonne place pour discuter de l’organisation des personnes en permettant de dépasser dans le management traditionnel ou moderne, les principes et les limites de la division du travail.
Nous entendons par management moderne, celui qui a pu incorporer une forme d’agilité avec les mêmes intentions que celles du management traditionnel.
🎯Customiser l'Atelier de Cartographie: Adapter aux Types d'Équipes et Dépendances
Introduction
L’atelier de cartographie de contexte n’est pas “one-size-fits-all”. Selon la structure organisationnelle actuelle, les types de dépendances en place, et les patterns existants, vous devrez adapter le design de facilitation pour être pertinent et actionnable.
Ce guide vous aide à customiser l’atelier en fonction de votre situation réelle.
Partie 1: Diagnostiquer Votre Situation Actuelle
Étape 1.1: Identifier les Types d’Équipes Présentes
Avant l’atelier, cartographiez rapidement:
Pour chaque paire d'équipes, demandez-vous:
A et B dépendent-elles l'une de l'autre?
├─ NON, zéro dépendance
│ └─ Type: INDEPENDENT TEAMS
│
└─ OUI, il y a dépendance
├─ C'est mutuel (A dépend de B, B dépend de A)?
│ └─ Type: MUTUALLY DEPENDENT TEAMS
│
└─ C'est asymétrique (A dépend de B, mais pas l'inverse)?
└─ Type: UPSTREAM/DOWNSTREAM TEAMS
Étape 1.2: Inventorier les Patterns Actuels
Pour chaque relation identifiée, diagnostiquez le pattern en place:
📇 Carte Context Mapping #11 : Upstream/Downstream Teams (Team Relationship)
Vue Rapide
🎯 Objectif : Une équipe fournit services à l’autre - asymétrique
💼 Type de relation : Hiérarchie implicite (qui dépend de qui?)
🔗 Nature : Dépendance unilatérale
Concept
Une équipe upstream fournit services à une ou plusieurs équipes downstream.
Upstream Team
↓ (provides services)
↓
Downstream Team(s)
Les caractéristiques:
- ✓ Upstream ne dépend PAS du downstream
- ✓ Downstream dépend d’Upstream
- ✓ Asymétrique et clair
Différentes Configurations
1. One Upstream, One Downstream
Payment Service (Upstream)
↓
Order Service (Downstream)
Payment peut évoluer indépendamment.
Order attend Payment.
2. One Upstream, Many Downstream
Product Catalog (Upstream)
↓ ↓ ↓ ↓ ↓
Pricing | Inventory | Search | Recommendation | Analytics
(Downstream services)
Catalog ne connaît pas ses utilisateurs.
Tous dépendent de Catalog.
3. Tiered Upstream/Downstream
Infrastructure (Upstream 1)
↓
Core Platform (Upstream 2)
↓
Business Services (Downstream)
Patterns Possibles dans Upstream/Downstream
Selon la relation, différents patterns:
📇 Carte Context Mapping #12 : Independent Teams (Team Relationship)
Vue Rapide
🎯 Objectif : Deux équipes opèrent indépendamment, zéro dépendance
💼 Type de relation : Aucune (autonome complète)
🔗 Nature : Parallèle, zéro couplage
Concept
Deux équipes qui peuvent progresser complètement indépendamment sans se bloquer.
Team A Team B
(indépendant) (indépendant)
↓ ↓ ↓ ↓ ↓ ↓
(Zéro couplage)
Caractéristiques
Ce qui les Définit
- ✓ Zéro dépendances : l’une peut évoluer sans l’autre
- ✓ Contextes distincts : domaines totalement séparés
- ✓ Données indépendantes : si partage, c’est via batch/events
- ✓ Autonomie complète : aucune coordination requise
Ce qui les Différencie des Autres
VS. Upstream/Downstream:
→ Upstream/Downstream = dépendance
→ Independent = zéro dépendance
VS. Mutually Dependent:
→ Mutually Dependent = interdépendance
→ Independent = complètement libres
Idéal dans Microservices
Architecture
Service A (Independent)
├─ Own code
├─ Own database
├─ Own API
└─ Owns its fate
Service B (Independent)
├─ Own code
├─ Own database
├─ Own API
└─ Owns its fate
Coordination: Minimal (maybe async events)
Implications Organisationnelles
Avantages
- ✓ Complète autonomie : pas d’attendre l’autre
- ✓ Vitesse : chacun va à son rythme
- ✓ Ownership : claire et motivante
- ✓ Scaling : ajoute équipes sans syncro
- ✓ Failure isolation : équipe A crash pas équipe B
Challenges
- ⚠️ Duplication : chacun implémente sa version
- ⚠️ Incohérence : les deux ont des approches différentes
- ⚠️ Outils différents : pas d’unification possible
- ⚠️ Learning silos : pas de partage de connaissance
- ⚠️ Onboarding : chacun a sa culture
Communication: Quand Nécessaire
Pattern 1: Asynchronous Events
Team A does something
↓
Publishes event (OrderPlaced)
↓
Team B picks it up (async)
↓
No blocking, no real-time sync
Pattern 2: Read-Only Access
Team A owns data
Team B reads it (if needed)
↓
No writes between them
↓
Team B can lag behind
Pattern 3: Batch Sync
Team A exports data nightly
↓
Team B imports nightly
↓
Updates 24h later
↓
Acceptable delay
Pattern 4: Complete Separation
Team A: doesn't know B exists
Team B: doesn't know A exists
↓
Zero communication
Exemples du Monde Réel
SaaS Platform
Auth Team
├─ Handles user login/security
├─ Owns user DB
└─ Exposes API
Reporting Team
├─ Handles analytics/reports
├─ Owns analytics DB
├─ Reads user data (read-only)
└─ Zero coordination needed
Content Team
├─ Manages blog/docs
├─ Owns content DB
└─ Completely separate
E-commerce
Order Service Team
├─ Orders only
├─ Can scale independently
└─ Publishes OrderPlaced events
Inventory Service Team
├─ Inventory only
├─ Listens to OrderPlaced
├─ Decrements stock asynchronously
└─ No blocking dependency
Analytics Team
├─ Reads events (Order, Inventory)
├─ Processes asynchronously
└─ No impact on live systems
Governance
Decision Making
Team A decides its direction → Done
Team B decides its direction → Done
No vetoes, no blocking
Shared Resources?
If need shared infrastructure:
→ Infrastructure team is independent too
→ Or dedicated team owns it
→ But integration still async/event-based
Conflicts
Conflict between teams?
→ Each goes its own way
→ Or escalate to higher-level alignment
Trade-offs
When It’s Perfect
✓ Service A: Payments
✓ Service B: Marketing/Email
✓ Service C: Analytics
→ These can be completely independent
→ Perfect microservices setup
When It’s Not Possible
✗ Frontend & Backend of same product
→ Too coupled, need Partnership or Shared Kernel
✗ Inventory & Orders
→ Need synchronization, not truly independent
✗ Core Platform & Applications
→ Core is needed by apps, Upstream/Downstream better
Cost Analysis
Infrastructure
Benefit: Can scale each independently
Cost: More infrastructure, more databases
Trade-off: Worth it for high-scale systems
Development
Benefit: Teams move fast, no waiting
Cost: Potential duplication, less sharing
Trade-off: Speed > DRY principle (in microservices)
Operational
Benefit: Failure isolated
Cost: More systems to monitor
Trade-off: Worth it for reliability
Indicators
Independence Healthy ✅
✓ Teams deploy independently
✓ No blocking on each other
✓ Different tech stacks OK
✓ Minimal communication meetings
✓ Each owns their metrics
Independence Problematic ❌
❌ Frequent cross-team meetings
❌ Waiting on each other
❌ Duplication becoming costly
❌ Incohesive systems
❌ Can't deploy independently
When to Choose Independence
Right Fit
- Small, focused services
- High-scale systems
- Different business domains
- Different maturity levels
- Different technology choices needed
Wrong Fit
- Tightly coupled features
- Need real-time consistency
- Shared data models
- Young team (need learning)
- Not enough scale to justify overhead
Checklist per Independent Teams ✓
- Completely separate code/data/deployment
- Communication plan (events, async, batch)
- Monitoring of each service independently
- Failure scenarios handled independently
- No hidden dependencies (audit for coupling)
- Teams feel autonomous (survey culture)
Transitioning to Independence
From Dependent to Independent
Mutually Dependent
↓ (too slow)
Try Partner → Still coupled
↓
Extract: one becomes independent
→ Shared Kernel of critical shared data only
→ Events for everything else
→ Now mostly Independent
From Monolith to Independent
Monolith (all one team)
↓ (slow to scale)
Strangler Pattern:
├─ Extract Service A
├─ Service A becomes Independent
├─ Extract Service B
├─ Service B becomes Independent
├─ ...repeat...
└─ Monolith eventually sunset
Ressources
- Building Microservices par Sam Newman - Team Topology
- Team Topologies par Matthew Skelton - X-as-a-Service
- Release It! par Michael Nygard - Microservice Coordination
- DDD Crew - Context Mapping
Notes de Facilitation pour l’Atelier
Animation
- Demandez : “Êtes-vous vraiment indépendants ?”
- Testez : “Qu’arrive-t-il si Service X casse ?”
- Documentez : “Quelles sont vos vraies dépendances ?”
Pièges Communs
- ⚠️ Dépendances cachées : “Pensaient-ils être indépendants, mais…”
- ⚠️ Trop de duplication : coûteux à maintenir
- ⚠️ Inconsistences : données divergent
- ⚠️ Organisation tue architecture : réorgé casse l’indépendance
Questions Provocatrices
- “Si je change Service A, affecte-t-ça Service B ?”
- “Combien de personnes doivent se synchroniser ?”
- “Est-ce vraiment de l’indépendance ou du chaos ?”
- “Pourriez-vous déployer Service A sans toucher Service B ?”