confessions of an automation addict

176
© 2013 IBM Corporation Holly Cummins @holly_cummins

Upload: holly-cummins

Post on 20-Aug-2015

416 views

Category:

Software


0 download

TRANSCRIPT

© 2013 IBM Corporation

Holly Cummins @holly_cummins

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

?

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

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

Alasdair

@holly_cummins#automationconfessions

Alasdair

Look at my cool solution!

@holly_cummins#automationconfessions

Holly, I give you all the worst jobs.

Alasdair

Look at my cool solution!

@holly_cummins#automationconfessions

Holly, I give you all the worst jobs. ?! Why??

Alasdair

Look at my cool solution!

@holly_cummins#automationconfessions

Holly, I give you all the worst jobs.

I know you’ll automate them.

?! Why??

Alasdair

Look at my cool solution!

@holly_cummins#automationconfessions

It’s not just me.

@holly_cummins#automationconfessions

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

Washing Machine 1858

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

Washing Machine 1858

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

Washing Machine 1858

1941 Electromechanical Computer

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

Washing Machine 1858

1941 Electromechanical Computer

It’s not just me.

@holly_cummins#automationconfessions

1764 Spinning Jenny

Washing Machine 1858

1941 Electromechanical Computer

Chef 2012

It’s not just me.

@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.

@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.

More and more is automated.

@holly_cummins#automationconfessions

So are we living the dream?

@holly_cummins#automationconfessions

So are we living the dream?

Well. Not quite.

@holly_cummins#automationconfessions

Fixing a classpath

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

Fixing 26 classpaths

@holly_cummins#automationconfessions

Fixing 26 classpaths

@holly_cummins#automationconfessions

Why automate?

Automate because we are lazy

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

“Sustainable”

@holly_cummins#automationconfessions

Automate for sustainability!Automate for efficiency

“Sustainable”

@holly_cummins#automationconfessions

!Do a task once.!

Do it a second time and take notes.!Do it a third time, automate.!

@holly_cummins#automationconfessions

Scale

The more of you there are, the more it is worth investing in automation

@holly_cummins#automationconfessions

Treat your servers like cattle, not like pets.

@holly_cummins#automationconfessions

Treat your servers like cattle, not like pets.

@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

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 one wanted to be the one who did it

@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

@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!

@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!

@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 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.

@holly_cummins#automationconfessions

Why Automate?

@holly_cummins#automationconfessions

Automate because you care that it’s done right

Why Automate?

@holly_cummins#automationconfessions

Linting

@holly_cummins#automationconfessions

Linting

• A computer can notice problems that a human can’t (like misspelled variable names)

@holly_cummins#automationconfessions

Linting

• A computer can notice problems that a human can’t (like misspelled variable names)

• We love findbugs

@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 …

Why automate?

Why automate?

Why automate?Automate

because it’s fun

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 bootstraps

thanks (for everything!), xkcd.com

Why not automate

The Dream

The DreamSuper-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

Questions to ask before automating

@holly_cummins#automationconfessions

Questions to ask before automating

• Who can maintain this automation?

@holly_cummins#automationconfessions

Questions to ask before automating

• Who can maintain this automation?

• Who can manage this automation?

@holly_cummins#automationconfessions

Questions to ask before automating

• Who can maintain this automation?

• Who can manage this automation?

• Will it be robust? What if things change?

@holly_cummins#automationconfessions

Questions to ask before automating

• Who can maintain this automation?

• Who can manage this automation?

• Will it be robust? What if things change?

• How much will it cost?

@holly_cummins#automationconfessions

Checkpoint during automation

@holly_cummins#automationconfessions

Checkpoint during automation

• How do I define success?

@holly_cummins#automationconfessions

Checkpoint during automation

• How do I define success?

• Have I got completion criteria?

@holly_cummins#automationconfessions

Checkpoint during automation

• How do I define success?

• Have I got completion criteria?

• Is this still worth it?

@holly_cummins#automationconfessions

Checkpoint during automation

• How do I define success?

• Have I got completion criteria?

• Is this still worth it?

• Am I still saving time?

@holly_cummins#automationconfessions

Don’t Go Insane.

@holly_cummins#automationconfessions

Remember the bus

@holly_cummins#automationconfessions

Remember the busA clever automation isn’t so clever if only

one person understands it…

@holly_cummins#automationconfessions

Remember the busA clever automation isn’t so clever if only

one person understands it…… and they get hit by a bus.

@holly_cummins#automationconfessions

Give hefty automations adorable names

@holly_cummins#automationconfessions

Why not automate

@holly_cummins#automationconfessions

Why not automateShould I automate this process…

@holly_cummins#automationconfessions

Why not automateShould 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

• Automation allows you to do dumb things at a greater speed

@holly_cummins#automationconfessions

Defect screening

@holly_cummins#automationconfessions

Ask questions before automatically automating

things which don’t actually need to be done.

Why not automate

Why not automate

Why not automate

Computers don’t always get it right.

@holly_cummins#automationconfessions

Build monitoring

@holly_cummins#automationconfessions

How to automate

@holly_cummins#automationconfessions

How to automateIt depends.

What are you automating?

What can we automate?

What can we automate?

• Machine configuration

What can we automate?

• Machine configuration

• Deployments

What can we automate?

• Machine configuration

• Deployments

• Test environments

What can we automate?

• Machine configuration

• Deployments

• Test environments

• ….

What can we automate?

What can we automate?

What can we automate?

What can we automate?

What can we automate?

What can we automate?

What can we automate?

Formatting: the most controversial thing one can automate.

What can we automate?

What can we automate?

Copyright statements

What can we automate?

Copyright statements

Maybe.

@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!(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)

• Jenkins or Rational Team Concert builds

@holly_cummins#automationconfessions

Tools!(still an incomplete list)

• Jenkins or Rational Team Concert builds

• Chef or Puppet

@holly_cummins#automationconfessions

Tools!(still an incomplete list)

• Jenkins or Rational Team Concert builds

• Chef or Puppet

• Docker, VMWare, and Vagrant images

@holly_cummins#automationconfessions

• Scripting

• python

• ruby

@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.

@holly_cummins#automationconfessions

Tools!(still an incomplete list) An ant.

Not a reindeer.

Maven

@holly_cummins#automationconfessions

Tools!(still an incomplete list) An ant.

Not a reindeer.

Maven

Gradle

@holly_cummins#automationconfessions

Tools!(still an incomplete list) An ant.

Not a reindeer.

MavenGradle

@holly_cummins#automationconfessions

Tools!(still an incomplete list) An ant.

Not a reindeer.

MavenGradle

@holly_cummins#automationconfessions

Tools!(still an incomplete list) An ant.

Not a reindeer.

MavenGradle

@holly_cummins#automationconfessions

Tools!(still an incomplete list) An ant.

Not a reindeer.

MavenGradle

Plugins Tasks

@holly_cummins#automationconfessions

Tools!(still an incomplete list)

@holly_cummins#automationconfessions

Tools!(still an incomplete list)

• Web applications

@holly_cummins#automationconfessions

Tools!(still an incomplete list)

• Web applications

• If a UI is involved, proceed with caution

@holly_cummins#automationconfessions

It doesn’t have to be fancy

@holly_cummins#automationconfessions

It doesn’t have to be fancy

@holly_cummins#automationconfessions

Rolling your own

@holly_cummins#automationconfessions

Rolling your own

@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 not, maybe there’s a good reason?

@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

@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)

@holly_cummins#automationconfessions

Finally …

@holly_cummins#automationconfessions

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

@holly_cummins#automationconfessions

@holly_cummins#automationconfessions

Any Questions?!

!

@holly_cummins