Last active
February 8, 2020 18:58
-
-
Save bemosior/5c0eb235cd77987eba9742e2acc4fb20 to your computer and use it in GitHub Desktop.
An attempt to codify the strategy cycle.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
The Wardley Mapping Operating System | |
https://medium.com/wardleymaps | |
Courtesy of Simon Wardley, CC BY-SA 4.0 | |
Codified by Ben Mosior, CC BY-SA 4.0 | |
https://creativecommons.org/licenses/by-sa/4.0/legalcode | |
*/ | |
// https://learnwardleymapping.com/home/climate/ | |
var climaticPatterns = [ | |
"Competitors actions will change the game", | |
// "...", | |
"Shifts from product to utility tend to demonstrate a punctuated equilibrium" | |
] | |
// https://learnwardleymapping.com/home/doctrine/ | |
var doctrinalPrinciples = [ | |
"Use a common language", | |
// "...", | |
"There is no one culture" | |
]; | |
// https://learnwardleymapping.com/home/leadership/ | |
var gameplayStratagems = [ | |
"Open approaches", | |
// "...", | |
"Weak signal / horizon" | |
]; | |
executeStrategyCycle(); | |
// The strategy cycle | |
function executeStrategyCycle() { | |
// 1. Purpose | |
var purpose = ""; | |
// 2. Landscape | |
var valueChain = makeValueChain(); | |
// 3. Climate | |
iterateClimate(valueChain, climaticPatterns); | |
// 4. Doctrine | |
iterateDoctrine(valueChain, doctrinalPrinciples); | |
// 5. Doctrine | |
iterateGameplay(valueChain, gameplayStratagems); | |
} | |
// Construct a value chain | |
function makeValueChain() { | |
var valueChain = { | |
'name': 'Customer', | |
'needs': [ | |
{ | |
'name': 'Cup of Tea', | |
'stage': 3, | |
'needs': [ | |
{ | |
'name': 'Cup', | |
'stage': 4, | |
'needs': [] | |
}, | |
{ | |
'name': 'Tea', | |
'stage': 4, | |
'needs': [] | |
}, | |
{ | |
'name': 'Hot Water', | |
'stage': 4, | |
'needs': [] | |
}, | |
] | |
} | |
] | |
} | |
return valueChain; | |
} | |
// Iterate over Climatic Patterns across the entire value chain | |
function iterateClimate(valueChain, climaticPatterns) { | |
console.log('Let\'s consider how Climate affects our Value Chain.'); | |
// Imagine I've implemented depth-first tree traversal of the value chain. | |
component = valueChain['needs'][0]; | |
// For each component in the value chain... | |
climaticPatterns.forEach(function(pattern, index){ | |
console.log(' * How might we become aware of how the \"' + pattern + '\" pattern affects the \"' + component['name'] + '\" component?'); | |
}); | |
} | |
// Iterate over Doctrinal Principles across the entire value chain | |
function iterateDoctrine(valueChain, doctrinalPrinciples) { | |
console.log('\nLet\'s consider how we should apply Doctrine in our Value Chain.'); | |
// Imagine I've implemented depth-first tree traversal of the value chain. | |
component = valueChain['needs'][0]; | |
// For each component in the value chain... | |
doctrinalPrinciples.forEach(function(principle, index){ | |
console.log(' * How might we apply the \"' + principle + '\" principle with respect to the \"' + component['name'] + '\" component?'); | |
}); | |
} | |
// Iterate over Gameplay across the entire value chain | |
function iterateGameplay(valueChain, gameplayStratagems) { | |
console.log('\nLet\'s consider how we can apply Gameplay in our Value Chain.'); | |
// Imagine I've implemented depth-first tree traversal of the value chain. | |
component = valueChain['needs'][0]; | |
// For each component in the value chain... | |
gameplayStratagems.forEach(function(stratagem, index){ | |
console.log(' * How might we apply the \"' + stratagem + '\" stratagem with respect to the \"' + component['name'] + '\" component in order to create an advantage?'); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Example output: