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.
© 2013 IBM Corporation
Holly Cummins
@holly_cummins
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
?
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
I’m from IBM’s Bluemix Garage.
@holly_cummins#automationconfessions
Share yours too.
#automationconfessions
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
My team
@holly_cummins#automationconfessions
…
My team
@holly_cummins#automationconfessions
Can that be
automated?…
My team
@holly_cummins#automationconfessions
Andrew Holly
Last autumn.
@holly_cummins#automationconfessions
Holly, you need to stop
working on automating this
process.
Andrew Holly
Last autumn.
@holly_cummins#automationconfessions
But why?!
Holly, you need to stop
working on automating this
process.
Andrew Holly
La...
@holly_cummins#automationconfessions
But why?!
Holly, you need to stop
working on automating this
process.
The contract
fin...
@holly_cummins#automationconfessions
But why?!
Holly, you need to stop
working on automating this
process.
The contract
fin...
@holly_cummins#automationconfessions
Alasdair
@holly_cummins#automationconfessions
Look at my cool solution!
Alasdair
@holly_cummins#automationconfessions
Look at my cool solution!Holly, I give you all the
worst jobs.
Alasdair
@holly_cummins#automationconfessions
Look at my cool solution!Holly, I give you all the
worst jobs.
?!
Why??
Alasdair
@holly_cummins#automationconfessions
Look at my cool solution!Holly, I give you all the
worst jobs.
I know you’ll automate...
@holly_cummins#automationconfessions
It’s not just me.
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
It’s not just ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
It’s not just ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
[Human history has been slightly simplified. Timeline is not to scale.]
1764
Spinning ...
@holly_cummins#automationconfessions
So are we living the dream?
@holly_cummins#automationconfessions
So are we living the dream?
Well. Not quite.
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
Yes, that’s all the exact same image.
@holly_cummins#automationconfessions
Why automate?
Automate because we are lazy
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
My manager
@holly_cummins#automationconfessions
“Sustainable”
My manager
@holly_cummins#automationconfessions
Automate for sustainability
Automate for efficiency
“Sustainable”
My manager
@holly_cummins#automationconfessions
If it’s boring,
automate it.
@holly_cummins#automationconfessions
Server farms
@holly_cummins#automationconfessions
Server farms
@holly_cummins#automationconfessions
Server farms
Treat your servers like cattle, not like pets.
@holly_cummins#automationconfessions
Scale
The more of you
there are, the more
you need to invest
in automation
@holly_cummins#automationconfessions
Do a task once.
Do it a second time and take notes.
Do it a third time, automate.
@holly_cummins#automationconfessions
Why Automate?
@holly_cummins#automationconfessions
Why Automate?
@holly_cummins#automationconfessions
Automate
because you
care
Why Automate?
@holly_cummins#automationconfessions
If you care about
it, automate it.
@holly_cummins#automationconfessions
Automate
because you
care that it
happens at
all
Why Automate?
@holly_cummins#automationconfessions
Automate
because you
care that it
happens at
all
Why Automate?
@holly_cummins#automationconfessions
Marvin
@holly_cummins#automationconfessions
Marvin
Build breaks (including
test failures) should be
reverted from the stream.
@holly_cummins#automationconfessions
Marvin
Build breaks (including
test failures) should be
reverted from the stream.
No ...
@holly_cummins#automationconfessions
Marvin
Build breaks (including
test failures) should be
reverted from the stream.
No ...
@holly_cummins#automationconfessions
Marvin
Build breaks (including
test failures) should be
reverted from the stream.
No ...
@holly_cummins#automationconfessions
Marvin
Build breaks (including
test failures) should be
reverted from the stream.
No ...
@holly_cummins#automationconfessions
End of iteration demos
@holly_cummins#automationconfessions
End of iteration demos
Automatic generation
on story close
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 t...
Automating to improve
the outcome rather
than to save effort.
• Write the Rational Team Concert plugin
(one-off)
• Close t...
Automating to improve
the outcome rather
than to save effort.
• Write the Rational Team Concert plugin
(one-off)
• Close t...
@holly_cummins#automationconfessions
Automate
because you
care that it’s
done right
Why Automate?
@holly_cummins#automationconfessions
Automate
because you
care that it’s
done right
Why Automate?
@holly_cummins#automationconfessions
Linting
@holly_cummins#automationconfessions
A computer can notice problems that a human
can’t (like misspelled variable names)
Li...
@holly_cummins#automationconfessions
A computer can notice problems that a human
can’t (like misspelled variable names)
Li...
@holly_cummins#automationconfessions
Deployment
@holly_cummins#automationconfessions
Deployment
@holly_cummins#automationconfessions
Deployment
Should be easy, right?
@holly_cummins#automationconfessions
Deployment
Should be easy, right?
Always one step that
gets forgotten …
@holly_cummins#automationconfessions
Swapping a Watson Service
@holly_cummins#automationconfessions
Swapping a Watson Service
{
"name": "nlc-classifiers",
"credentials": {
"classifiers"...
@holly_cummins#automationconfessions
Swapping a Watson Service
{
"name": "nlc-classifiers",
"credentials": {
"classifiers"...
Why automate?
Why automate?
Automate
because
it’s fun
Why automate?
Why not
automate?
Ross
Why not
automate?
I get so mad at
how much time I
could save if I had
more time.
Ross
Why not
automate?
I get so mad at
how much time I
could save if I had
more time.
Ross
Ross’s bootstraps
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 bootst...
@holly_cummins#automationconfessions
Fixing a classpath
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
Fixing 26 classpaths
@holly_cummins#automationconfessions
Fixing 26 classpaths
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
find something | exec something {} + ; ?!
@holly_cummins#automationconfessions
find something | exec something {} + ; ?!
for … then sed something; mv $i.bak $i; …
@holly_cummins#automationconfessions
find something | exec something {} + ; ?!
for … then sed something; mv $i.bak $i; …
s...
@holly_cummins#automationconfessions
find something | exec something {} + ; ?!
for … then sed something; mv $i.bak $i; …
s...
@holly_cummins#automationconfessions
find something | exec something {} + ; ?!
for … then sed something; mv $i.bak $i; …
s...
@holly_cummins#automationconfessions
Me Kate, our new graduate
@holly_cummins#automationconfessions
Kate, could you please fix
these classpaths?
Me Kate, our new graduate
@holly_cummins#automationconfessions
Sure, Holly!
Kate, could you please fix
these classpaths?
Me Kate, our new graduate
@holly_cummins#automationconfessions
Epilogue
perl -pi -w -e 's/SEARCH_FOR/REPLACE_WITH/g;' *.txt
thanks (for everything!), xkcd.com
Why not
automate
The Dream
Super-
helpful
automation
automaton
The Reality
The Reality
The Reality
Think about
support.
The Reality
Think about
support.
Think about
robustness.
@holly_cummins#automationconfessions
Rosie
@holly_cummins#automationconfessions
Rosie
ate the
world.
@holly_cummins#automationconfessions
Rosie
ate the
world.
(Well, my corner of it.)
@holly_cummins#automationconfessions
Give hefty automations
adorable names
@holly_cummins#automationconfessions
Questions to ask before
automating
@holly_cummins#automationconfessions
Questions to ask before
automatingWho can
maintain this
automation?
@holly_cummins#automationconfessions
Questions to ask before
automatingWho can
maintain this
automation?
Who can
manage th...
@holly_cummins#automationconfessions
Questions to ask before
automatingWho can
maintain this
automation?
Who can
manage th...
@holly_cummins#automationconfessions
Questions to ask before
automatingWho can
maintain this
automation?
Who can
manage th...
@holly_cummins#automationconfessions
Checkpoint during
automation
@holly_cummins#automationconfessions
Checkpoint during
automationHow do I
define
success?
@holly_cummins#automationconfessions
Checkpoint during
automationHow do I
define
success?
Have I got
completion
criteria?
@holly_cummins#automationconfessions
Checkpoint during
automationHow do I
define
success?
Have I got
completion
criteria?
A...
@holly_cummins#automationconfessions
Checkpoint during
automationHow do I
define
success?
Have I got
completion
criteria?
A...
@holly_cummins#automationconfessions
Don’t Lose Your
Perspective.
@holly_cummins#automationconfessions
Remember the bus
@holly_cummins#automationconfessions
Remember the bus
A clever automation isn’t so clever if
only one person understands i...
@holly_cummins#automationconfessions
Remember the bus
A clever automation isn’t so clever if
only one person understands i...
@holly_cummins#automationconfessions
Remember the bus
A clever automation isn’t so clever if
only one person understands i...
@holly_cummins#automationconfessions
Why not automate
@holly_cummins#automationconfessions
Why not automate
Should I automate this
process…
@holly_cummins#automationconfessions
Why not automate
Should I automate this
process…
… or should I change it?
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 sp...
@holly_cummins#automationconfessions
Defect screening
@holly_cummins#automationconfessions
Ask questions before
automatically automating
things which don’t
actually need to be ...
Why not automate
Why not automate
Why not automate
Computers
don’t
always get
it right.
https://www.youtube.com/watch?v=hulnz902gWo
@holly_cummins#automationconfessions
Build monitoring
DevOps
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
What is DevOps?
@holly_cummins#automationconfessions
Old way
@holly_cummins#automationconfessions
Old way
@holly_cummins#automationconfessions
Old way
@holly_cummins#automationconfessions
Old way
@holly_cummins#automationconfessions
Old way
People who break
stuff
@holly_cummins#automationconfessions
Old way
People who break
stuff
“developers”
@holly_cummins#automationconfessions
Old way
People who break
stuff
“developers”
People who deal
with
consequences
@holly_cummins#automationconfessions
Old way
People who break
stuff
“developers”
People who deal
with
consequences
“ops te...
@holly_cummins#automationconfessions
Old way
People who break
stuff
“developers”
People who deal
with
consequences
“ops te...
@holly_cummins#automationconfessions
Old way
People who break
stuff
“developers”
People who deal
with
consequences
“ops te...
@holly_cummins#automationconfessions
Old way
People who break
stuff
“developers”
People who deal
with
consequences
“ops te...
@holly_cummins#automationconfessions
New way
People who break
stuff
“dev
People who deal
with
consequences
“ops team”elope...
@holly_cummins#automationconfessions
New way
People who break
stuff
“dev
People who deal
with
consequences
“ops team”elope...
@holly_cummins#automationconfessions
New way
People who break
stuff
“dev
People who deal
with
consequences
ops team”
@holly_cummins#automationconfessions
New way
“dev ops team”
People who break
stuff and deal with
consequences
@holly_cummins#automationconfessions
New way
“dev ops team”
People who break
stuff and deal with
consequences
less
@holly_cummins#automationconfessions
New way
“dev ops team”
People who break
stuff and deal with
consequences
less
What is DevOps?
What is DevOps?
Automation
What is DevOps?
Automation
100%
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
The only reason to automate
A criteria for chatting up job candidates...
@holly_cummins#automationconfessions
How to automate
@holly_cummins#automationconfessions
How to automate
It depends.
What are you
automating?
What can we automate?
What can we automate?
Delivery pipeline
What can we automate?
Push Test Live
Delivery pipeline
Code
What can we automate?
Push Test Live
Delivery pipeline
Code
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?
Machine configuration
Infrastructure should be code.
What can we automate?
Machine configuration
Servers
Infrastructure should be code.
What can we automate?
Machine configuration
Servers
Test environments
Infrastructure should be code.
What can we automate?
Machine configuration
Servers
Test environments
….
Infrastructure should be code.
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?
Formatting: the most controversial
thing one can automate.
Automatically
generated
What can we automate?
What can we automate?
Copyright statements
What can we automate?
Copyright statements
Maybe.
(The second most controversial thing one can automate.)
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
Tools
(an incomplete list)
@holly_cummins#automationconfessions
Tools
(an incomplete list)
@holly_cummins#automationconfessions
Tools
(an incomplete list)
Shell scripts
@holly_cummins#automationconfessions
Tools
(an incomplete list)
Shell scripts
sed
@holly_cummins#automationconfessions
Tools
(an incomplete list)
Shell scripts
sed
awk
@holly_cummins#automationconfessions
Scripting
python
ruby
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
#!/usr/bin/env node
const path = require('path');
const fs = require('fs');
const cp ...
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Jenkins
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Jenkins
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Jenkins
Travis
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Jenkins
Travis
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Jenkins
Travis
Rational Team Concert
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Jenkins
Travis
Rational Team Concert
Bluemix Build a...
@holly_cummins#automationconfessions
Tools
(yep, still an incomplete list)
@holly_cummins#automationconfessions
Tools
(yep, still an incomplete list)
Chef
@holly_cummins#automationconfessions
Tools
(yep, still an incomplete list)
Chef
Puppet
@holly_cummins#automationconfessions
Tools
(yep, still an incomplete list)
Chef
Puppet
sprout-wrap
@holly_cummins#automationconfessions
Tools
(you’ll never guess - still an incomplete list)
@holly_cummins#automationconfessions
Tools
(you’ll never guess - still an incomplete list)
@holly_cummins#automationconfessions
Tools
(you’ll never guess - still an incomplete list)
Docker, VMWare, and Vagrant ima...
@holly_cummins#automationconfessions
It doesn’t have to be fancy
@holly_cummins#automationconfessions
It doesn’t have to be fancy
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
An ant.
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
An ant.Not a reindeer.
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
An ant.Not a reindeer.
Ant
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
An ant.Not a reindeer.
Ant
Maven
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
An ant.Not a reindeer.
Ant
Maven
Gradle
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
An ant.Not a reindeer.
Ant
Maven
Gradle
Non-Java bui...
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Plugins
Tasks
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Know your build tool.
Plugins
Tasks
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Know your build tool.
Extend your build tool.
Plugin...
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Know your build tool.
Extend your build tool.
Plugin...
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Chat
integrations
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Eclipse plugins
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Apps
@holly_cummins#automationconfessions
Tools
(still an incomplete list)
Apps
(If a UI is involved, proceed with caution)
@holly_cummins#automationconfessions
Rolling your own
@holly_cummins#automationconfessions
Rolling your own
Beware not-invented-here
@holly_cummins#automationconfessions
Rolling your own
Beware not-invented-here
Are you sure no one else has done this?
@holly_cummins#automationconfessions
Rolling your own
Beware not-invented-here
Are you sure no one else has done this?
If ...
@holly_cummins#automationconfessions
Rolling your own
Beware not-invented-here
Are you sure no one else has done this?
If ...
@holly_cummins#automationconfessions
Rolling your own
Beware not-invented-here
Are you sure no one else has done this?
If ...
@holly_cummins#automationconfessions
Finally …
@holly_cummins#automationconfessions
Finally …
Aren’t we lucky to
have careers where
automation is not just
allowed, but
e...
@holly_cummins#automationconfessions
Finally …
Aren’t we lucky to
have careers where
automation is not just
allowed, but
e...
@holly_cummins#automationconfessions
Finally …
Aren’t we lucky to
have careers where
automation is not just
allowed, but
e...
@holly_cummins#automationconfessions
@holly_cummins#automationconfessions
Any
Questions?
@holly_cummins
www.bluemix.net
www.wasdev.net
Confessions of an Automation Addict
Confessions of an Automation Addict
Confessions of an Automation Addict
Confessions of an Automation Addict
Confessions of an Automation Addict
Confessions of an Automation Addict
Confessions of an Automation Addict
Upcoming SlideShare
Loading in …5
×

Confessions of an Automation Addict

2,226 views

Published on

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.

Published in: Software

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

×