Cartographie

📝 Guide Pratique: Construire Votre Première Wardley Map

Guide pas-à-pas pour construire votre première Wardley Map. 6 étapes concrètes avec l'ordre CORRECT: Axe Y (Visibilité) AVANT Axe X (Évolution). Erreurs à éviter, exercices pratiques, et templates téléchargeables.

🎯 Introduction: L’Ordre Pédagogique Correct

Beaucoup de gens disent:

“Je comprends les concepts, mais par où commence?”

Ce guide répond précisément: comment passer de la théorie à la pratique concrète.

CE QUI CHANGE: L’ordre des axes!

❌ ANCIEN ORDRE (moins intuitif):
   1. Lister éléments
   2. Dépendances
   3. Axe X (Évolution) - RÉALISÉ AVANT
   4. Axe Y (Visibilité)
   
✅ NOUVEAU ORDRE (plus logique):
   1. Lister éléments
   2. Dépendances
   3. Axe Y (Visibilité) - PREMIÈREMENT
      └─ Comprendre flux de valeur verticalement
      └─ Qui dépend de qui (client → infrastructure)
   4. Axe X (Évolution) - DEUXIÈMEMENT
      └─ APRÈS avoir compris la structure Y
      └─ Appliquer la maturité horizontalement

Pourquoi ce changement?

🌱 Écoconception Numérique: Index & Ressources

Index de ressources sur l'écoconception - Guide complet, ateliers, cartographies, et sources fiables.

🎯 Bienvenue dans l’Écoconception

Cette section rassemble une démarche complète d’écoconception numérique avec:

  • ✅ Guide complet 5 étapes
  • ✅ 5 cartographies pratiques à chaque phase
  • ✅ Outils et sources fiables
  • ✅ Pièges courants à éviter

📚 Ressources Principales

👉 Guide Complet: Écoconception en 5 Étapes

Le document de référence couvrant:

  1. Étape 1: Alignement Valeurs-Fonctionnalités

    • Cartographie: Identifier alignements positifs/négatifs
  2. Étape 2: Audit de l’Existant

    • Cartographie: Analyse d’impacts actuels (ACV simplifiée)
  3. Étape 3: Cartographie Détaillée (CENTRALE)

📚 Ressources Externes & Références Wardley Maps

Ressources externes pour approfondir, outils pour pratiquer, communauté pour partager. Complément au système pédagogique.

🌐 Ressources Officielles

🎓 Learn Wardley Mapping (Officiel)

URL: https://learnwardleymapping.com/
Type: Portal officiel
Contient:

  • Livre complet (free + paid)
  • Cours en ligne
  • Glossaire détaillé
  • Outils et ressources
  • Communauté

Recommandation: Point de référence officiel, excellentes ressources


📖 Livre: “Wardley Maps” par Simon Wardley

Auteur: Simon Wardley (créateur de Wardley Maps)
Format:

Contenu: 19 chapitres couvrant:

  • On Being Lost (fundamendals)
  • Finding a Path (navigation)
  • Exploring the Map (practice)
  • Doctrine (universal principles)
  • Scenarios (anticipation)
  • Climate & Culture (adaptation)

Recommandation: Complémentaire à ce système, plus détaillé

🚀 Wardley Map de l'Agilité: Équipe qui Démarre [VERSION A - COMPLÈTE]

Version complète (20 min): Tous les détails - tableaux d'acteurs, exemples détaillés, antipatterns/patterns complets pour une compréhension profonde.

🎯 Objectif: Relier Wardley Maps et Agilité

Cet article répond à une question centrale:

Comment cartographier l’évolution d’une équipe qui passe du management traditionnel à l’agilité?

Le Défi Pédagogique

Habituellement, on parle d’agilité de manière abstraite:

  • ❌ “Soyez agiles!” (injonction vague)
  • ❌ “Appliquez Scrum” (recette mécanique)
  • ❌ “Changez de culture” (idéalisme)

Avec les Wardley Maps, on peut montrer concrètement:

  • ✅ État initial (tayloriste/command-control)
  • ✅ État cible (auto-organisation/empirisme)
  • ✅ Chemins de transition (patterns vs antipatterns)
  • ✅ Points critiques (dépendances, risques)

📚 Source: Fresque de l’Agilité

Cet article s’appuie sur la Fresque de l’Agilité de agileradical.org:

🚀 Wardley Map de l'Agilité: Équipe qui Démarre [VERSION B - SUCCINCTE]

Version succincte (8 min): 4 questions simples avec AVANT/APRÈS pour comprendre rapidement la transformation agile via Wardley Maps.

🎯 Pourquoi cette Carte?

Habituellement, on parle d’agilité de manière abstraite:

  • ❌ “Soyez agiles!” (vague)
  • ❌ “Appliquez Scrum” (mécanique)
  • ❌ “Changez la culture” (idéalisme)

Avec une Wardley Map, on voit concrètement:

  • ✅ État initial: tayloriste/command-control
  • ✅ État cible: auto-organisation/empirisme
  • ✅ 4 mouvements: ce qui change CONCRÈTEMENT

🗺️ État Initial: Équipe Tayloriste

Situation Typique

Taille: 8-12 développeurs
Org: Par spécialité (frontend/backend/infra)
Management: Hiérarchique (Directeur → Leads → Devs)
Processus: Cascade (Spec → Dev → Test → Prod)
Problèmes: Lenteur, silos, surprises, décalage client

Carte Wardley (Axe Y puis X)

                    HAUT (VISIBLE CLIENT)
                              │
                 ★ Livraison (tous les 12 mois)
                              │
                 ◆ Tests externes (caché)
                 ◆ Code développé (invisible)
                              │
          ─────────────────────────────────
                              │
                 ◆ Specs écrites (planning)
                 ◆ Réunions lancement
                 ◆ Contrats SLA
                              │
                    BAS (INVISIBLE)
                 ♦ Hiérarchie imposée
                 ♦ Contrôle qualité (fin cycle)
                 ♦ Reporting d'heures

Position sur X (Gauche-Droite):

🎯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 ?”

📇 Carte Context Mapping #5 : Partnership

Vue Rapide

🎯 Objectif : Deux équipes avec besoin mutuel s’engagent à se coordonner

👥 Relation d’équipe : Mutuellement Dépendant

📊 Couplage : Élevé (interfaces négociées)


Concept

Deux contextes aussi importants l’un que l’autre s’engagent à :

  • Collaborer sur les interfaces
  • Se consulter avant changements majeurs
  • Synchroniser leurs efforts
Team A (contexte équivalent)
    ↔ Partnership ↔
Team B (contexte équivalent)

La philosophie : “Nous avons besoin l’un de l’autre, donc on se coordonne”

📇 Carte Context Mapping #6 : Separate Ways

Vue Rapide

🎯 Objectif : Deux contextes se séparent complètement et se dupliquent

👥 Relation d’équipe : Indépendant

📊 Couplage : Nul (zero integration)


Concept

Les deux contextes abandonnent l’intégration et chacun gère sa propre version.

Team A        Team B
(duplique)    (duplique)
     ↓ ↓ ↓ ↓ ↓ ↓
  Chemin séparé

La philosophie : “On se sépare, c’est plus simple”


Quand l’Utiliser ? ✅

  • ✅ Le coût de l’intégration dépasse les bénéfices
  • ✅ Les contextes évoluent différemment et indépendamment
  • ✅ La duplication est acceptable (pas critique)
  • ✅ Les équipes veulent une autonomie totale
  • ✅ Les données peuvent être synchronisées via batch (pas temps-réel)

Exemples

  • Legacy System vs. Nouveau Système : on les laisse cohabiter sans parler
  • Rapport de gestion vs. Système de facturation : même données, deux lectures
  • Analytics vs. Production : duplication OK, latence acceptable
  • Deux variantes régionales : chacun son instance

Quand l’Éviter ? ❌

  • ❌ L’intégration est vraiment nécessaire
  • ❌ Les données doivent être synchronisées en temps-réel
  • ❌ La duplication coûte trop cher (complexité, maintenance)
  • ❌ Vous devez garder les données cohérentes
  • ❌ C’est une fuite d’architecture (vraiment du même domaine)

Questions Clés à se Poser 💭

  1. Pouvez-vous vraiment vous permettre de dupliquer ?
  2. Quel est le coût de maintenir 2 versions ?
  3. Comment gérez-vous la divergence entre les deux ?
  4. Qu’arrive-t-il quand un changement métier affecte les deux ?
  5. Comment synchronisez-vous les données critiques ?

Implications pour les Équipes

Chaque Équipe Indépendante

Avantages

  • Autonomie totale : chacun progresse à son rythme
  • Zéro couplage : changements sans impact mutuel
  • Simplicité : pas d’interface complexe
  • Pas de réunions de coordination !

Risques

  • ⚠️ Duplication : maintenance coûteuse
  • ⚠️ Divergence : à long terme, les deux dérivent
  • ⚠️ Incohérence : les données ne correspondent plus
  • ⚠️ Coût caché : bug fixes doivent se répéter

Stratégies de Séparation

1. Complète (Clean Break)

Before: Service A ↔ Service B (intégration)
After:  Service A    Service B (indépendant)

→ Chacun a sa DB, son code, ses workflows
→ Zéro partage

2. Partielle (avec Batch Sync)

Service A (Commandes)
    ↓ (batch export chaque nuit)
Data Lake
    ↓ (batch import chaque nuit)
Service B (Analytics)

→ Services indépendants mais données synchronisées
→ Acceptable delay: 24h

3. Avec Archive

Legacy System (ancien)
    ↓ (migration progressive)
New System (nouveau)

→ Legacy continue de tourner
→ New prend du trafic progressivement
→ Un jour legacy s'éteint

Exemple Concret : Migration Vers Nouveau Système

Avant (Separate Ways Forcés - mauvais)

Legacy Order System (10 ans)
    ↓ (désuet, lent)
Couplé fortement à: 
    - Inventory System
    - Billing System
    - Reporting System

→ Impossible à modifier sans casser tout
→ Vraiment besoin de découpler!

Stratégie de Séparation

Phase 1: Créer New Order System (indépendant)
├── Copier la data du legacy
└── Tester en parallèle

Phase 2: Dual-write (transition)
├── Writes vont aux deux systèmes
├── New System est primary source of truth progressivement
└── Reports lisent à partir du New

Phase 3: Legacy read-only (legacy devient archive)
├── Legacy continue de tourner en read-only
├── Données historiques toujours accessibles
└── Queries récentes pointent vers New

Phase 4: Sunset legacy (éteindre l'ancien)
├── Archive les données du legacy
├── Décommissionner le système
└── Sauvegardes long-term seulement

Co-existence Pendant Transition

Frontend
    ↓
API Gateway (routing intelligent)
    ├→ New System (80% du trafic)
    └→ Legacy System (20% du trafic, migration progressive)

Batch Job (chaque nuit)
    ├→ Exporte du New
    ├→ Importe dans Analytics
    └→ Archive du Legacy

Données Critiques: Synchronisation Required

Scenario: Commandes et Facturation

Vous avez décidé de découpler Order ↔ Billing