Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Productivity Engineering: Surviving DevOps

393 views

Published on

The software industry has seen an influx of technologies and techniques, including DevOps, cloud, Agile, microservices, machine learning, big data, containers and more. Organizations are becoming flatter and engineers are being asked to do more than ever before. All of this contributes to an increase in cognitive load for engineers.

Mike McGarr (Manager, Netflix Developer Productivity) will talk about the challenges that arise from DevOps cultures like Netflix, and their approach to tackling these problems. Mike will provide some advice on how growing companies interested in DevOps can reduce cognitive load and maximize business value.

Published in: Technology
  • Login to see the comments

Productivity Engineering: Surviving DevOps

  1. 1. ProductivityEngineeringSurviving DevOps Mike McGarr @SonOfGarr © J. Michael McGarr, 2018
  2. 2. 17 years ago... © J. Michael McGarr, 2018
  3. 3. Agile © J. Michael McGarr, 2018
  4. 4. developers + the business © J. Michael McGarr, 2018
  5. 5. Scrum TDD Continuous integration © J. Michael McGarr, 2018
  6. 6. © J. Michael McGarr, 2018
  7. 7. 9 years ago... © J. Michael McGarr, 2018
  8. 8. © J. Michael McGarr, 2018
  9. 9. DevOps © J. Michael McGarr, 2018
  10. 10. cloud microservices Deming/lean continuous delivery web scale containers nosql telemetry © J. Michael McGarr, 2018
  11. 11. © J. Michael McGarr, 2018
  12. 12. Engineers in a DevOps world © J. Michael McGarr, 2018
  13. 13. Engineers in a DevOps world Full Stack Engineers? © J. Michael McGarr, 2018
  14. 14. are we are asking too much? © J. Michael McGarr, 2018
  15. 15. ProductivityEngineeringSurviving DevOps Mike McGarr @SonOfGarr © J. Michael McGarr, 2018
  16. 16. © J. Michael McGarr, 2018
  17. 17. There are known knowns. These are things we know that we know. There are known unknowns. That is to say, there are things that we know we don't know. But there are also unknown unknowns. There are things we don't know we don't know. © J. Michael McGarr, 2018
  18. 18. © J. Michael McGarr, 2018
  19. 19. · write code © J. Michael McGarr, 2018
  20. 20. · write code · write tests © J. Michael McGarr, 2018
  21. 21. · write code · write tests · manage dependencies © J. Michael McGarr, 2018
  22. 22. · write code · write tests · manage dependencies · create deployment pipelines © J. Michael McGarr, 2018
  23. 23. · write code · write tests · manage dependencies · create deployment pipelines · create metrics, alerts and graphs © J. Michael McGarr, 2018
  24. 24. · write code · write tests · manage dependencies · create deployment pipelines · create metrics, alerts and graphs · performance tuning © J. Michael McGarr, 2018
  25. 25. · write code · write tests · manage dependencies · create deployment pipelines · create metrics, alerts and graphs · performance tuning · participate in chaos monkey © J. Michael McGarr, 2018
  26. 26. · write code · write tests · manage dependencies · create deployment pipelines · create metrics, alerts and graphs · performance tuning · participate in chaos monkey · design a canary © J. Michael McGarr, 2018
  27. 27. · write code · write tests · manage dependencies · create deployment pipelines · create metrics, alerts and graphs · performance tuning · participate in chaos monkey · design a canary · wear a pager © J. Michael McGarr, 2018
  28. 28. © J. Michael McGarr, 2018
  29. 29. · rotate your logs © J. Michael McGarr, 2018
  30. 30. · rotate your logs · pump logs through the data pipeline © J. Michael McGarr, 2018
  31. 31. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks © J. Michael McGarr, 2018
  32. 32. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks · semantic version your libraries © J. Michael McGarr, 2018
  33. 33. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks · semantic version your libraries · define A/B tests © J. Michael McGarr, 2018
  34. 34. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks · semantic version your libraries · define A/B tests · manage dynamic properties globally © J. Michael McGarr, 2018
  35. 35. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks · semantic version your libraries · define A/B tests · manage dynamic properties globally · determine which instance type you need © J. Michael McGarr, 2018
  36. 36. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks · semantic version your libraries · define A/B tests · manage dynamic properties globally · determine which instance type you need · security groups, IAM roles! © J. Michael McGarr, 2018
  37. 37. · rotate your logs · pump logs through the data pipeline · ensure your service clients have sane fallbacks · semantic version your libraries · define A/B tests · manage dynamic properties globally · determine which instance type you need · security groups, IAM roles! · encrypt your secrets © J. Michael McGarr, 2018
  38. 38. I could keep going... © J. Michael McGarr, 2018
  39. 39. deliver business value © J. Michael McGarr, 2018
  40. 40. complexity scale availability velocity © J. Michael McGarr, 2018
  41. 41. ProductivityEngineering © J. Michael McGarr, 2018
  42. 42. Productivity Engineering aims to reduce cognitive load so that engineers can devote the majority of their attention to delivering business value. © J. Michael McGarr, 2018
  43. 43. Reducingcognitiveload © J. Michael McGarr, 2018
  44. 44. centralized enablement platforms developer experience © J. Michael McGarr, 2018
  45. 45. centralizedenablement © J. Michael McGarr, 2018
  46. 46. Who is going to make engineering's life easier? © J. Michael McGarr, 2018
  47. 47. individuals © J. Michael McGarr, 2018
  48. 48. centralizedteams © J. Michael McGarr, 2018
  49. 49. organizational commitment © J. Michael McGarr, 2018
  50. 50. © J. Michael McGarr, 2018
  51. 51. · Developer Productivity (VCS, build, artifacts) © J. Michael McGarr, 2018
  52. 52. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) © J. Michael McGarr, 2018
  53. 53. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) © J. Michael McGarr, 2018
  54. 54. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) · OS Engineering (base AMI) © J. Michael McGarr, 2018
  55. 55. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) · OS Engineering (base AMI) · CORE Reliability (availability) © J. Michael McGarr, 2018
  56. 56. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) · OS Engineering (base AMI) · CORE Reliability (availability) · Chaos Engineering (service resiliency) © J. Michael McGarr, 2018
  57. 57. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) · OS Engineering (base AMI) · CORE Reliability (availability) · Chaos Engineering (service resiliency) · Traffic Engineering (regional failovers) © J. Michael McGarr, 2018
  58. 58. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) · OS Engineering (base AMI) · CORE Reliability (availability) · Chaos Engineering (service resiliency) · Traffic Engineering (regional failovers) · Cloud Security (security) © J. Michael McGarr, 2018
  59. 59. · Developer Productivity (VCS, build, artifacts) · Delivery Engineering (cloud delivery) · Runtime Engineering (service RPC and discovery) · OS Engineering (base AMI) · CORE Reliability (availability) · Chaos Engineering (service resiliency) · Traffic Engineering (regional failovers) · Cloud Security (security) · Insight Engineering (telemetry) © J. Michael McGarr, 2018
  60. 60. centralized teams enable product teams © J. Michael McGarr, 2018
  61. 61. middle 80% © J. Michael McGarr, 2018
  62. 62. freedomandresponsibility © J. Michael McGarr, 2018
  63. 63. those with the responsibility, should have the freedom © J. Michael McGarr, 2018
  64. 64. platforms © J. Michael McGarr, 2018
  65. 65. tools © J. Michael McGarr, 2018
  66. 66. © J. Michael McGarr, 2018
  67. 67. build automation tooling deployment tooling RPC tooling service discovery tooling telemetry tooling persistence tooling security tooling © J. Michael McGarr, 2018
  68. 68. PavedRoad © J. Michael McGarr, 2018
  69. 69. © J. Michael McGarr, 2018
  70. 70. © J. Michael McGarr, 2018
  71. 71. abstractions © J. Michael McGarr, 2018
  72. 72. $ newt package // Java projects $ newt package // node.js projects $ newt package // Python projects $ newt package // Ruby projects © J. Michael McGarr, 2018
  73. 73. extensibility © J. Michael McGarr, 2018
  74. 74. app-types© J. Michael McGarr, 2018
  75. 75. © J. Michael McGarr, 2018
  76. 76. © J. Michael McGarr, 2018
  77. 77. © J. Michael McGarr, 2018
  78. 78. · internal tool, built like a commercial product © J. Michael McGarr, 2018
  79. 79. · internal tool, built like a commercial product · heavy focus paid to design and user experience © J. Michael McGarr, 2018
  80. 80. · internal tool, built like a commercial product · heavy focus paid to design and user experience · focus on API's as well as UI © J. Michael McGarr, 2018
  81. 81. · internal tool, built like a commercial product · heavy focus paid to design and user experience · focus on API's as well as UI · Extensibility built it © J. Michael McGarr, 2018
  82. 82. · internal tool, built like a commercial product · heavy focus paid to design and user experience · focus on API's as well as UI · Extensibility built it · Abstraction of focused, niche platforms © J. Michael McGarr, 2018
  83. 83. product management © J. Michael McGarr, 2018
  84. 84. empathy for users © J. Michael McGarr, 2018
  85. 85. developerexperience © J. Michael McGarr, 2018
  86. 86. everybody is a developer © J. Michael McGarr, 2018
  87. 87. beyond building a better IDE © J. Michael McGarr, 2018
  88. 88. whatistheworkengineersdo thatcanbeoffloaded? © J. Michael McGarr, 2018
  89. 89. developerexperience © J. Michael McGarr, 2018
  90. 90. developerexperience · tooling/api proliferation © J. Michael McGarr, 2018
  91. 91. let 1000 flowers bloom © J. Michael McGarr, 2018
  92. 92. Is there a tool that does ____________? © J. Michael McGarr, 2018
  93. 93. stop building tools? © J. Michael McGarr, 2018
  94. 94. centers of gravity © J. Michael McGarr, 2018
  95. 95. developerexperience © J. Michael McGarr, 2018
  96. 96. developerexperience · tooling/api proliferation © J. Michael McGarr, 2018
  97. 97. developerexperience · tooling/api proliferation · organization-wide integration © J. Michael McGarr, 2018
  98. 98. sharingcode © J. Michael McGarr, 2018
  99. 99. Publishers Consumers © J. Michael McGarr, 2018
  100. 100. Publishers © J. Michael McGarr, 2018
  101. 101. Publishers · Who is consuming my library? © J. Michael McGarr, 2018
  102. 102. Publishers · Who is consuming my library? · Who is using this API in my library? © J. Michael McGarr, 2018
  103. 103. Publishers · Who is consuming my library? · Who is using this API in my library? · Who will I break if I change this API? © J. Michael McGarr, 2018
  104. 104. Consumers © J. Michael McGarr, 2018
  105. 105. Consumers · Is there code available that solves problem X? © J. Michael McGarr, 2018
  106. 106. Consumers · Is there code available that solves problem X? · Which version of this library is safe? © J. Michael McGarr, 2018
  107. 107. Consumers · Is there code available that solves problem X? · Which version of this library is safe? · Why did I get this particular version? © J. Michael McGarr, 2018
  108. 108. Consumers · Is there code available that solves problem X? · Which version of this library is safe? · Why did I get this particular version? · How o!en should I get the latest version? © J. Michael McGarr, 2018
  109. 109. Sowebuilt... © J. Michael McGarr, 2018
  110. 110. Sowebuilt... 1. A tool to determine ownership of a git repo © J. Michael McGarr, 2018
  111. 111. Sowebuilt... 1. A tool to determine ownership of a git repo 2. A tool to understand the dependency graph © J. Michael McGarr, 2018
  112. 112. Sowebuilt... 1. A tool to determine ownership of a git repo 2. A tool to understand the dependency graph 3. A tool to lock resolved dependencies © J. Michael McGarr, 2018
  113. 113. Sowebuilt... 1. A tool to determine ownership of a git repo 2. A tool to understand the dependency graph 3. A tool to lock resolved dependencies 4. A tool to build all downstream consumers © J. Michael McGarr, 2018
  114. 114. rebuilding it all into a platform! © J. Michael McGarr, 2018
  115. 115. developerexperience © J. Michael McGarr, 2018
  116. 116. developerexperience · tooling/api proliferation © J. Michael McGarr, 2018
  117. 117. developerexperience · tooling/api proliferation · organization-wide integration © J. Michael McGarr, 2018
  118. 118. developerexperience · tooling/api proliferation · organization-wide integration · change engineering © J. Michael McGarr, 2018
  119. 119. move the company from state A to B © J. Michael McGarr, 2018
  120. 120. © J. Michael McGarr, 2018
  121. 121. · upgrade from Java 6 to Java 7 © J. Michael McGarr, 2018
  122. 122. · upgrade from Java 6 to Java 7 · migrate from CentOS to Ubuntu © J. Michael McGarr, 2018
  123. 123. · upgrade from Java 6 to Java 7 · migrate from CentOS to Ubuntu · migrate from Perforce to Git © J. Michael McGarr, 2018
  124. 124. · upgrade from Java 6 to Java 7 · migrate from CentOS to Ubuntu · migrate from Perforce to Git · upgrade from Java 6 to Java 7 © J. Michael McGarr, 2018
  125. 125. reduce the cost of change © J. Michael McGarr, 2018
  126. 126. changecampaigns © J. Michael McGarr, 2018
  127. 127. distributedrefactoring © J. Michael McGarr, 2018
  128. 128. © J. Michael McGarr, 2018
  129. 129. 1. find all git repos © J. Michael McGarr, 2018
  130. 130. 1. find all git repos 2. convert all code to AST © J. Michael McGarr, 2018
  131. 131. 1. find all git repos 2. convert all code to AST 3. find the variety of calls to logging library © J. Michael McGarr, 2018
  132. 132. 1. find all git repos 2. convert all code to AST 3. find the variety of calls to logging library 4. transform all code to call new logging library © J. Michael McGarr, 2018
  133. 133. 1. find all git repos 2. convert all code to AST 3. find the variety of calls to logging library 4. transform all code to call new logging library 5. issue pull requests to all git repos © J. Michael McGarr, 2018
  134. 134. 1. find all git repos 2. convert all code to AST 3. find the variety of calls to logging library 4. transform all code to call new logging library 5. issue pull requests to all git repos 6. automate testing for every pull request © J. Michael McGarr, 2018
  135. 135. ProductivityEngineering centralized enablement platforms developer experience © J. Michael McGarr, 2018
  136. 136. QuestionsMike McGarr @SonOfGarr © J. Michael McGarr, 2018

×