-
Notifications
You must be signed in to change notification settings - Fork 113
/
advice.json
611 lines (604 loc) · 30.7 KB
/
advice.json
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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
{
"//" : "Copyright 2018 Atos SE and Worldline",
"//" : "Licensed under MIT (https://github.com/atosorigin/DevOpsMaturityAssessment/blob/master/LICENSE)",
"Team Agility" : {
"Advice" : "A great place to start is by reading the Agile Manifesto. Scrum is a popular Agile software development framework which is a great approach when setting up a new team if there isn't already an existing way of working. Kanban is an evolutionary method for improving a team's agility, and works well when the team already has an existing way of working in place.",
"Links" : [
{
"Type" : "Website",
"Text" : "Agile Manifesto",
"Href" : "http://agilemanifesto.org/"
},
{
"Type" : "Video",
"Text" : "Explaining Agile - Martin Fowler and Neal Ford at USI (0:43)",
"Href" : "https://www.youtube.com/watch?v=GE6lbPLEAzc"
},
{
"Type" : "Video",
"Text" : "The Systems Thinking Approach to Introducing Kanban - David Anderson (1:31)",
"Href" : "https://vimeo.com/46272041"
},
{
"Type" : "Book",
"Text" : "The Scrum Guide by Ken Schwaber and Jeff Sutherland",
"Href" : "http://www.scrumguides.org/index.html"
},
{
"Type" : "Book",
"Text" : "Succeeding with Agile: Software Development Using Scrum by Mike Cohn",
"Href" : "https://www.amazon.com/Succeeding-Agile-Software-Development-Using/dp/0321579364",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "Kanban: Successful Evolutionary Change for Your Technology Business by David Anderson",
"Href" : "https://www.amazon.com/Kanban-Successful-Evolutionary-Technology-Business/dp/0984521402",
"Paid" : "Yes"
}
]
},
"Collaboration" : {
"Advice" : "Consider whether you have the tools necessary to enable effective communication within and outside of the team. Also think about how effective the team's interpersonal habits are for enabling a fast, low-friction and precise exchange of ideas and emotions.",
"Links" : [
{
"Type" : "Blog",
"Text" : "Cultivate Communities of Practice by Mike Cohn",
"Href" : "https://www.mountaingoatsoftware.com/blog/cultivate-communities-of-practice"
},
{
"Type" : "Video",
"Text" : "DevOpsChat: Collaboration Tools Interview with Ryan Bryers and Adrian Hepworth (0:22)",
"Href" : "https://www.youtube.com/watch?v=pF8Y4amhBtA"
},
{
"Type" : "Video",
"Text" : "DevOpsChat: Team = Product Interview with Jim and Michele McCarthy (0:39)",
"Href" : "https://www.youtube.com/watch?v=Rs1tdql6Hb0"
},
{
"Type" : "Book",
"Text" : "Software For Your Head by Jim and Michele McCarthy",
"Href" : "https://liveingreatness.com/software-for-your-head-book/"
}
]
},
"Automation" : {
"Advice" : "Automation is critical to shortening the lead time for software delivery. If quality and speed are to be transformed, automation is essential. Automation enables environments to be provisioned and configured identically every time. Automation enables application code to be built, tested, delivered, provisioned and configured easily. Automation also enables environments to be monitored and incidents (including security threats) to be responded to based upon a set of rules. Automation drives consistency, enforces quality, removes wastage and delivers speed; it is the technical backbone to any DevOps implementation.",
"ReadMore" : "The general rule of thumb is to automate anything that you’re doing more than once, however there are diminishing returns that will be experienced and it produces a new code base to maintain. Surprisingly, adopting a clear and well communicated automation strategy is not necessarily key to successful adoption and buy-in from engineering teams, although it is certainly valuable to have one. The question is more about timing than anything else, but in certain areas (e.g. Infrastructure as Code) automation is one of those things that generally builds pace organically. Start small with engineering led experimentation as, generally, engineers see the value in automation. We suggest that you: <p />- Encourage automation of the day to day (something that may save 20 minutes but is done several times per week, as once the benefits are seen, automating things becomes addictive) <p />- Catalyse discussions of automation tooling choices via communities of interest, these will eventually generate standards in coding, practices, processes and principles <p />- Continuously review automation as part of retrospectives <p />- Communicate automation successes and failures (both can be learned from!) <p />- Follow good engineering practices: for example, maintain automation code in a version controlled code repository <p />When making the case for automation, it is not necessarily about the cost saving (almost certainly not based upon the status quo). For example, the business case for test automation based upon the current release frequency may not make sense, but if that release frequency shifts to once per day it would do. It’s not just about release frequency either, automation significantly reduces wastage within the system, measuring the mean time to recovery (MTTR) and the number of defects in production will display the benefit of automation here. Ultimately the benefits of automation are speed and consistency.",
"Links" : [
{
"Type" : "Book",
"Text" : "Get started with Red Hat Ansible Tower",
"Href" : "https://www.ansible.com/resources/ebooks/get-started-with-red-hat-ansible-tower"
},
{
"Type" : "Article",
"Text" : "Various Ansible Whitepapers",
"Href" : "https://www.ansible.com/resources/whitepapers"
},
{
"Type" : "Blog",
"Text" : "DevOps: Don't create the haystack by Chris Baynham-Hughes",
"Href" : "https://www.linkedin.com/pulse/devops-dont-create-haystack-chris-baynham-hughes/"
},
{
"Type" : "Blog",
"Text" : "Putting The Dev Into DevOps: Why Your Developers Should Write Terraform Too by Luke Kysow",
"Href" : "https://medium.com/runatlantis/putting-the-dev-into-devops-why-your-developers-should-write-terraform-too-d3c079dfc6a8"
},
{
"Type" : "Article",
"Text" : "Data Center Automation (Atos Whitepaper)",
"Href" : "https://atos.net/wp-content/uploads/2018/09/atos-wp-datacenter-automation.pdf"
}
]
},
"Environments" : {
"Advice" : "Automation of the provisioning, configuration and management of environments (such as development, QA and Production) is a cornerstone of DevOps adoption. There are many tools and methodologies that can be adopted to automate the various layers involved: automated monitoring, patching, build and configuration management, as well as simple provisioning. The use of abstraction techniques, such as containerisation, is being widely adopted to simplify such automation.",
"Links" : [
{
"Type" : "Blog",
"Text" : "One year using Kubernetes in production: Lessons learned by Paul Bakker",
"Href" : "https://techbeacon.com/devops/one-year-using-kubernetes-production-lessons-learned"
},
{
"Type" : "Blog",
"Text" : "10 automation tools your DevOps team can not live without Matt Shealy",
"Href" : "https://bigdata-madesimple.com/10-automation-tools-your-devops-team-cant-live-without/"
},
{
"Type" : "Video",
"Text" : "DevOpsChat: Containerisation for DevOps with Miska Kaipiainen (00:19)",
"Href" : "https://www.youtube.com/watch?v=8mR4q-roSHk"
},
{
"Type" : "Blog",
"Text" : "10 Devops Tools For Infrastructure Automation And Monitoring",
"Href" : "https://devopscube.com/devops-tools-for-infrastructure-automation/"
},
{
"Type" : "Website",
"Text" : "Continuous Delivery Foundation (CDF)",
"Href" : "https://cd.foundation/about/"
},
{
"Type" : "Blog",
"Text" : "8 CI/CD Best Practices for Your DevOps Journey by Kristin Baskett",
"Href" : "https://www.cloudbees.com/blog/8-cicd-best-practices-your-devops-journey"
},
{
"Type" : "Blog",
"Text" : "DevOps automation best practices: How much is too much? by David Linthicum",
"Href" : "https://techbeacon.com/devops/devops-automation-best-practices-how-much-too-much"
}
]
},
"Testing" : {
"Advice" : "Automated testing enables tests to be run quickly and frequently. It enables new features to be added with a high degree of confidence that existing functionality will not be broken. As such it is a key enabler for delivering software frequently in smaller increments.",
"Links" : [
{
"Type" : "Blog",
"Text" : "TestPyramid by Martin Fowler",
"Href" : "https://martinfowler.com/bliki/TestPyramid.html"
},
{
"Type" : "Article",
"Text" : "The Practical Test Pyramid by Martin Fowler",
"Href" : "https://martinfowler.com/articles/practical-test-pyramid.html"
},
{
"Type" : "Video",
"Text" : "Automation Testing Tutorial for Beginners (0:07)",
"Href" : "https://www.youtube.com/watch?v=RbSlW8jZFe8"
},
{
"Type" : "Video",
"Text" : "Netflix Automation Talks - Test Automation at Scale (1:16)",
"Href" : "https://www.youtube.com/watch?v=FrBN94gUn_I"
},
{
"Type" : "Book",
"Text" : "Test-Driven Development: A Practical Guide by David Astels",
"Href" : "https://www.amazon.com/Test-Driven-Development-Practical-Guide/dp/0131016490",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "Working Effectively with Legacy Code by Michael Feathers",
"Href" : "https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052/",
"Paid" : "Yes"
}
]
},
"Static Analysis" : {
"Advice" : "Static code analysis is the analysis of software without executing the compiled program. In most cases the analysis is performed on a version of the source code but, in other cases, object code is used. Static analysis helps to improve code quality by reporting possible code bugs, code smells, memory leaks, software metrics and security vulnerabilities.",
"Links" : [
{
"Type" : "Video",
"Text" : "Static Code Analysis: Scan All Your Code For Bugs - Dr. Jared DeMott (0:19)",
"Href" : "https://www.youtube.com/watch?v=Heor8BVa4A0"
},
{
"Type" : "Website",
"Text" : "SonarQube",
"Href" : "https://www.sonarqube.org/"
},
{
"Type" : "Website",
"Text" : "Coverity Scan",
"Href" : "https://scan.coverity.com/"
},
{
"Type" : "Website",
"Text" : "Klocwork",
"Href" : "https://www.roguewave.com/products-services/klocwork"
}
]
},
"Architecture and Design": {
"Advice" : "Navigating the many and various options for optimising architecture for DevOps can be bewildering! It is important to bear in mind that there are no \"right\" answers. The agility and functionality of Public Cloud environments make them ideal for building DevOps focused architectures and a good starting point for reading matter is the Cloud Providers’ own guides. Beyond that there are various books, videos and vendor tool documentation that are useful sources of information.",
"Links" : [
{
"Type" : "Book",
"Text" : "Google Site Reliability Engineering Books",
"Href" : "https://landing.google.com/sre/books/"
},
{
"Type" : "Website",
"Text" : "DevOps and AWS",
"Href" : "https://aws.amazon.com/devops/"
},
{
"Type" : "Website",
"Text" : "Microsoft Azure DevOps Checklist",
"Href" : "https://docs.microsoft.com/en-us/azure/architecture/checklist/dev-ops"
},
{
"Type" : "Website",
"Text" : "Microsoft Azure for Architects",
"Href" : "https://azure.microsoft.com/en-us/resources/azure-for-architects/"
},
{
"Type" : "Website",
"Text" : "The Twelve-Factor App",
"Href" : "https://12factor.net/"
},
{
"Type" : "Book",
"Text" : "The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations by Gene Kim, Jez Humble, Patrick Debois and John Willis",
"Href" : "https://www.amazon.com/DevOps-Handbook-World-Class-Reliability-Organizations/dp/1942788002/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services by Thomas A. Limoncelli, Strata R. Chalup and Christina J. Hogan",
"Href" : "https://www.amazon.com/Practice-Cloud-System-Administration-Practices/dp/032194318X/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "Practical DevOps: Implement DevOps in your organization by effectively building, deploying, testing, and monitoring code by Joakim Verona",
"Href" : "https://www.amazon.com/Practical-DevOps-organization-effectively-monitoring/dp/1788392574/",
"Paid" : "Yes"
},
{
"Type" : "Video",
"Text" : "Rethinking enterprise architecture for DevOps, agile, & cloud native organizations - Michael Cote (0:48)",
"Href" : "https://www.youtube.com/watch?v=2UquXJsbr9M"
},
{
"Type" : "Video",
"Text" : "Mastering Chaos - A Netflix Guide to Microservices - Josh Evans (0:53)",
"Href" : "https://www.youtube.com/watch?v=CZ3wIuvmHeM"
},
{
"Type" : "Book",
"Text" : "Ansible: Up and Running: Automating Configuration Management and Deployment the Easy Way by Lorin Hochstein and Rene Moser",
"Href" : "https://www.amazon.com/_/dp/1491979801",
"Paid" : "Yes"
},
{
"Type" : "Website",
"Text" : "Puppet: Infrastructure as code",
"Href" : "https://puppet.com/solutions/infrastructure-as-code"
}
]
},
"DevOps Practices" : {
"Advice" : "There are a number of technical practices that are core to DevOps: Continuous Integration, Continuous Deployment/Delivery, Test Driven Development, Refactoring, and Code Review. The resources here are good overviews. For more in depth results see the detailed report for DevOps Practices.",
"Links" : [
{
"Type" : "Article",
"Text" : "Enterprise DevOps: Building a Service Oriented Organisation (Atos Whitepaper)",
"Href" : "https://atos.net/wp-content/uploads/2017/01/DevOps_Building_a_Service_Oriented_Organization-White-Paper-web-FINAL-281116.pdf"
},
{
"Type" : "Blog",
"Text" : "Continuous Integration by Martin Fowler",
"Href" : "https://martinfowler.com/articles/continuousIntegration.html"
},
{
"Type" : "Website",
"Text" : "Continuous Delivery",
"Href" : "https://continuousdelivery.com/"
},
{
"Type" : "Video",
"Text" : "Continuous Delivery - Jez Humble (0:46)",
"Href" : "https://www.youtube.com/watch?v=skLJuksCRTw"
},
{
"Type" : "Blog",
"Text" : "TestDrivenDevelopment by Martin Fowler",
"Href" : "https://martinfowler.com/bliki/TestDrivenDevelopment.html"
},
{
"Type" : "Book",
"Text" : "The Art of Agile Development: Test-Driven Development by James Shore",
"Href" : "https://www.jamesshore.com/Agile-Book/test_driven_development.html"
},
{
"Type" : "Website",
"Text" : "Refactoring.com",
"Href" : "https://refactoring.com/"
},
{
"Type" : "Blog",
"Text" : "Code Reviews: Just Do It by Jeff Atwood",
"Href" : "https://blog.codinghorror.com/code-reviews-just-do-it/"
}
]
},
"CI" : {
"Advice" : "Continuous Integration (CI) is the practice of merging changes back to the main branch (trunk) as often as possible, even several times a day. The developer's changes are validated by triggering a build and running automated tests against the build. By doing so, you avoid the integration hell that usually happens when people wait until \"release day\" to merge their changes into the trunk. Continuous Integration puts a great emphasis on test automation to check that the application is not broken whenever new commits are integrated into the main branch.",
"Links" : [
{
"Type" : "Article",
"Text" : "Continuous Integration by Martin Fowler",
"Href" : "https://martinfowler.com/articles/continuousIntegration.html"
},
{
"Type" : "Blog",
"Text" : "FeatureBranch by Martin Fowler",
"Href" : "https://martinfowler.com/bliki/FeatureBranch.html"
},
{
"Type" : "Book",
"Text" : "Continuous Integration: Improving Software Quality and Reducing Risk by Paul M. Duvall",
"Href" : "https://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380",
"Paid" : "Yes"
}
]
},
"CD" : {
"Advice" : "Continuous Delivery (CD) as an extension of Continuous Integration and is an approach where, after each build, the software is automatically delivered into a production-like quality assurance environment on which further automated testing is completed. Furthermore, the build can then be easily released into production if desired. Continuous Deployment goes one step further than Continuous Delivery. With this practice, every change that passes all stages of your delivery pipeline is automatically released into production. There is no human intervention, and only a failed test will prevent a new change being deployed.",
"Links" : [
{
"Type" : "Article",
"Text" : "Continuous integration vs. continuous delivery vs. continuous deployment by Sten Pittet",
"Href" : "https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment"
},
{
"Type" : "Website",
"Text" : "Continuous Delivery",
"Href" : "https://continuousdelivery.com/"
},
{
"Type" : "Video",
"Text" : "GitHub Professional Guides: Continuous Integration Continuous Delivery (0:06)",
"Href" : "https://www.youtube.com/watch?v=xSv_m3KhUO8"
},
{
"Type" : "Video",
"Text" : "CI/CD Introduction (0:04)",
"Href" : "https://www.youtube.com/watch?v=AlrImm1T8Wg"
},
{
"Type" : "Book",
"Text" : "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble",
"Href" : "https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912",
"Paid" : "Yes"
}
]
},
"TDD" : {
"Advice" : "Test Driven Development (TDD) is an approach to developing software where automated tests are written before production code. This ensures that up-to-date automated tests are always maintained and makes it easier and less risky to make changes to software.",
"Links" : [
{
"Type" : "Blog",
"Text" : "TestDrivenDevelopment by Martin Fowler",
"Href" : "https://martinfowler.com/bliki/TestDrivenDevelopment.html"
},
{
"Type" : "Book",
"Text" : "Test-Driven Development: A Practical Guide by David Astels",
"Href" : "https://www.amazon.com/gp/product/0131016490/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "Refactoring: Improving the Design of Existing Code by Martin Fowler",
"Href" : "https://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Signature/dp/0134757599/",
"Paid" : "Yes"
}
]
},
"Code Review" : {
"Advice" : "Code reviews are a very effective way of increasing software quality and also spreading knowledge accross the team.",
"Links" : [
{
"Type" : "Blog",
"Text" : "Code Reviews: Just Do It by Jeff Atwood",
"Href" : "https://blog.codinghorror.com/code-reviews-just-do-it/"
},
{
"Type" : "Book",
"Text" : "Code Complete: A Practical Handbook of Software Construction by Steve McConnell",
"Href" : "https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin",
"Href" : "https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt",
"Href" : "https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/",
"Paid" : "Yes"
}
]
},
"Refactoring" : {
"Advice" : "Refactoring reduces technical debt and is the technical practice of improving the internal quality of code without changing its external functionality. As technical debt builds up, the speed at which new functionality can be released is drastically reduced, thus it is vital that technical debt is actively managed. Refactoring is also an integral part of Test Driven Development (TDD).",
"Links" : [
{
"Type" : "Website",
"Text" : "Refactoring.com",
"Href" : "https://refactoring.com/"
},
{
"Type" : "Website",
"Text" : "What is refactoring?",
"Href" : "https://www.agilealliance.org/glossary/refactoring"
},
{
"Type" : "Website",
"Text" : "Online catalog of refactorings by Martin Fowler",
"Href" : "https://refactoring.com/catalog/"
},
{
"Type" : "Video",
"Text" : "Code Refactoring: Learn Code Smells And Level Up Your Game! - Sandi Metz (0:36)",
"Href" : "https://www.youtube.com/watch?v=D4auWwMsEnY"
},
{
"Type" : "Video",
"Text" : "Workflows of Refactoring - Martin Fowler (0:27)",
"Href" : "https://www.youtube.com/watch?v=vqEg37e4Mkw"
},
{
"Type" : "Book",
"Text" : "Refactoring: Improving the Design of Existing Code by Martin Fowler",
"Href" : "https://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Signature/dp/0134757599/",
"Paid" : "Yes"
}
]
},
"Org Structure, Culture and Incentives" : {
"Advice" : "Org Structure, Culture and Incentives are critical for DevOps success within an organisation, but they are also the hardest/most disruptive elements to change and get right.",
"Links" : [
{
"Type" : "Blog",
"Text" : "The Benefits of Feature Teams by Mike Cohn",
"Href" : "https://www.mountaingoatsoftware.com/blog/the-benefits-of-feature-teams"
},
{
"Type" : "Video",
"Text" : "Spotify Engineering Culture",
"Href" : "https://vimeo.com/85490944"
},
{
"Type" : "Book",
"Text" : "The Open Organization Field Guide",
"Href" : "https://opensource.com/open-organization/resources/field-guide"
},
{
"Type" : "Website",
"Text" : "Management 3.0",
"Href" : "https://management30.com"
},
{
"Type" : "Video",
"Text" : "DevOpsChat: \"Giving a Damn\" interview with Pawel Brodzinski (00:34)",
"Href" : "https://www.youtube.com/watch?v=tY4_OTj46h8"
}
]
},
"Organisation Structure" : {
"Advice" : "For successful DevOps adoption, the organisation needs to be structured into teams that are both cross-functional and autonomous.",
"ReadMore" : "Many organisational structures are characterised by and aligned to functions (specialisms) rather than the outcomes that are needed for the business. The issue with function-based organisational structures is that they tend to create a lot of handovers between teams; things get thrown over the fence for the next team to deal with, generally by complaining about the quality from the previous team and using up all the time of the team after them. This doesn't support the development of a collaborative culture. Improve the organisational structure and both quality and flow will improve.",
"Links" : [
{
"Type" : "Blog",
"Text" : "The Benefits of Feature Teams by Mike Cohn",
"Href" : "https://www.mountaingoatsoftware.com/blog/the-benefits-of-feature-teams"
},
{
"Type" : "Article",
"Text" : "Enterprise DevOps: Building a Service Oriented Organisation (Atos Whitepaper)",
"Href" : "https://atos.net/wp-content/uploads/2017/01/DevOps_Building_a_Service_Oriented_Organization-White-Paper-web-FINAL-281116.pdf"
},
{
"Type" : "Video",
"Text" : "Spotify Engineering Culture",
"Href" : "https://vimeo.com/85490944"
},
{
"Type" : "Book",
"Text" : "Migrating to Cloud-Native Application Architectures by Matt Stine",
"Href" : "https://download3.vmware.com/vmworld/2015/downloads/oreilly-cloud-native-archx.pdf"
},
{
"Type" : "Book",
"Text" : "The Phoenix Project by Gene Kim, Kevin Behr and George Spafford",
"Href" : "https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592",
"Paid" : "Yes"
}
]
},
"Culture" : {
"Advice" : "Driving the right culture within an organisation is critical for successful DevOps adoption. It is the \"X Factor\" for any organisation. An organisation may have the most incredible tool chain in the world, but if they do not collaborate, continuously improve, step out of their traditional/functionally based tribes, ensure clear connection between the desired strategic objectives and the software features being built, engage and empower people at all levels, connect everyone to the mission and embrace experimentation, then the full benefits of DevOps will never be truly realised.",
"ReadMore" : "<p />Culture change is hard and, as a result, many choose to focus on the tooling aspects of DevOps. Culture change is like a virus in the way it spreads: when first introduced to an organisation it will be attacked by \"company antibodies\" (e.g. \"we don’t do it like that here\"). Thus, taking the analogy further, the virus must be strong and continuously fed until it is dominant within the system. <p /> There are many culture change models/approaches and one size does not fit all. Success factors include true business engagement and alignment (DevOps is not \"an IT problem\"), recognising that the \"We is stronger than the I\", a meritocratic, free speaking, open organisation (command and control does not yield transformational results), and change through demonstration/delivery (not only is demonstrating tangible benefits the most effective way to convince doubters, it is backed through many change models; e.g. using the Satir Model for change, demonstrating a new approach is the \"transforming idea\" and repeating it is the \"practice and integration\" that takes an organisation to a new status quo for performance).",
"Links" : [
{
"Type" : "Book",
"Text" : "Tribal Leadership Revised Edition: Leveraging Natural Groups to Build a Thriving Organization by Dave Logan, John King and Halee Fischer-Wright",
"Href" : "https://www.amazon.com/Tribal-Leadership-Leveraging-Thriving-Organization/dp/0061251321/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "Tribal Unity: Getting from Teams to Tribes by Creating a One Team Culture by Em Campbell-Pretty",
"Href" : "https://www.amazon.com/Tribal-Unity-Getting-Creating-Culture/dp/1537347578/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "The Open Organization by Jim Whitehurst",
"Href" : "https://www.amazon.com/Open-Organization-Igniting-Passion-Performance/dp/1625275277/",
"Paid" : "Yes"
},
{
"Type" : "Book",
"Text" : "The Open Organization Field Guide",
"Href" : "https://opensource.com/open-organization/resources/field-guide"
}
]
},
"Incentivisation" : {
"Advice" : "For DevOps adoption personal incentives are less effective at driving the desired behaviors than team incentives. Within a DevOps approach, one wishes to drive ownership of the product/outcomes and the understanding that those successfully adopting DevOps will \"live and die\" as a team; this aligns earnings with collaboration, not competition.",
"ReadMore" : "<p />Incentives are just about the most controversial topic for any organisation, and there are many possible approaches. Making significant changes to incentive structures, especially in large organisations, can be hugely disruptive, controversial and, in some cases, require agreement from unions/employee forums, thus there is no perfect implementation we can recommend. Our advice, however, is to take a fresh look at the existing incentives within the organisation and ensure that they are aligned as much as possible to the outcomes that the organisation is looking to achieve through DevOps. <p />Some organisations have removed all personal incentives in favour of team only incentives, others are constrained within a traditional incentive framework/structure, but can make simple changes like giving weight to actions that support others within the team. What is to be avoided is giving a bonus to the person that turns up at 3:30am and gets a system back up again, rather than rewarding the person who identifies and fixes the issue at its root cause so it doesn’t fall over again; this is an alarmingly common flaw in may incentive structures. <p />Question whether incentives can be used effectively to drive not only DevOps adoption, but tighter unity and collaboration within the DevOps teams themselves. Failing to do so frequently results in team members sticking to their tribes, e.g. \"I'm a Dev, I'm not doing Ops work/going on call.\"",
"Links" : [
{
"Type" : "Website",
"Text" : "Management 3.0",
"Href" : "https://management30.com"
},
{
"Type" : "Video",
"Text" : "DevOpsChat: \"Giving a Damn\" interview with Pawel Brodzinski (00:34)",
"Href" : "https://www.youtube.com/watch?v=tY4_OTj46h8"
},
{
"Type" : "Blog",
"Text" : "Introducing Open Salaries at Buffer: Our Transparent Formula and All Individual Salaries by Joel Gascoigne",
"Href" : "https://open.buffer.com/introducing-open-salaries-at-buffer-including-our-transparent-formula-and-all-individual-salaries/"
},
{
"Type" : "Website",
"Text" : "Holocracy.org",
"Href" : "https://www.holacracy.org/"
},
{
"Type" : "Book",
"Text" : "Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organisations by Gene Kim, Jez Humble and Nicole Forsgren",
"Href" : "https://www.amazon.co.uk/dp/1942788339/",
"Paid" : "Yes"
}
]
},
"Standardisation" : {
"Advice" : "The arguments for standardisation versus flexibility are complex and multi-dimensional, as are the related decision points of utilising SaaS vs PaaS vs IaaS. In truth, there is no \"correct\" answer and the overall benefit of standardisation will vary. The key to success is to gain a good understanding of the relative merits and disadvantages, which can then be applied to any particular situation. Below are some excellent guides to help develop greater understanding of this.",
"Links" : [
{
"Type" : "Blog",
"Text" : "Challenges in DevOps Standardization by Lavanya Subbarayalu",
"Href" : "https://devops.com/challenges-devops-standardization/"
},
{
"Type" : "Blog",
"Text" : "DevOps Survey Results: The Case for Standardized Continuous Delivery Tools by Heidi Gilmore",
"Href" : "https://www.cloudbees.com/blog/devops-survey-results-case-standardized-continuous-delivery-tools"
},
{
"Type" : "Blog",
"Text" : "Centralized vs. decentralized CI / CD strategies for multiple teams by Adrian Oprea",
"Href" : "https://oprea.rocks/blog/centralized-vs-decentralized-ci-cd-strategies-for-multiple-teams/"
},
{
"Type" : "Blog",
"Text" : "When to use SaaS, PaaS, and IaaS by Eamonn Colman",
"Href" : "https://www.computenext.com/blog/when-to-use-saas-paas-and-iaas/"
},
{
"Type" : "Blog",
"Text" : "SaaS vs PaaS vs IaaS: What’s The Difference and How To Choose by Stephen Watts",
"Href" : "https://www.bmc.com/blogs/saas-vs-paas-vs-iaas-whats-the-difference-and-how-to-choose/"
}
]
}
}