]>
Commit | Line | Data |
---|---|---|
98f09799 RBR |
1 | /* |
2 | Copyright (C) 2024 Rubén Beltrán del Río | |
3 | ||
4 | This program is free software: you can redistribute it and/or modify | |
5 | it under the terms of the GNU General Public License as published by | |
6 | the Free Software Foundation, either version 3 of the License, or | |
7 | (at your option) any later version. | |
8 | ||
9 | This program is distributed in the hope that it will be useful, | |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | GNU General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU General Public License | |
15 | along with this program. If not, see https://map.tranquil.systems. | |
16 | */ | |
5e8ff485 RBR |
17 | struct Stage { |
18 | let i: String | |
19 | let ii: String | |
20 | let iii: String | |
21 | let iv: String | |
22 | ||
23 | static func stages(_ type: StageType) -> Stage { | |
24 | switch type { | |
25 | case .general: | |
26 | return Stage( | |
77d0155b | 27 | i: "Genesis", ii: "Custom", iii: "Product (+rental)", iv: "Commodity (+utility)") |
5e8ff485 RBR |
28 | case .practice: |
29 | return Stage( | |
30 | i: "Novel", ii: "Emerging", iii: "Good", iv: "Best") | |
31 | case .data: | |
32 | return Stage( | |
33 | i: "Unmodelled", ii: "Divergent", iii: "Convergent", iv: "Modelled") | |
34 | case .knowledge: | |
35 | return Stage( | |
36 | i: "Concept", ii: "Hypothesis", iii: "Theory", iv: "Accepted") | |
37 | case .ubiquity: | |
38 | return Stage( | |
77d0155b RBR |
39 | i: "Rare", ii: "Slowly Increasing", iii: "Rapidly Increasing", |
40 | iv: "Widespread in the applicable market / ecosystem") | |
5e8ff485 RBR |
41 | case .certainty: |
42 | return Stage( | |
77d0155b RBR |
43 | i: "Poorly Understood / exploring the unknown", |
44 | ii: "Rapid Increase In Learning / discovery becomes refining", | |
45 | iii: "Rapid increase in use / increasing fit for purpose", | |
46 | iv: "Commonly understood (in terms of use)") | |
5e8ff485 RBR |
47 | case .publicationTypes: |
48 | return Stage( | |
77d0155b RBR |
49 | i: |
50 | "Describe the wonder of the thing / the discovery of some marvel / a new land / an unknown frontier", | |
51 | ii: | |
52 | "Focused on build / construct / awareness and learning / many models of explanation / no accepted forms / a wild west", | |
53 | iii: | |
54 | "Maintenance / operations / installation / comparison between competing forms / feature analysis", | |
55 | iv: "Focused on use / increasingly an accepted, almost invisible component") | |
5e8ff485 RBR |
56 | case .market: |
57 | return Stage( | |
77d0155b RBR |
58 | i: "Undefined Market", |
59 | ii: "Forming Market / an array of competing forms and models of understanding", | |
60 | iii: "Growing Market / consolidation to a few competing but more accepted forms", | |
61 | iv: "Mature Market / stabilised to an accepted form") | |
5e8ff485 RBR |
62 | case .knowledgeManagement: |
63 | return Stage( | |
77d0155b RBR |
64 | i: "Uncertain", ii: "Learning on use / focused on testing prediction", |
65 | iii: "Learning on operation / using prediction / verification", iv: "Known / accepted") | |
5e8ff485 RBR |
66 | case .marketPerception: |
67 | return Stage( | |
77d0155b RBR |
68 | i: "Chaotic (non-linear) / domain of the \"crazy\"", ii: "Domain of \"experts\"", |
69 | iii: "Increasing expectation of use / domain of \"professionals\"", | |
70 | iv: "Ordered (appearance of being linear) / trivial / formula to be applied") | |
5e8ff485 RBR |
71 | case .userPerception: |
72 | return Stage( | |
77d0155b RBR |
73 | i: "Different / confusing / exciting / surprising / dangerous", |
74 | ii: "Leading edge / emerging / unceirtanty over results", | |
75 | iii: "Increasingly common / disappointed if not used or available / feeling left behind", | |
76 | iv: "Standard / expected / feeling of shock if not used") | |
5e8ff485 RBR |
77 | case .perceptionInIndustry: |
78 | return Stage( | |
77d0155b RBR |
79 | i: "Future source of competitive advantage / unpredictable / unknown", |
80 | ii: "Seen as a scompetitive advantage / a differential / ROI / case examples", | |
81 | iii: "Advantage through implementation / features / this model is better than that", | |
82 | iv: "Cost of doing business / accepted / specific defined models") | |
5e8ff485 RBR |
83 | case .focusOfValue: |
84 | return Stage( | |
77d0155b RBR |
85 | i: "High future worth but immediate investment", |
86 | ii: "Seeking ways to profit and a ROI / seeking confirmation of value", | |
87 | iii: | |
88 | "High profitability per unit / a valuable model / a feeling of understanding / focus on exploitation", | |
89 | iv: | |
90 | "High volume / reducing margin / important but invisible / an essential component of something more complex" | |
91 | ) | |
5e8ff485 RBR |
92 | case .understanding: |
93 | return Stage( | |
94 | i: "Poorly Understood / unpredictable", | |
95 | ii: "Increasing understanding / development of measures", | |
96 | iii: "Increasing education / constant refinement of needs / measures", | |
97 | iv: "Believed to be well defined / stable / measurable") | |
98 | case .comparison: | |
99 | return Stage( | |
100 | i: "Constantly changing / a differential / unstable", | |
101 | ii: "Learning from others / testing the water / some evidential support", | |
77d0155b RBR |
102 | iii: "Competing models / feature difference / evidential support", |
103 | iv: "Essential / any advantage is operational / accepted norm") | |
5e8ff485 RBR |
104 | case .failure: |
105 | return Stage( | |
77d0155b RBR |
106 | i: "High / tolerated / assumed to be wrong", |
107 | ii: "Moderate / unsurprising if wrong but disappointed", | |
108 | iii: | |
109 | "Not tolerated / focus on constant improvement / assumed to be in the right direction / resistance to changing the model", | |
110 | iv: "Surprised by failure / focus on operational efficiency") | |
5e8ff485 RBR |
111 | case .marketAction: |
112 | return Stage( | |
113 | i: "Gambling / driven by gut", ii: "Exploring a \"found\" value", | |
114 | iii: "Market analysis / listening to customers", iv: "Metric driven / build what is needed") | |
115 | case .efficiency: | |
116 | return Stage( | |
117 | i: "Reducing the cost of change (experimentation)", ii: "Reducing cost of waste (Learning)", | |
118 | iii: "Reducing cost of waste (Learning)", iv: "Reducing cost of deviation (Volume)") | |
119 | case .decisionDrivers: | |
120 | return Stage( | |
121 | i: "Heritage / culture", ii: "Analyses & synthesis", iii: "Analyses & synthesis", | |
122 | iv: "Previous Experience") | |
123 | case .behavior: | |
124 | return Stage( | |
125 | i: "Uncertain when to use", ii: "Learning when to use", iii: "Learning through use", | |
126 | iv: "Known / common usage") | |
127 | } | |
128 | } | |
129 | ||
130 | static func title(_ type: StageType) -> String { | |
131 | switch type { | |
132 | case .general: | |
133 | return "Activities" | |
134 | case .practice: | |
135 | return "Practice" | |
136 | case .data: | |
137 | return "Data" | |
138 | case .knowledge: | |
139 | return "Knowledge" | |
140 | case .ubiquity: | |
141 | return "Ubiquity" | |
142 | case .certainty: | |
143 | return "Certainty" | |
144 | case .publicationTypes: | |
145 | return "Publication Types" | |
146 | case .market: | |
147 | return "Market" | |
148 | case .knowledgeManagement: | |
149 | return "Knowledge Management" | |
150 | case .marketPerception: | |
151 | return "Market Perception" | |
152 | case .userPerception: | |
153 | return "User Perception" | |
154 | case .perceptionInIndustry: | |
155 | return "Perception In Industry" | |
156 | case .focusOfValue: | |
157 | return "Focus Of Value" | |
158 | case .understanding: | |
159 | return "Understanding" | |
160 | case .comparison: | |
161 | return "Comparison" | |
162 | case .failure: | |
163 | return "Failure" | |
164 | case .marketAction: | |
165 | return "Market Action" | |
166 | case .efficiency: | |
167 | return "Efficiency" | |
168 | case .decisionDrivers: | |
169 | return "Decision Drivers" | |
170 | case .behavior: | |
171 | return "Behavior" | |
172 | } | |
173 | } | |
174 | } | |
175 | ||
176 | enum StageType: String, CaseIterable, Identifiable { | |
177 | case general | |
178 | case practice | |
179 | case data | |
180 | case knowledge | |
77d0155b | 181 | |
5e8ff485 RBR |
182 | case ubiquity |
183 | case certainty | |
184 | case publicationTypes | |
77d0155b | 185 | |
5e8ff485 RBR |
186 | case market |
187 | case knowledgeManagement | |
188 | case marketPerception | |
189 | case userPerception | |
190 | case perceptionInIndustry | |
191 | case focusOfValue | |
192 | case understanding | |
193 | case comparison | |
194 | case failure | |
195 | case marketAction | |
196 | case efficiency | |
197 | case decisionDrivers | |
77d0155b | 198 | |
5e8ff485 RBR |
199 | case behavior |
200 | ||
201 | var id: String { self.rawValue } | |
77d0155b RBR |
202 | |
203 | static let types: [StageType] = [.general, .practice, .data, .knowledge] | |
204 | static let characteristics: [StageType] = [.ubiquity, .certainty, .publicationTypes] | |
205 | static let properties: [StageType] = [ | |
206 | .market, .knowledgeManagement, .marketPerception, .userPerception, | |
207 | .perceptionInIndustry, .focusOfValue, .understanding, .comparison, .failure, | |
208 | .marketAction, .efficiency, .decisionDrivers, | |
209 | ] | |
210 | static let custom: [StageType] = [.behavior] | |
5e8ff485 | 211 | } |