1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
struct Stage {
let i: String
let ii: String
let iii: String
let iv: String
static func stages(_ type: StageType) -> Stage {
switch type {
case .general:
return Stage(
i: "Genesis", ii: "Custom Built", iii: "Product (+rental)", iv: "Commodity (+utility)")
case .practice:
return Stage(
i: "Novel", ii: "Emerging", iii: "Good", iv: "Best")
case .data:
return Stage(
i: "Unmodelled", ii: "Divergent", iii: "Convergent", iv: "Modelled")
case .knowledge:
return Stage(
i: "Concept", ii: "Hypothesis", iii: "Theory", iv: "Accepted")
case .ubiquity:
return Stage(
i: "Rare", ii: "Slowly Increasing Consumption", iii: "Rapidly Increasing Consumption",
iv: "Widespread and stabilising")
case .certainty:
return Stage(
i: "Poorly Understood", ii: "Rapid Increase In Learning",
iii: "Rapid Increase in Use / fit for purpose", iv: "Commonly understood (in terms of use)")
case .publicationTypes:
return Stage(
i: "Normally describing the wonder of the thing",
ii: "Build / construct / awareness and learning",
iii: "Maintenance / operations / installation / feature", iv: "Focused on use")
case .market:
return Stage(
i: "Undefined Market", ii: "Forming Market", iii: "Growing Market", iv: "Mature Market")
case .knowledgeManagement:
return Stage(
i: "Uncertain", ii: "Learning on use", iii: "Learning on operation", iv: "Known / accepted")
case .marketPerception:
return Stage(
i: "Chaotic (non-linear)", ii: "Domain of experts", iii: "Increasing expectation of use",
iv: "Ordered (appearance of being trivial) / trivial")
case .userPerception:
return Stage(
i: "Different / confusing / exciting / surprising", ii: "Leading edge / emerging",
iii: "Increasingly common / disappointed if not used", iv: "Standard / expected")
case .perceptionInIndustry:
return Stage(
i: "Competitive advantage / unpredictable / unknown",
ii: "Competitive advantage / ROI / case examples",
iii: "Advantage through implementation / features", iv: "Cost of doing business")
case .focusOfValue:
return Stage(
i: "High future worth", ii: "Seeking profit / ROI", iii: "High profitability",
iv: "High volume / reducing margin")
case .understanding:
return Stage(
i: "Poorly Understood / unpredictable",
ii: "Increasing understanding / development of measures",
iii: "Increasing education / constant refinement of needs / measures",
iv: "Believed to be well defined / stable / measurable")
case .comparison:
return Stage(
i: "Constantly changing / a differential / unstable",
ii: "Learning from others / testing the water / some evidential support",
iii: "Feature difference", iv: "Essential / operational advantage")
case .failure:
return Stage(
i: "High / tolerated / assumed", ii: "Moderate / unsurprising but disappointed",
iii: "Not tolerated, focus on constant improvement",
iv: "Operational efficiency and surprised by failure")
case .marketAction:
return Stage(
i: "Gambling / driven by gut", ii: "Exploring a \"found\" value",
iii: "Market analysis / listening to customers", iv: "Metric driven / build what is needed")
case .efficiency:
return Stage(
i: "Reducing the cost of change (experimentation)", ii: "Reducing cost of waste (Learning)",
iii: "Reducing cost of waste (Learning)", iv: "Reducing cost of deviation (Volume)")
case .decisionDrivers:
return Stage(
i: "Heritage / culture", ii: "Analyses & synthesis", iii: "Analyses & synthesis",
iv: "Previous Experience")
case .behavior:
return Stage(
i: "Uncertain when to use", ii: "Learning when to use", iii: "Learning through use",
iv: "Known / common usage")
}
}
static func title(_ type: StageType) -> String {
switch type {
case .general:
return "Activities"
case .practice:
return "Practice"
case .data:
return "Data"
case .knowledge:
return "Knowledge"
case .ubiquity:
return "Ubiquity"
case .certainty:
return "Certainty"
case .publicationTypes:
return "Publication Types"
case .market:
return "Market"
case .knowledgeManagement:
return "Knowledge Management"
case .marketPerception:
return "Market Perception"
case .userPerception:
return "User Perception"
case .perceptionInIndustry:
return "Perception In Industry"
case .focusOfValue:
return "Focus Of Value"
case .understanding:
return "Understanding"
case .comparison:
return "Comparison"
case .failure:
return "Failure"
case .marketAction:
return "Market Action"
case .efficiency:
return "Efficiency"
case .decisionDrivers:
return "Decision Drivers"
case .behavior:
return "Behavior"
}
}
}
enum StageType: String, CaseIterable, Identifiable {
case general
case practice
case data
case knowledge
case ubiquity
case certainty
case publicationTypes
case market
case knowledgeManagement
case marketPerception
case userPerception
case perceptionInIndustry
case focusOfValue
case understanding
case comparison
case failure
case marketAction
case efficiency
case decisionDrivers
case behavior
var id: String { self.rawValue }
}
|