Wardley Mapping
A strategic mapping technique for understanding competitive landscape, technology evolution, and making informed architectural decisions.
When to Use This Skill
Keywords: wardley map, value chain, evolution, genesis, custom, product, commodity, strategy, landscape, doctrine, gameplay, situational awareness, strategic positioning, technology radar
Use this skill when:
-
Making technology investment decisions
-
Evaluating build vs. buy vs. outsource
-
Understanding competitive positioning
-
Planning technology evolution strategy
-
Communicating architecture strategy to stakeholders
-
Identifying strategic opportunities and threats
-
Deciding where to focus innovation efforts
What is Wardley Mapping?
Wardley Mapping, created by Simon Wardley, provides situational awareness for strategic decision-making by visualizing:
-
Value Chain: Components needed to meet user needs
-
Evolution: How components change over time
-
Landscape: The competitive environment
-
Movement: How the landscape changes
The Map Structure
EVOLUTION
Genesis Custom Product Commodity
↓ ↓ ↓ ↓
┌──────────────────────────────────────────┐
│ │
Visible │ User Need ● │ ← Anchor │ │ │ │ ↓ │ │ Component A ●──────────→ ● │ │ │ │ │ ↓ │ │ Component B ● │ │ │ │ Hidden │ ↓ │ │ Component C ● │ │ │ │ │ ↓ │ │ Component D ● │ ← Commodity │ │ └──────────────────────────────────────────┘
Y-axis: Visibility (to user)
X-axis: Evolution (certainty)
Evolution Stages
Stage Characteristics
evolution_stages: genesis: position: "Far left" characteristics: - "Novel, unique, uncertain" - "Poorly understood" - "High failure rates" - "Requires experimentation" activities: - "Research & development" - "Exploration" - "Proof of concepts" examples: - "Quantum computing (for most use cases)" - "Novel AI architectures" - "Experimental materials"
custom_built: position: "Center-left" characteristics: - "Understood but unique implementation" - "Bespoke solutions" - "Differentiating" - "High cost, high expertise" activities: - "Custom development" - "Integration work" - "Specialized teams" examples: - "Custom recommendation engine" - "Bespoke trading platform" - "Specialized analytics"
product: position: "Center-right" characteristics: - "Increasingly understood" - "Multiple vendors/options" - "Feature differentiation" - "Growing competition" activities: - "Buy vs. build decisions" - "Vendor evaluation" - "Configuration over coding" examples: - "CRM systems" - "E-commerce platforms" - "Analytics tools"
commodity: position: "Far right" characteristics: - "Well understood" - "Essential, expected" - "Low differentiation" - "Volume operations" activities: - "Utility consumption" - "Cost optimization" - "Operational excellence" examples: - "Cloud compute (IaaS)" - "Email services" - "Payment processing"
Evolution Indicators
Indicator Genesis Custom Product Commodity
Ubiquity Rare Rare-Common Common Widespread
Certainty Uncertain Uncertain-Defined Defined Defined
Market Undefined Forming Mature Utility
Failure Mode Research Learning Differentiation Operational
Talent Pioneers Settlers Town Planners Utilities
Creating a Wardley Map
Step 1: Identify the Anchor
anchor: definition: "The user need being served"
questions: - "Who is the user?" - "What do they need?" - "What visible outcome do they expect?"
placement: "Top of map, visible to user"
examples: - "Customer needs to purchase products online" - "Developer needs to deploy applications" - "Analyst needs to generate reports"
Step 2: Build the Value Chain
value_chain: approach: "Work backwards from user need"
questions: - "What components are needed to meet this need?" - "What does each component depend on?" - "What components are hidden from the user?"
tips: - "List capabilities, not just technologies" - "Include people, practices, and data" - "Map both technical and business components" - "Dependencies flow downward"
Step 3: Position on Evolution
positioning: method: "Assess each component's evolution stage"
criteria: - "How well understood is it?" - "How many alternatives exist?" - "Is it commoditized or unique?" - "What's the market maturity?"
common_mistakes: - "Positioning based on age, not maturity" - "Confusing internal unfamiliarity with market genesis" - "Not considering industry context"
Step 4: Add Movement
movement: notation: "Arrows showing direction of evolution"
types: natural_evolution: "→ Component moving right over time" inertia: "× Resistance to movement" acceleration: ">> Forced rapid evolution"
considerations: - "All components evolve rightward over time" - "Evolution can be accelerated by competition" - "Inertia can slow movement"
Map Template
Title: {Map Name} Anchor: {User Need} Date: {ISO-8601}
Genesis Custom Product Commodity
│ │ │ │
▼ ▼ ▼ ▼
Visible ┌───────────────────────────────────────┐ │ │ │ {User Need} │ │ │ │ │ ↓ │ │ {Component 1} ●──────→ │ │ │ │ │ ├───────────────┐ │ │ ↓ ↓ │ │ {Component 2} {Component 3} │ │ ● ● │ │ │ │ │ │ ↓ │ │ │ {Component 4} │ │ │ ● │ │ Hidden │ │ │ │ │ ↓ ↓ │ │ {Component 5}───────┘ │ │ ● │ │ │ └───────────────────────────────────────┘
Legend: ● = Current position → = Movement direction × = Inertia
Doctrine
Universally useful patterns for strategy:
doctrine_categories: communication: - "Use a common language" - "Challenge assumptions" - "Focus on user needs"
development: - "Use appropriate methods for evolution stage" - "Think small (cell-based structures)" - "Manage inertia" - "Use standards where appropriate"
operation: - "Think fast, inexpensive, restrained, elegant" - "Manage failure appropriately" - "Optimize flow"
learning: - "Use a systematic mechanism of learning" - "Know your users" - "Know your details"
leading: - "Be the owner" - "Move fast" - "Accept that strategy is iterative"
Doctrine Assessment Template
doctrine_assessment: communication: common_language: score: "{1-5}" evidence: "{How is strategic language standardized?}"
challenge_assumptions:
score: "{1-5}"
evidence: "{How are assumptions questioned?}"
development: appropriate_methods: score: "{1-5}" evidence: "{Are agile/lean/six sigma applied contextually?}"
cell_based:
score: "{1-5}"
evidence: "{Are teams small and autonomous?}"
... continue for all doctrine points
Gameplay Patterns
Strategic moves based on landscape understanding:
Offensive Patterns
offensive_gameplay: tower_and_moat: description: "Build differentiating capabilities on commodity foundation" when: "Strong custom components exist" action: "Commoditize dependencies, invest in differentiation" map_signature: "Custom components with commodity dependencies"
land_and_expand: description: "Enter market with narrow offering, expand from there" when: "New market entry" action: "Start simple, add components over time"
open_source_play: description: "Commoditize competitor's differentiator" when: "Competitor relies on custom component you can replicate" action: "Open source alternative to accelerate commoditization"
ecosystem: description: "Create platform others build upon" when: "Control infrastructure component" action: "Enable others to build on your platform"
two_factor: description: "Satisfy two markets with one platform" when: "Platform can serve multiple user types" action: "Connect both sides of a market"
Defensive Patterns
defensive_gameplay: patents_and_ip: description: "Protect innovations legally" when: "Genesis/custom stage innovations" action: "File patents, protect trade secrets"
creating_constraint: description: "Slow evolution of component you control" when: "Evolution threatens your position" action: "Limit interoperability, create switching costs"
embrace_and_extend: description: "Adopt standard then differentiate" when: "Commodity/product threatens differentiation" action: "Add proprietary extensions"
Strategic Decisions
Build vs. Buy vs. Outsource
build_buy_outsource: build: when: - "Component in Genesis/Custom stage" - "Core differentiator" - "No suitable market alternatives" - "Strategic advantage from ownership" examples: - "Core recommendation algorithm" - "Proprietary trading logic"
buy: when: - "Component in Product stage" - "Not core differentiator" - "Multiple vendor options exist" - "Faster time to market needed" examples: - "CRM system" - "Marketing automation"
outsource: when: - "Component is Commodity" - "No differentiation possible" - "Volume economics favor specialists" - "Operational burden not worth it" examples: - "Cloud infrastructure" - "Payment processing" - "Email delivery"
Innovation Investment
innovation_investment: genesis: investment_type: "Exploration" approach: "Experiments, PoCs, research" metrics: "Learning velocity, options created" failure_tolerance: "High"
custom: investment_type: "Differentiation" approach: "Product development, custom builds" metrics: "Feature completion, user adoption" failure_tolerance: "Medium"
product: investment_type: "Enhancement" approach: "Integration, configuration" metrics: "Time to value, TCO" failure_tolerance: "Low"
commodity: investment_type: "Optimization" approach: "Cost reduction, automation" metrics: "Cost per unit, availability" failure_tolerance: "Very low"
.NET/C# Architecture Implications
Evolution-Appropriate Development
namespace Architecture.Strategy;
// Model for tracking component evolution public record WardleyComponent { public required string Name { get; init; } public required EvolutionStage Evolution { get; init; } public required double EvolutionPosition { get; init; } // 0.0 (Genesis) to 1.0 (Commodity) public required double Visibility { get; init; } // 0.0 (Hidden) to 1.0 (Visible) public List<string> DependsOn { get; init; } = []; public MovementDirection? Movement { get; init; } public bool HasInertia { get; init; } public string? StrategicNotes { get; init; } }
public enum EvolutionStage { Genesis, // 0.0 - 0.25 CustomBuilt, // 0.25 - 0.50 Product, // 0.50 - 0.75 Commodity // 0.75 - 1.0 }
public enum MovementDirection { None, Evolving, // Natural rightward movement Accelerating, // Faster than normal evolution Decelerating // Inertia slowing evolution }
public record WardleyMap { public required string Title { get; init; } public required string Anchor { get; init; } public required string UserNeed { get; init; } public DateOnly MapDate { get; init; } public List<WardleyComponent> Components { get; init; } = []; public List<StrategicPlay> IdentifiedPlays { get; init; } = []; }
public record StrategicPlay { public required string Name { get; init; } public required GameplayPattern Pattern { get; init; } public required string Rationale { get; init; } public List<string> AffectedComponents { get; init; } = []; public string? ExpectedOutcome { get; init; } public string? RiskAssessment { get; init; } }
public enum GameplayPattern { TowerAndMoat, LandAndExpand, OpenSourcePlay, Ecosystem, TwoFactor, PatentsAndIp, CreatingConstraint, EmbraceAndExtend }
Evolution-Based Architecture Decisions
public class ArchitectureAdvisor { public ArchitectureRecommendation Recommend(WardleyComponent component) { return component.Evolution switch { EvolutionStage.Genesis => new ArchitectureRecommendation { DevelopmentApproach = "Experimental, spike-driven", TeamType = "Small, cross-functional pioneers", Architecture = "Loosely coupled, easily replaceable", Practices = ["Rapid prototyping", "High test coverage", "Feature flags"], InfrastructureApproach = "Containerized, easy to tear down" },
EvolutionStage.CustomBuilt => new ArchitectureRecommendation
{
DevelopmentApproach = "Agile, iterative",
TeamType = "Product-focused settlers",
Architecture = "Vertical slices, bounded contexts",
Practices = ["TDD", "CI/CD", "Observability"],
InfrastructureApproach = "Managed services where possible"
},
EvolutionStage.Product => new ArchitectureRecommendation
{
DevelopmentApproach = "Configuration over custom code",
TeamType = "Integration specialists",
Architecture = "Adapter patterns, plugin architecture",
Practices = ["Vendor evaluation", "Contract testing"],
InfrastructureApproach = "SaaS/PaaS preferred"
},
EvolutionStage.Commodity => new ArchitectureRecommendation
{
DevelopmentApproach = "Operational excellence",
TeamType = "SRE, platform engineering",
Architecture = "Standard interfaces, utility patterns",
Practices = ["Cost optimization", "Automation", "Monitoring"],
InfrastructureApproach = "Utility services, serverless"
},
_ => throw new ArgumentOutOfRangeException()
};
}
}
public record ArchitectureRecommendation { public required string DevelopmentApproach { get; init; } public required string TeamType { get; init; } public required string Architecture { get; init; } public List<string> Practices { get; init; } = []; public required string InfrastructureApproach { get; init; } }
Map Analysis Checklist
analysis_checklist: completeness: - "Is the anchor (user need) clearly defined?" - "Are all components necessary to meet the need included?" - "Are dependencies shown?" - "Are movement arrows present?"
positioning: - "Is each component positioned based on market evolution, not internal capability?" - "Are commodity components on the right?" - "Are genuinely novel components on the left?"
insights: - "What components have inertia?" - "Where are there opportunities to commoditize?" - "What genesis activities could become differentiators?" - "Where do we have technical debt (building custom where products exist)?"
strategic: - "What gameplay patterns apply?" - "Where should we invest vs. outsource?" - "What climatic patterns affect our landscape?" - "What doctrine weaknesses exist?"
Output Format
Wardley Map Document
wardley_map: metadata: title: "{Map Name}" author: "{Author}" date: "{ISO-8601}" version: "1.0" scope: "{What this map covers}"
anchor: user: "{User description}" need: "{User need statement}"
components: - name: "{Component Name}" evolution: "{Genesis/Custom/Product/Commodity}" position: "{0.0-1.0}" visibility: "{0.0-1.0}" depends_on: - "{Dependency 1}" - "{Dependency 2}" notes: "{Strategic notes}" movement: "{evolving/accelerating/inertia/none}"
analysis: opportunities: - "{Opportunity 1}" - "{Opportunity 2}"
threats:
- "{Threat 1}"
- "{Threat 2}"
inertia_points:
- component: "{Component}"
reason: "{Why inertia exists}"
recommendations: immediate: - "{Action with rationale}" short_term: - "{Action with rationale}" long_term: - "{Action with rationale}"
Integration with Other Skills
Upstream
-
togaf-guidance - Enterprise architecture context
-
gap-analysis - Current vs. target state analysis
-
adr-management - Document strategic decisions
Downstream
-
team-topology-design - Align teams with evolution stages
-
fitness-functions - Measure evolution progress
-
cloud-alignment - Cloud strategy by evolution stage
References
For additional guidance:
-
Climatic Patterns
-
Mapping Examples
Version History
- v1.0.0 (2025-12-26): Initial release - Wardley Mapping skill
Last Updated: 2025-12-26