Holly Cummins @holly_cummins © 2013 IBM Corporation

#automationconfessions @holly_cummins

? #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

#automationconfessions @holly_cummins

Share yours too. #automationconfessions #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

As developers, we have the power to automate. #automationconfessions @holly_cummins

As developers, we have the power to automate. And that’s cool. #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

My team #automationconfessions @holly_cummins

… My team #automationconfessions @holly_cummins

Can that be automated? … My team #automationconfessions @holly_cummins

Alasdair #automationconfessions @holly_cummins

Look at my cool solution! Alasdair #automationconfessions @holly_cummins

Holly, I give you all the worst jobs. Look at my cool solution! Alasdair #automationconfessions @holly_cummins

Holly, I give you all the worst jobs. Look at my cool solution! ?! Why?? Alasdair #automationconfessions @holly_cummins

Holly, I give you all the worst jobs. I know you’ll automate them. Look at my cool solution! ?! Why?? Alasdair #automationconfessions @holly_cummins

It’s not just me. #automationconfessions @holly_cummins

It’s not just me. [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. 1764 Spinning Jenny [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. 1764 Spinning Jenny [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny 1941 Electromechanical Computer [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny 1941 Electromechanical Computer [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny Chef 2012 1941 Electromechanical Computer [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny Chef 2012 1941 Electromechanical Computer [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. Washing Machine 1858 1764 Spinning Jenny Chef 2012 Docker 2014 1941 Electromechanical Computer [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

It’s not just me. More and more is automated. Washing Machine 1858 1764 Spinning Jenny Chef 2012 Docker 2014 1941 Electromechanical Computer [Human history has been slightly simplified. Timeline is not to scale.] #automationconfessions @holly_cummins

So are we living the dream? #automationconfessions @holly_cummins

So are we living the dream? Well. Not quite. #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

Yes, that’s all the exact same image. #automationconfessions @holly_cummins

Why automate? Automate because we are lazy #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

#automationconfessions @holly_cummins

My manager #automationconfessions @holly_cummins

“Sustainable” My manager #automationconfessions @holly_cummins

“Sustainable” Automate for sustainability Automate for efficiency #automationconfessions My manager @holly_cummins

If it’s boring, automate it. #automationconfessions @holly_cummins

Server farms #automationconfessions @holly_cummins

Server farms #automationconfessions @holly_cummins

Server farms Treat your servers like cattle, not like pets. #automationconfessions @holly_cummins

Scale The more of you there are, the more you need to invest in automation #automationconfessions @holly_cummins

Do a task once. Do it a second time and take notes. Do it a third time, automate. #automationconfessions @holly_cummins

Why Automate? #automationconfessions @holly_cummins

Why Automate? #automationconfessions @holly_cummins

Why Automate? Automate because you care #automationconfessions @holly_cummins

If you care about it, automate it. #automationconfessions @holly_cummins

Why Automate? Automate because you care that it happens at all #automationconfessions @holly_cummins

Why Automate? Automate because you care that it happens at all #automationconfessions @holly_cummins

Marvin #automationconfessions @holly_cummins

Marvin Build breaks (including test failures) should be reverted from the stream #automationconfessions @holly_cummins

Marvin Build breaks (including test failures) should be reverted from the stream No one wanted to be the one who did it #automationconfessions @holly_cummins

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 #automationconfessions @holly_cummins

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! #automationconfessions @holly_cummins

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! #automationconfessions @holly_cummins

End of iteration demos #automationconfessions @holly_cummins

End of iteration demos Automatic generation on story close #automationconfessions @holly_cummins

Automating to improve the outcome rather than to save effort:

Automating to improve the outcome rather than to save effort:

Automating to improve the outcome rather than to save effort: Write the Rational Team Concert plugin (one-off)

Automating to improve the outcome rather than to save effort: Write the Rational Team Concert plugin (one-off) Close the demo task (every story)

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)

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.

Why Automate? Automate because you care that it’s done right #automationconfessions @holly_cummins

Why Automate? Automate because you care that it’s done right #automationconfessions @holly_cummins

Linting #automationconfessions @holly_cummins

Linting A computer can notice problems that a human can’t (like misspelled variable names) #automationconfessions @holly_cummins

Linting We Findbugs A computer can notice problems that a human can’t (like misspelled variable names) #automationconfessions @holly_cummins

Deployment #automationconfessions @holly_cummins

Deployment #automationconfessions @holly_cummins

Deployment Should be easy, right? #automationconfessions @holly_cummins

Deployment Should be easy, right? Always one step that gets forgotten … #automationconfessions @holly_cummins

Swapping a Watson Service #automationconfessions @holly_cummins

Swapping a Watson Service Four weeks ago: 3 configuration errors in one week. Oops. #automationconfessions @holly_cummins

Swapping a Watson Service Four weeks ago: 3 configuration errors in one week. Oops. { “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} ] }} #automationconfessions @holly_cummins

Why automate?

Why automate?

Why automate? Automate because it’s fun

Why not automate thanks (for everything!), xkcd.com

Why not automate? Ross

t a d a m o Why not s t I ge I e m i t h c u m w ho automate? d a h I f i e v a s d l cou . e m i t e mor Ross

t a d a m o Why not s t I ge I e m i t h c u m w ho automate? d a h I f i e v a s d l cou . e m i t e mor Ross’s bootstraps Ross

t a d a m o Why not s t I ge I e m i t h c u m w ho automate? d a h I f i e v a s d l cou . e m i t e mor The automation paradox Ross’s bootstraps Ross

Fixing a classpath #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

find something | exec something {} + ; ?! #automationconfessions @holly_cummins

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? #automationconfessions @holly_cummins

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? sedder.sh and dosed.sh and … ? #automationconfessions @holly_cummins

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? sedder.sh and dosed.sh and … ? perl … um .. something? #automationconfessions @holly_cummins

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? sedder.sh and dosed.sh and … ? perl … um .. something? #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

Fixing 26 classpaths #automationconfessions @holly_cummins

Fixing 26 classpaths #automationconfessions @holly_cummins

Epilogue perl -pi -w -e ‘s/SEARCH_FOR/REPLACE_WITH/g;’ *.txt #automationconfessions @holly_cummins

Andrew #automationconfessions 14:29, November 9th. Holly @holly_cummins

Holly, you need to stop working on automating this process. Andrew #automationconfessions 14:29, November 9th. Holly @holly_cummins

Holly, you need to stop working on automating this process. Andrew #automationconfessions 14:29, November 9th. But why?! Holly @holly_cummins

Holly, you need to stop working on automating this process. But why?! The contract finished last week. We’re not working for that client anymore. Andrew #automationconfessions 14:29, November 9th. Holly @holly_cummins

Holly, you need to stop working on automating this process. The contract finished last week. We’re not working for that client anymore. Andrew #automationconfessions But why?! But … there’s stuff still to automate. 14:29, November 9th. Holly @holly_cummins

The Dream Superhelpful automation automaton

The Reality

The Reality

The Reality Think about support.

The Reality Think about support.

The Reality Think about support. Think about robustness.

Rosie #automationconfessions @holly_cummins

Rosie ate the world. #automationconfessions @holly_cummins

Rosie ate the world. (Well, my corner of it.) #automationconfessions @holly_cummins

Give hefty automations adorable names #automationconfessions @holly_cummins

Questions to ask before automating #automationconfessions @holly_cummins

Questions to ask before n a c Who s i h automating t n i a t n i a m ? n o i t a m o t u a #automationconfessions @holly_cummins

Questions to ask before n Who can a c Who s i h automating t manage this n i a t n i ma ? n o i t a m o t u a #automationconfessions automation? @holly_cummins

Questions to ask before n Who can a c Who s i h automating t manage this n i a t n i ma ? n o i t a m o t u a automation? How much will it cost? #automationconfessions @holly_cummins

Questions to ask before n Who can a c Who s i h automating t manage this n i a t n i ma ? n o i t a m o t u a How much will it cost? #automationconfessions automation? Will it be robust? What if things change? @holly_cummins

Checkpoint during automation #automationconfessions @holly_cummins

I o Checkpoint during d w Ho e n fi de automation ? s s e c c su #automationconfessions @holly_cummins

I o Checkpoint during d Have I got w o H completion e n fi de automation ? s s e c c su #automationconfessions criteria? @holly_cummins

I o Checkpoint during d Have I got w o H completion e n fi de automation ? s s e c c su criteria? Am I still saving time? #automationconfessions @holly_cummins

I o Checkpoint during d Have I got w o H completion e n fi de automation ? s s e c c su Am I still saving time? #automationconfessions criteria? Is this still worth it? @holly_cummins

Don’t Lose Your Perspective. #automationconfessions @holly_cummins

Remember the bus #automationconfessions @holly_cummins

Remember the bus A clever automation isn’t so clever if only one person understands it… #automationconfessions @holly_cummins

Remember the bus A clever automation isn’t so clever if only one person understands it… #automationconfessions @holly_cummins

Remember the bus A clever automation isn’t so clever if only one person understands it… … and they get hit by a bus. #automationconfessions @holly_cummins

Why not automate #automationconfessions @holly_cummins

Why not automate Should I automate this process… #automationconfessions @holly_cummins

Why not automate Should I automate this process… … or should I change it? #automationconfessions @holly_cummins

The dumbness problem

The dumbness problem It’s dumb to automate dumb things …

The dumbness problem It’s dumb to automate dumb things … … and …

The dumbness problem It’s dumb to automate dumb things … … and … … Automation allows you to do dumb things at a greater speed

Defect screening #automationconfessions @holly_cummins

Ask questions before automatically automating things which don’t actually need to be done. #automationconfessions @holly_cummins

Why not automate

Why not automate

Why not automate Computers don’t always get it right.

https://www.youtube.com/watch?v=hulnz902gWo

Build monitoring #automationconfessions @holly_cummins

DevOps

What is DevOps?

Old way #automationconfessions @holly_cummins

Old way #automationconfessions @holly_cummins

Old way #automationconfessions @holly_cummins

Old way #automationconfessions @holly_cummins

Old way People who break stuff #automationconfessions @holly_cummins

Old way People who break stuff “developers” #automationconfessions @holly_cummins

Old way People who break stuff People who deal with consequences “developers” #automationconfessions @holly_cummins

Old way People who break stuff People who deal with consequences “developers” “ops team” #automationconfessions @holly_cummins

Old way People who break stuff People who deal with consequences “developers” “ops team” #automationconfessions @holly_cummins

Old way People who break stuff People who deal with consequences “developers” “ops team” #automationconfessions @holly_cummins

Old way People who break stuff People who deal with consequences “developers” “ops team” #automationconfessions @holly_cummins

New way People who break stuff People who deal with consequences “dev elopers” “ops team” #automationconfessions @holly_cummins

New way People who break stuff People who deal with consequences “dev elopers” “ops team” #automationconfessions @holly_cummins

New way People who break stuff People who deal with consequences “dev ops team” #automationconfessions @holly_cummins

New way People who break stuff and deal with consequences “dev ops team” #automationconfessions @holly_cummins

New way People who break stuff less and deal with consequences “dev ops team” #automationconfessions @holly_cummins

New way People who break stuff less and deal with consequences “dev ops team” #automationconfessions @holly_cummins

What is DevOps?

What is DevOps? Automation

What is DevOps? 100% Automation

What DevOps is not

What DevOps is not A job title

What DevOps is not A job title for the IT department

What DevOps is not A job title for the IT department A criteria for chatting up job candidates on a train

What DevOps is not A job title for the IT department A criteria for chatting up job candidates on a train The only reason to automate

How to automate #automationconfessions @holly_cummins

How to automate It depends. What are you automating? #automationconfessions @holly_cummins

What can we automate?

What can we automate? Delivery pipeline

What can we automate? Code Push Test Delivery pipeline Live

What can we automate? Code Push Test Delivery pipeline Live

What can we automate?

What can we automate? Infrastructure

What can we automate? Infrastructure should be code.

What can we automate? Infrastructure should be code.

What can we automate? Infrastructure should be code. Machine configuration

What can we automate? Infrastructure should be code. Machine configuration Servers

What can we automate? Infrastructure should be code. Machine configuration Servers Test environments

What can we automate? Infrastructure should be code. Machine configuration Servers Test environments ….

What can we automate?

What can we automate? Some Tests

What can we automate? Some Tests

What can we automate? Some Tests

What can we automate?

What can we automate? Automatically generated

What can we automate? Automatically generated

What can we automate? Automatically generated

What can we automate? Automatically generated Formatting: the most controversial thing one can automate.

What can we automate?

What can we automate? Copyright statements

What can we automate? Maybe. (The second most controversial thing one can automate.) Copyright statements

#automationconfessions @holly_cummins

Tools (an incomplete list) #automationconfessions @holly_cummins

Tools (an incomplete list) #automationconfessions @holly_cummins

Tools (an incomplete list) Shell scripts #automationconfessions @holly_cummins

Tools (an incomplete list) Shell scripts sed #automationconfessions @holly_cummins

Tools (an incomplete list) Shell scripts sed awk #automationconfessions @holly_cummins

Tools (still an incomplete list) Scripting python ruby #automationconfessions @holly_cummins

Tools (still an incomplete list) #!/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 #automationconfessions @holly_cummins

Tools (still an incomplete list) #automationconfessions @holly_cummins

Tools (still an incomplete list) Jenkins #automationconfessions @holly_cummins

Tools (still an incomplete list) Jenkins #automationconfessions @holly_cummins

Tools (still an incomplete list) Jenkins Concourse #automationconfessions @holly_cummins

Tools (still an incomplete list) Jenkins Concourse #automationconfessions @holly_cummins

Tools (still an incomplete list) Jenkins Concourse Rational Team Concert #automationconfessions @holly_cummins

Tools (still an incomplete list) Jenkins Concourse Rational Team Concert Bluemix Build and Deploy #automationconfessions @holly_cummins

Tools (yep, still an incomplete list) #automationconfessions @holly_cummins

Tools (yep, still an incomplete list) Chef #automationconfessions @holly_cummins

Tools (yep, still an incomplete list) Chef Puppet #automationconfessions @holly_cummins

Tools (yep, still an incomplete list) Chef Puppet sprout-wrap #automationconfessions @holly_cummins

Tools (you’ll never guess - still an incomplete list) #automationconfessions @holly_cummins

Tools (you’ll never guess - still an incomplete list) #automationconfessions @holly_cummins

Tools (you’ll never guess - still an incomplete list) Docker, VMWare, and Vagrant images #automationconfessions @holly_cummins

It doesn’t have to be fancy #automationconfessions @holly_cummins

It doesn’t have to be fancy #automationconfessions @holly_cummins

Tools (still an incomplete list) #automationconfessions @holly_cummins

Tools (still an incomplete list) An ant. #automationconfessions @holly_cummins

Tools (still an incomplete list) An ant. Not a reindeer. #automationconfessions @holly_cummins

Tools Ant (still an incomplete list) An ant. Not a reindeer. #automationconfessions @holly_cummins

Tools Ant Maven (still an incomplete list) An ant. Not a reindeer. #automationconfessions @holly_cummins

Tools Ant Maven Gradle (still an incomplete list) An ant. Not a reindeer. #automationconfessions @holly_cummins

Tools Ant Maven Gradle Non-Java build tools I don’t know :) #automationconfessions (still an incomplete list) An ant. Not a reindeer. @holly_cummins

Tools (still an incomplete list) #automationconfessions @holly_cummins

Tools (still an incomplete list) Plugins Tasks #automationconfessions @holly_cummins

Tools (still an incomplete list) Plugins Tasks Know your build tool. #automationconfessions @holly_cummins

Tools (still an incomplete list) Plugins Tasks Know your build tool. Extend your build tool. #automationconfessions @holly_cummins

Tools (still an incomplete list) Plugins Tasks Know your build tool. Extend your build tool. #automationconfessions @holly_cummins

Tools (still an incomplete list) #automationconfessions @holly_cummins

Tools (still an incomplete list) Chat integrations #automationconfessions @holly_cummins

Tools (still an incomplete list) #automationconfessions @holly_cummins

Tools (still an incomplete list) Eclipse plugins #automationconfessions @holly_cummins

Tools (still an incomplete list) #automationconfessions @holly_cummins

Tools (still an incomplete list) Web applications #automationconfessions @holly_cummins

Tools (still an incomplete list) Web applications (If a UI is involved, proceed with caution) #automationconfessions @holly_cummins

Rolling your own #automationconfessions @holly_cummins

Rolling your own Beware not-invented-here #automationconfessions @holly_cummins

Rolling your own Beware not-invented-here Are you sure no one else has done this? #automationconfessions @holly_cummins

Rolling your own Beware not-invented-here Are you sure no one else has done this? If not, maybe there’s a good reason? #automationconfessions @holly_cummins

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 #automationconfessions @holly_cummins

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) #automationconfessions @holly_cummins

Finally … #automationconfessions @holly_cummins

Finally … Aren’t we lucky to have careers where automation is not just allowed, but encouraged? #automationconfessions @holly_cummins

Finally … Aren’t we lucky to have careers where automation laziness is not just allowed, but encouraged? #automationconfessions @holly_cummins

Finally … Aren’t we lucky to have careers where automation laziness fun is not just allowed, but encouraged? #automationconfessions @holly_cummins

Why are we here? #automationconfessions @holly_cummins

Why are we here? To make things better. #automationconfessions @holly_cummins

Automate stuff … #automationconfessions @holly_cummins

Automate stuff … … so we can use our power for what really matters. #automationconfessions @holly_cummins

… and then … #automationconfessions @holly_cummins

… and then … … take the love and good luck in our jobs that we have and share it. #automationconfessions @holly_cummins

#automationconfessions @holly_cummins

Any Questions? @holly_cummins www.bluemix.net www.wasdev.net #automationconfessions @holly_cummins