Successfully reported this slideshow.
Your SlideShare is downloading. ×

Confessions of an Automation Addict

Confessions of an Automation Addict

Download to read offline

I’ve never seen a job I didn’t want to automate. Sometimes it’s worked out well, sometimes automation has turned a small nuisance into a big, fragile, free-time-eating monster nuisance. In this talk, I’ll explore why we automate, when to automate, the hazards of automation and the – big – rewards of automation. I’m part of the team developing IBM’s WebSphere Liberty application server. We’ve used a mix of off-the-shelf and home-rolled tools and processes to work smarter and more productively. I’ll describe what we’ve learned as WebSphere has transitioned to DevOps and continuous delivery and why I still can’t resist trying to automate all the things.

These are slides from a 2014 presentation at GeekOut UK.

I’ve never seen a job I didn’t want to automate. Sometimes it’s worked out well, sometimes automation has turned a small nuisance into a big, fragile, free-time-eating monster nuisance. In this talk, I’ll explore why we automate, when to automate, the hazards of automation and the – big – rewards of automation. I’m part of the team developing IBM’s WebSphere Liberty application server. We’ve used a mix of off-the-shelf and home-rolled tools and processes to work smarter and more productively. I’ll describe what we’ve learned as WebSphere has transitioned to DevOps and continuous delivery and why I still can’t resist trying to automate all the things.

These are slides from a 2014 presentation at GeekOut UK.

More Related Content

Confessions of an Automation Addict

  1. 1. © 2013 IBM Corporation Holly Cummins @holly_cummins
  2. 2. @holly_cummins#automationconfessions
  3. 3. @holly_cummins#automationconfessions ?
  4. 4. @holly_cummins#automationconfessions
  5. 5. @holly_cummins#automationconfessions
  6. 6. I’m from IBM’s Bluemix Garage.
  7. 7. @holly_cummins#automationconfessions Share yours too. #automationconfessions
  8. 8. @holly_cummins#automationconfessions
  9. 9. @holly_cummins#automationconfessions My team
  10. 10. @holly_cummins#automationconfessions … My team
  11. 11. @holly_cummins#automationconfessions Can that be automated?… My team
  12. 12. @holly_cummins#automationconfessions Andrew Holly Last autumn.
  13. 13. @holly_cummins#automationconfessions Holly, you need to stop working on automating this process. Andrew Holly Last autumn.
  14. 14. @holly_cummins#automationconfessions But why?! Holly, you need to stop working on automating this process. Andrew Holly Last autumn.
  15. 15. @holly_cummins#automationconfessions But why?! Holly, you need to stop working on automating this process. The contract finished last week. We’re not working for that client anymore. Andrew Holly Last autumn.
  16. 16. @holly_cummins#automationconfessions But why?! Holly, you need to stop working on automating this process. The contract finished last week. We’re not working for that client anymore. But … there’s stuff still to automate. Andrew Holly Last autumn.
  17. 17. @holly_cummins#automationconfessions Alasdair
  18. 18. @holly_cummins#automationconfessions Look at my cool solution! Alasdair
  19. 19. @holly_cummins#automationconfessions Look at my cool solution!Holly, I give you all the worst jobs. Alasdair
  20. 20. @holly_cummins#automationconfessions Look at my cool solution!Holly, I give you all the worst jobs. ?! Why?? Alasdair
  21. 21. @holly_cummins#automationconfessions Look at my cool solution!Holly, I give you all the worst jobs. I know you’ll automate them. ?! Why?? Alasdair
  22. 22. @holly_cummins#automationconfessions It’s not just me.
  23. 23. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] It’s not just me.
  24. 24. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] It’s not just me.
  25. 25. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny It’s not just me.
  26. 26. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny It’s not just me.
  27. 27. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 It’s not just me.
  28. 28. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 It’s not just me.
  29. 29. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 1941 Electromechanical Computer It’s not just me.
  30. 30. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 1941 Electromechanical Computer It’s not just me.
  31. 31. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 1941 Electromechanical Computer Chef 2012 It’s not just me.
  32. 32. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 1941 Electromechanical Computer Chef 2012 It’s not just me.
  33. 33. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 1941 Electromechanical Computer Chef 2012 Docker 2014 It’s not just me.
  34. 34. @holly_cummins#automationconfessions [Human history has been slightly simplified. Timeline is not to scale.] 1764 Spinning Jenny Washing Machine 1858 1941 Electromechanical Computer Chef 2012 More and more is automated. Docker 2014 It’s not just me.
  35. 35. @holly_cummins#automationconfessions So are we living the dream?
  36. 36. @holly_cummins#automationconfessions So are we living the dream? Well. Not quite.
  37. 37. @holly_cummins#automationconfessions
  38. 38. @holly_cummins#automationconfessions Yes, that’s all the exact same image.
  39. 39. @holly_cummins#automationconfessions Why automate? Automate because we are lazy
  40. 40. @holly_cummins#automationconfessions
  41. 41. @holly_cummins#automationconfessions
  42. 42. @holly_cummins#automationconfessions My manager
  43. 43. @holly_cummins#automationconfessions “Sustainable” My manager
  44. 44. @holly_cummins#automationconfessions Automate for sustainability Automate for efficiency “Sustainable” My manager
  45. 45. @holly_cummins#automationconfessions If it’s boring, automate it.
  46. 46. @holly_cummins#automationconfessions Server farms
  47. 47. @holly_cummins#automationconfessions Server farms
  48. 48. @holly_cummins#automationconfessions Server farms Treat your servers like cattle, not like pets.
  49. 49. @holly_cummins#automationconfessions Scale The more of you there are, the more you need to invest in automation
  50. 50. @holly_cummins#automationconfessions Do a task once. Do it a second time and take notes. Do it a third time, automate.
  51. 51. @holly_cummins#automationconfessions Why Automate?
  52. 52. @holly_cummins#automationconfessions Why Automate?
  53. 53. @holly_cummins#automationconfessions Automate because you care Why Automate?
  54. 54. @holly_cummins#automationconfessions If you care about it, automate it.
  55. 55. @holly_cummins#automationconfessions Automate because you care that it happens at all Why Automate?
  56. 56. @holly_cummins#automationconfessions Automate because you care that it happens at all Why Automate?
  57. 57. @holly_cummins#automationconfessions Marvin
  58. 58. @holly_cummins#automationconfessions Marvin Build breaks (including test failures) should be reverted from the stream.
  59. 59. @holly_cummins#automationconfessions Marvin Build breaks (including test failures) should be reverted from the stream. No one wanted to be the one who did it.
  60. 60. @holly_cummins#automationconfessions Marvin Build breaks (including test failures) should be reverted from the stream. No one wanted to be the one who did it. It didn’t happen.
  61. 61. @holly_cummins#automationconfessions Marvin Build breaks (including test failures) should be reverted from the stream. No one wanted to be the one who did it. It didn’t happen. Solution: Automate!
  62. 62. @holly_cummins#automationconfessions Marvin Build breaks (including test failures) should be reverted from the stream. No one wanted to be the one who did it. It didn’t happen. Solution: Automate!
  63. 63. @holly_cummins#automationconfessions End of iteration demos
  64. 64. @holly_cummins#automationconfessions End of iteration demos Automatic generation on story close
  65. 65. Automating to improve the outcome rather than to save effort.
  66. 66. Automating to improve the outcome rather than to save effort. • Write the Rational Team Concert plugin (one-off)
  67. 67. Automating to improve the outcome rather than to save effort. • Write the Rational Team Concert plugin (one-off) • Close the demo task (every story)
  68. 68. Automating to improve the outcome rather than to save effort. • Write the Rational Team Concert plugin (one-off) • Close the demo task (every story) • Actually do the demo (every story)
  69. 69. Automating to improve the outcome rather than to save effort. • Write the Rational Team Concert plugin (one-off) • Close the demo task (every story) • Actually do the demo (every story) • But … we get guaranteed demos now.
  70. 70. @holly_cummins#automationconfessions Automate because you care that it’s done right Why Automate?
  71. 71. @holly_cummins#automationconfessions Automate because you care that it’s done right Why Automate?
  72. 72. @holly_cummins#automationconfessions Linting
  73. 73. @holly_cummins#automationconfessions A computer can notice problems that a human can’t (like misspelled variable names) Linting
  74. 74. @holly_cummins#automationconfessions A computer can notice problems that a human can’t (like misspelled variable names) Linting FindbugsWe
  75. 75. @holly_cummins#automationconfessions Deployment
  76. 76. @holly_cummins#automationconfessions Deployment
  77. 77. @holly_cummins#automationconfessions Deployment Should be easy, right?
  78. 78. @holly_cummins#automationconfessions Deployment Should be easy, right? Always one step that gets forgotten …
  79. 79. @holly_cummins#automationconfessions Swapping a Watson Service
  80. 80. @holly_cummins#automationconfessions Swapping a Watson Service { "name": "nlc-classifiers", "credentials": { "classifiers":[ {"classifier_id":"004a12x110-nlc-922","includes":[null],"excludes":null}, {"classifier_id":"e82f62x108-nlc-2895","includes":[null],"excludes":null}, {"classifier_id":"e3ca6dx107-nlc-3412","includes":[null],"excludes":null}, {"classifier_id":"e3ca6dx107-nlc-3413","includes":["AAA"],"excludes":null}, {"classifier_id":"8aff06x106-nlc-11119","includes":["EEE"],"excludes":["BRD","FRP"]}, {"classifier_id":"e82f62x108-nlc-2896","includes":["XYZ","ABC"],"excludes":null}, {"classifier_id":"0877dax111-nlc-558","includes":["WWW","SSS","YYY","FFF"],"excludes":null}, {"classifier_id":"8aff06x106-nlc-11121","includes":["BBB"],"excludes":null} ] }}
  81. 81. @holly_cummins#automationconfessions Swapping a Watson Service { "name": "nlc-classifiers", "credentials": { "classifiers":[ {"classifier_id":"004a12x110-nlc-922","includes":[null],"excludes":null}, {"classifier_id":"e82f62x108-nlc-2895","includes":[null],"excludes":null}, {"classifier_id":"e3ca6dx107-nlc-3412","includes":[null],"excludes":null}, {"classifier_id":"e3ca6dx107-nlc-3413","includes":["AAA"],"excludes":null}, {"classifier_id":"8aff06x106-nlc-11119","includes":["EEE"],"excludes":["BRD","FRP"]}, {"classifier_id":"e82f62x108-nlc-2896","includes":["XYZ","ABC"],"excludes":null}, {"classifier_id":"0877dax111-nlc-558","includes":["WWW","SSS","YYY","FFF"],"excludes":null}, {"classifier_id":"8aff06x106-nlc-11121","includes":["BBB"],"excludes":null} ] }} 3 configuration errors in one week. Oops.
  82. 82. Why automate?
  83. 83. Why automate?
  84. 84. Automate because it’s fun Why automate?
  85. 85. Why not automate? Ross
  86. 86. Why not automate? I get so mad at how much time I could save if I had more time. Ross
  87. 87. Why not automate? I get so mad at how much time I could save if I had more time. Ross Ross’s bootstraps
  88. 88. Why not automate? I get so mad at how much time I could save if I had more time. The automation paradox Ross Ross’s bootstraps
  89. 89. @holly_cummins#automationconfessions Fixing a classpath
  90. 90. @holly_cummins#automationconfessions
  91. 91. @holly_cummins#automationconfessions Fixing 26 classpaths
  92. 92. @holly_cummins#automationconfessions Fixing 26 classpaths
  93. 93. @holly_cummins#automationconfessions
  94. 94. @holly_cummins#automationconfessions find something | exec something {} + ; ?!
  95. 95. @holly_cummins#automationconfessions find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; …
  96. 96. @holly_cummins#automationconfessions find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … sedder.sh and dosed.sh and … ?
  97. 97. @holly_cummins#automationconfessions find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … sedder.sh and dosed.sh and … ? perl … um .. something?
  98. 98. @holly_cummins#automationconfessions find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … sedder.sh and dosed.sh and … ? perl … um .. something?
  99. 99. @holly_cummins#automationconfessions Me Kate, our new graduate
  100. 100. @holly_cummins#automationconfessions Kate, could you please fix these classpaths? Me Kate, our new graduate
  101. 101. @holly_cummins#automationconfessions Sure, Holly! Kate, could you please fix these classpaths? Me Kate, our new graduate
  102. 102. @holly_cummins#automationconfessions Epilogue perl -pi -w -e 's/SEARCH_FOR/REPLACE_WITH/g;' *.txt
  103. 103. thanks (for everything!), xkcd.com Why not automate
  104. 104. The Dream Super- helpful automation automaton
  105. 105. The Reality
  106. 106. The Reality
  107. 107. The Reality Think about support.
  108. 108. The Reality Think about support. Think about robustness.
  109. 109. @holly_cummins#automationconfessions Rosie
  110. 110. @holly_cummins#automationconfessions Rosie ate the world.
  111. 111. @holly_cummins#automationconfessions Rosie ate the world. (Well, my corner of it.)
  112. 112. @holly_cummins#automationconfessions Give hefty automations adorable names
  113. 113. @holly_cummins#automationconfessions Questions to ask before automating
  114. 114. @holly_cummins#automationconfessions Questions to ask before automatingWho can maintain this automation?
  115. 115. @holly_cummins#automationconfessions Questions to ask before automatingWho can maintain this automation? Who can manage this automation?
  116. 116. @holly_cummins#automationconfessions Questions to ask before automatingWho can maintain this automation? Who can manage this automation? How much will it cost?
  117. 117. @holly_cummins#automationconfessions Questions to ask before automatingWho can maintain this automation? Who can manage this automation? How much will it cost? Will it be robust? What if things change?
  118. 118. @holly_cummins#automationconfessions Checkpoint during automation
  119. 119. @holly_cummins#automationconfessions Checkpoint during automationHow do I define success?
  120. 120. @holly_cummins#automationconfessions Checkpoint during automationHow do I define success? Have I got completion criteria?
  121. 121. @holly_cummins#automationconfessions Checkpoint during automationHow do I define success? Have I got completion criteria? Am I still saving time?
  122. 122. @holly_cummins#automationconfessions Checkpoint during automationHow do I define success? Have I got completion criteria? Am I still saving time? Is this still worth it?
  123. 123. @holly_cummins#automationconfessions Don’t Lose Your Perspective.
  124. 124. @holly_cummins#automationconfessions Remember the bus
  125. 125. @holly_cummins#automationconfessions Remember the bus A clever automation isn’t so clever if only one person understands it…
  126. 126. @holly_cummins#automationconfessions Remember the bus A clever automation isn’t so clever if only one person understands it…
  127. 127. @holly_cummins#automationconfessions Remember the bus A clever automation isn’t so clever if only one person understands it… … and they get hit by a bus.
  128. 128. @holly_cummins#automationconfessions Why not automate
  129. 129. @holly_cummins#automationconfessions Why not automate Should I automate this process…
  130. 130. @holly_cummins#automationconfessions Why not automate Should I automate this process… … or should I change it?
  131. 131. The dumbness problem
  132. 132. The dumbness problem It’s dumb to automate dumb things …
  133. 133. The dumbness problem It’s dumb to automate dumb things … … and …
  134. 134. The dumbness problem It’s dumb to automate dumb things … … and … … Automation allows you to do dumb things at a greater speed
  135. 135. @holly_cummins#automationconfessions Defect screening
  136. 136. @holly_cummins#automationconfessions Ask questions before automatically automating things which don’t actually need to be done.
  137. 137. Why not automate
  138. 138. Why not automate
  139. 139. Why not automate Computers don’t always get it right.
  140. 140. https://www.youtube.com/watch?v=hulnz902gWo
  141. 141. @holly_cummins#automationconfessions Build monitoring
  142. 142. DevOps
  143. 143. @holly_cummins#automationconfessions
  144. 144. @holly_cummins#automationconfessions
  145. 145. What is DevOps?
  146. 146. @holly_cummins#automationconfessions Old way
  147. 147. @holly_cummins#automationconfessions Old way
  148. 148. @holly_cummins#automationconfessions Old way
  149. 149. @holly_cummins#automationconfessions Old way
  150. 150. @holly_cummins#automationconfessions Old way People who break stuff
  151. 151. @holly_cummins#automationconfessions Old way People who break stuff “developers”
  152. 152. @holly_cummins#automationconfessions Old way People who break stuff “developers” People who deal with consequences
  153. 153. @holly_cummins#automationconfessions Old way People who break stuff “developers” People who deal with consequences “ops team”
  154. 154. @holly_cummins#automationconfessions Old way People who break stuff “developers” People who deal with consequences “ops team”
  155. 155. @holly_cummins#automationconfessions Old way People who break stuff “developers” People who deal with consequences “ops team”
  156. 156. @holly_cummins#automationconfessions Old way People who break stuff “developers” People who deal with consequences “ops team”
  157. 157. @holly_cummins#automationconfessions New way People who break stuff “dev People who deal with consequences “ops team”elopers”
  158. 158. @holly_cummins#automationconfessions New way People who break stuff “dev People who deal with consequences “ops team”elopers”
  159. 159. @holly_cummins#automationconfessions New way People who break stuff “dev People who deal with consequences ops team”
  160. 160. @holly_cummins#automationconfessions New way “dev ops team” People who break stuff and deal with consequences
  161. 161. @holly_cummins#automationconfessions New way “dev ops team” People who break stuff and deal with consequences less
  162. 162. @holly_cummins#automationconfessions New way “dev ops team” People who break stuff and deal with consequences less
  163. 163. What is DevOps?
  164. 164. What is DevOps? Automation
  165. 165. What is DevOps? Automation 100%
  166. 166. What DevOps is not
  167. 167. What DevOps is not A job title
  168. 168. What DevOps is not A job title for the IT department
  169. 169. What DevOps is not A job title for the IT department A criteria for chatting up job candidates on a train
  170. 170. What DevOps is not A job title for the IT department The only reason to automate A criteria for chatting up job candidates on a train
  171. 171. @holly_cummins#automationconfessions How to automate
  172. 172. @holly_cummins#automationconfessions How to automate It depends. What are you automating?
  173. 173. What can we automate?
  174. 174. What can we automate? Delivery pipeline
  175. 175. What can we automate? Push Test Live Delivery pipeline Code
  176. 176. What can we automate? Push Test Live Delivery pipeline Code
  177. 177. What can we automate?
  178. 178. What can we automate? Infrastructure
  179. 179. What can we automate? Infrastructure should be code.
  180. 180. What can we automate? Infrastructure should be code.
  181. 181. What can we automate? Machine configuration Infrastructure should be code.
  182. 182. What can we automate? Machine configuration Servers Infrastructure should be code.
  183. 183. What can we automate? Machine configuration Servers Test environments Infrastructure should be code.
  184. 184. What can we automate? Machine configuration Servers Test environments …. Infrastructure should be code.
  185. 185. What can we automate?
  186. 186. What can we automate? Some Tests
  187. 187. What can we automate? Some Tests
  188. 188. What can we automate? Some Tests
  189. 189. What can we automate?
  190. 190. What can we automate? Automatically generated
  191. 191. What can we automate? Automatically generated
  192. 192. What can we automate? Automatically generated
  193. 193. What can we automate? Formatting: the most controversial thing one can automate. Automatically generated
  194. 194. What can we automate?
  195. 195. What can we automate? Copyright statements
  196. 196. What can we automate? Copyright statements Maybe. (The second most controversial thing one can automate.)
  197. 197. @holly_cummins#automationconfessions
  198. 198. @holly_cummins#automationconfessions Tools (an incomplete list)
  199. 199. @holly_cummins#automationconfessions Tools (an incomplete list)
  200. 200. @holly_cummins#automationconfessions Tools (an incomplete list) Shell scripts
  201. 201. @holly_cummins#automationconfessions Tools (an incomplete list) Shell scripts sed
  202. 202. @holly_cummins#automationconfessions Tools (an incomplete list) Shell scripts sed awk
  203. 203. @holly_cummins#automationconfessions Scripting python ruby Tools (still an incomplete list)
  204. 204. @holly_cummins#automationconfessions #!/usr/bin/env node const path = require('path'); const fs = require('fs'); const cp = require('cp'); if (process.argv.length < 3) { console.log("Usage: usefulScript something somethingElse"); process.exit(1); } // Do something useful Tools (still an incomplete list)
  205. 205. @holly_cummins#automationconfessions Tools (still an incomplete list)
  206. 206. @holly_cummins#automationconfessions Tools (still an incomplete list) Jenkins
  207. 207. @holly_cummins#automationconfessions Tools (still an incomplete list) Jenkins
  208. 208. @holly_cummins#automationconfessions Tools (still an incomplete list) Jenkins Travis
  209. 209. @holly_cummins#automationconfessions Tools (still an incomplete list) Jenkins Travis
  210. 210. @holly_cummins#automationconfessions Tools (still an incomplete list) Jenkins Travis Rational Team Concert
  211. 211. @holly_cummins#automationconfessions Tools (still an incomplete list) Jenkins Travis Rational Team Concert Bluemix Build and Deploy
  212. 212. @holly_cummins#automationconfessions Tools (yep, still an incomplete list)
  213. 213. @holly_cummins#automationconfessions Tools (yep, still an incomplete list) Chef
  214. 214. @holly_cummins#automationconfessions Tools (yep, still an incomplete list) Chef Puppet
  215. 215. @holly_cummins#automationconfessions Tools (yep, still an incomplete list) Chef Puppet sprout-wrap
  216. 216. @holly_cummins#automationconfessions Tools (you’ll never guess - still an incomplete list)
  217. 217. @holly_cummins#automationconfessions Tools (you’ll never guess - still an incomplete list)
  218. 218. @holly_cummins#automationconfessions Tools (you’ll never guess - still an incomplete list) Docker, VMWare, and Vagrant images
  219. 219. @holly_cummins#automationconfessions It doesn’t have to be fancy
  220. 220. @holly_cummins#automationconfessions It doesn’t have to be fancy
  221. 221. @holly_cummins#automationconfessions Tools (still an incomplete list)
  222. 222. @holly_cummins#automationconfessions Tools (still an incomplete list) An ant.
  223. 223. @holly_cummins#automationconfessions Tools (still an incomplete list) An ant.Not a reindeer.
  224. 224. @holly_cummins#automationconfessions Tools (still an incomplete list) An ant.Not a reindeer. Ant
  225. 225. @holly_cummins#automationconfessions Tools (still an incomplete list) An ant.Not a reindeer. Ant Maven
  226. 226. @holly_cummins#automationconfessions Tools (still an incomplete list) An ant.Not a reindeer. Ant Maven Gradle
  227. 227. @holly_cummins#automationconfessions Tools (still an incomplete list) An ant.Not a reindeer. Ant Maven Gradle Non-Java build tools I don’t know :)
  228. 228. @holly_cummins#automationconfessions Tools (still an incomplete list)
  229. 229. @holly_cummins#automationconfessions Tools (still an incomplete list) Plugins Tasks
  230. 230. @holly_cummins#automationconfessions Tools (still an incomplete list) Know your build tool. Plugins Tasks
  231. 231. @holly_cummins#automationconfessions Tools (still an incomplete list) Know your build tool. Extend your build tool. Plugins Tasks
  232. 232. @holly_cummins#automationconfessions Tools (still an incomplete list) Know your build tool. Extend your build tool. Plugins Tasks
  233. 233. @holly_cummins#automationconfessions Tools (still an incomplete list)
  234. 234. @holly_cummins#automationconfessions Tools (still an incomplete list) Chat integrations
  235. 235. @holly_cummins#automationconfessions Tools (still an incomplete list)
  236. 236. @holly_cummins#automationconfessions Tools (still an incomplete list) Eclipse plugins
  237. 237. @holly_cummins#automationconfessions Tools (still an incomplete list)
  238. 238. @holly_cummins#automationconfessions Tools (still an incomplete list) Apps
  239. 239. @holly_cummins#automationconfessions Tools (still an incomplete list) Apps (If a UI is involved, proceed with caution)
  240. 240. @holly_cummins#automationconfessions Rolling your own
  241. 241. @holly_cummins#automationconfessions Rolling your own Beware not-invented-here
  242. 242. @holly_cummins#automationconfessions Rolling your own Beware not-invented-here Are you sure no one else has done this?
  243. 243. @holly_cummins#automationconfessions Rolling your own Beware not-invented-here Are you sure no one else has done this? If not, maybe there’s a good reason?
  244. 244. @holly_cummins#automationconfessions Rolling your own Beware not-invented-here Are you sure no one else has done this? If not, maybe there’s a good reason? Beware fun
  245. 245. @holly_cummins#automationconfessions Rolling your own Beware not-invented-here Are you sure no one else has done this? If not, maybe there’s a good reason? Beware fun But do innovate (and have fun)
  246. 246. @holly_cummins#automationconfessions Finally …
  247. 247. @holly_cummins#automationconfessions Finally … Aren’t we lucky to have careers where automation is not just allowed, but encouraged?
  248. 248. @holly_cummins#automationconfessions Finally … Aren’t we lucky to have careers where automation is not just allowed, but encouraged? laziness
  249. 249. @holly_cummins#automationconfessions Finally … Aren’t we lucky to have careers where automation is not just allowed, but encouraged? lazinessfun
  250. 250. @holly_cummins#automationconfessions
  251. 251. @holly_cummins#automationconfessions Any Questions? @holly_cummins www.bluemix.net www.wasdev.net

×