-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspine2_hey.html
249 lines (223 loc) · 12.3 KB
/
spine2_hey.html
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Spine II - An Overview</title>
<meta name="description" content="A walk-through of how The Big NHS Computer was replaced">
<meta name="author" content="Martin Sumner">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="css/reveal.css">
<link rel="stylesheet" href="css/theme/black.css" id="theme">
<!-- Code syntax highlighting -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h2>The Big NHS Computer</h2>
<p>The Prime Minister said ..</p>
<blockquote cite="http://www.independent.co.uk/voices/commentators/oliver-wright-the-potential-was-huge-but-so-were-the-problems-2330925.html">
“The possibilities are enormous if we can get this right”
</blockquote>
</section>
<section>
<h2>Tonight I intend to ...</h2>
<p>Tell a (long) story ... 20 minutes</p>
<p>Rant/Preach for a bit ... 20 minutes</p>
<p></p>
<p><small>http://martinsumner.github.io/presentations/spine2_hey.html#/</small></p>
</section>
<section>
<p>See Wikipedia </p>
<p><a href="https://en.wikipedia.org/wiki/List_of_failed_and_overbudget_custom_software_projects#Permanent_failures" target="_blank">List of failed and overbudget custom software projects - Permanent Failures</a>
</p>
<img width="1200" height="200" data-src="images/wikipedia.png" alt="Wikipedia Screenshot"/>
</section>
<section>
<blockquote cite="http://www.richardbacon.org.uk/speeches/110614_npfit_WH.html">
“When one of the dogs goes lame, and begins to slow the others down, they are shot. They are then chopped up and fed to the other dogs. The survivors work harder, not only because they’ve had a meal, but also because they have seen what will happen should they themselves go lame”
</blockquote>
</section>
<section>
<blockquote>
“A man left with only two huskies, shouldn't be wasting bullets on a dog”
</blockquote>
</section>
<section data-background="#A3C2FF">
<h2>focus on one programme</h2><h2>The Spine (Core)</h2>
<img width="1200" height="300" data-src="images/spineless.png" alt="Guardian Screenshot - Spineless Performance"/>
</section>
<section data-background="#A3C2FF">
<h2>Early Timeline</h2>
<p align="left">December 2003 - Contract Award</p>
<p align="left">July 2004 - Go Live!</p>
<p align="left">October 2004 - Another release please</p>
<p align="left">February 2005 - Another major release</p>
<p align="right"><small>... must rush-in functionality for other supplier ... supplier will finally use this in May 2010</small></p>
<p align="left">March 2005 - wound Huskie</p>
<p align="right"><small>... slow down!</small></p>
<p align="left">December 2005 - new release ... ooops</p>
<p align="right"><small>... g e t ... m u c h ... s l o w e r</small></p>
</section>
<section data-background="#A3C2FF">
<h2>In their own words</h2>
<blockquote cite="http://www.globalservices.bt.com/uk/en/casestudy/nhs_spine">
“It has made transformational healthcare applications available to approximately 1.3 million NHS healthcare staff across England, providing care to circa 50 million UK citizens.”
</blockquote>
<blockquote cite="http://www.globalservices.bt.com/uk/en/casestudy/nhs_spine">
“20-plus customised NHS Spine applications ... combined cutting edge technologies to meet the demanding service level agreements and response times required ”
</blockquote>
</section>
<section data-background="#A3C2FF">
<h2>More of their own words</h2>
<blockquote cite="http://www.globalservices.bt.com/uk/en/casestudy/nhs_spine">
“The contract was (and continues to be) one of the largest IT programmes in the world, consuming over 15,000 man-years of effort to date ... Over 3,000 servers are hosted and supported”
</blockquote>
<blockquote cite="http://www.globalservices.bt.com/uk/en/casestudy/nhs_spine">
“(The delivery) methodology is now an internationally recognised standard for complex software development programme delivery”
</blockquote>
</section>
<section data-background="#A3C2FF">
<h2>What does success look like?</h2>
<p align="left">Spine can release with <strong>£30m</strong> in transition costs alone</p>
<p align="left">It costs over <strong>£50m</strong> per annum to keep the lights on</p>
<p align="left">Around <strong>50%</strong> of the original business case met</p>
<p align="left">The system is <strong>stable</strong> when <strong>untouched</strong></p>
</section>
<section data-background="#A3C2FF">
<h2>Does replacing Spine follow an inevitable path?</h2>
<img width="800" height="520" data-src="images/O3mjNTx.png" alt="A spider farm near a nuclear reactor?">
</section>
<section data-background="#A3C2FF">
<h2>What if we think about it differently?</h2>
<img width="800" height="250" data-src="images/reading.png" alt="The learning">
</section>
<section data-background="#A3C2FF">
<h2>Pick a select team</h2>
<img width="800" height="550" data-src="images/the_team.png" alt="The initial Spine II team">
</section>
<section data-background="#A3C2FF">
<h2>Pick a technology stack</h2>
<p>Riak KV<p>
<p>Redis, RabbitMQ</p>
<p>Tornado, NGINX, Flask</p>
<p>Puppet, Splunk</p>
<p>HP, Ubuntu</p>
</section>
<section data-background="#A3C2FF">
<h2>Select a SME Delivery Partner</h2>
<img width="900" height="300" data-src="images/code_quality.png" alt="Obligatory XKCD">
</section>
<section data-background="#A3C2FF">
<h2>This is what we did</h2>
<p>It made people angry</p>
<p>It made people scared</p>
<p>But it happened ...</p>
<p><strong>Spine 2 Core went live in August 2014</strong></p>
</section>
<section data-background="#A3C2FF">
<h2>What did/does it cost?</h2>
<p>Took <strong>100 man years</strong> from inception to 1-years service</p>
<p>Requires just over <strong>100 commodity 1RU servers</strong> in live</p>
<p>Release costs are <strong>< 0.1%</strong> of previous release costs</p>
<p><strong>90%</strong> reduction in operating costs</p>
<p>Total running team of <strong>30</strong> people supporting and ...</p>
<p>... Managing more than <strong>£10m</strong> pa of change backlog</p>
</section>
<section data-background="#A3C2FF">
<h2>Does it work?</h2>
<p>(Nearly) like-for-like functional replacement ...</p>
<p><strong>99.999%</strong> available since go live</p>
<p>Supports over 300 message interactions, five UI applications</p>
<p><strong>41.3M</strong> messages a day<p>
<p>Provides accesss to <strong>1.5bn</strong> records and documents</p>
<p>The NHS waits more than <strong>800 working days less</strong> each day</p>
</section>
<section data-background="#E6E68A">
<h2>Learning</h2>
</section>
<section data-background="#E6E68A">
<h2>Invest less in predictions, prepare for them to fail</h2>
<blockquote cite="https://en.wikiquote.org/wiki/Niels_Bohr">“It's hard to make predictions, especially about the future”</blockquote>
</section>
<section data-background="#E6E68A">
<h2>Systems thinking</h2>
<blockquote cite="https://en.wikipedia.org/wiki/No_Silver_Bullet">
<p>“Whereas the difference between poor conceptual designs and good ones may lie in the soundness of design method, the difference between good designs and great ones surely does not.</p>
<p>Great designs come from great designers.</p>
<p>... very best designers produce structures that are faster, smaller, simpler, cleaner, and produced with less effort. ”</p>
</blockquote>
<p><small>Fred Brooks, No Silver Bullet, 1986</small></p>
</section>
<section data-background="#E6E68A">
<h2>Uniformity of system behaviour</h2>
<blockquote cite="http://www.amazon.co.uk/Out-Crisis-W-Edwards-Deming/dp/0262541157">“If I could reduce my message to management to just a few words, I’d say it all has to do with reducing variation”
</blockquote>
<p><small>W Edwards Deming, Out of the Crisis, 1982</small></p>
</section>
<section data-background="#E6E68A">
<h2>Getting away from failure</h2>
<blockquote cite="http://research.microsoft.com/pubs/191008/FailureRecoveryBeEvil.pdf"><p>“ ... failure recovery can cause more problems than it solves, and so must be engineered explicitly according to a <strong>do no harm</strong> requirement”</p></blockquote>
</section>
<section data-background="#E6E68A">
<h2>Use Building Blocks not Magic Boxes</h2>
<blockquote>“Anyways, the secret is, always fix their attention <strong>away</strong> from where the slippery stuff's going on. That's the first law of magic, Specs. Misdirection. Never forget it.”</blockquote>
<p><small>Donna Tartt, 2013</small></p>
</section>
<section data-background="#E6E68A">
<h2>The first hard problem is getting harder</h2>
<blockquote cite="https://twitter.com/secretGeek/status/7269997868">“There are 2 hard problems in computer science: cache invalidation,naming things, and off-by-1 errors.”</blockquote>
</section>
<section data-background="#E6E68A">
<h2>The Purpose of LEAN</h2>
<blockquote cite="https://en.wikipedia.org/wiki/Toyota_Production_System"><p>“While low inventory levels are a key outcome of the Toyota Production System ... Many American businesses, having observed Toyota's factories, set out to attack high inventory levels directly without understanding what made these reductions possible.</p>
<p>The act of imitating without understanding the underlying concept or motivation may have led to the failure of those projects.”</p></blockquote>
</section>
<section data-background="#FFFFE6">
<h2>In conclusion</h2>
<p align="left">Government IT need not be all bad</p>
<p align="left">Radical change is possible</p>
<p align="left">Don't blindly follow</p>
<p align="left">Understand that history is rich and full of answers<p>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// Optional reveal.js plugins
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true },
{ src: 'plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</