Confessions of an automation addict

A presentation at Voxxed days Vilnius in September 2015 in Vilnius, Lithuania by Holly Cummins

Slide 1

Slide 1

Holly Cummins @holly_cummins © 2013 IBM Corporation

Slide 2

Slide 2

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 3

Slide 3

? #automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 4

Slide 4

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 5

Slide 5

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 6

Slide 6

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 7

Slide 7

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 8

Slide 8

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 9

Slide 9

#automationconfessions @holly_cummins Let me start by telling you a bit about myself, and the context in which I’ve been trying to automate. I work for IBM, as a developer in the Hursley labs. A great thing about working for a company like ivm is you can move around and work on lots of different things. Right now I’m working on WebSphere. At the moment I’m working on the lightweight version of WebSphere Liberty Profile. We’ve got this unofficial ‘i heart liberty’ logo that we’ve done, because we really are incredibly proud of that server. It’s so lightweight, so easy to configure, it starts in a flash, it’s got a really small download size and footprint .. Bluemix I’m also an Apache Committer, on the Apache Aries project, which is an implementation of enterprise OSGi. It takes some of the JEE specs, like JPA, and makes them work in an OSGi world. If you’d like to know about enterprise OSGi, I have written a book about it. :)

Slide 10

Slide 10

#automationconfessions @holly_cummins I love automation. I really love automation. Examples 1993, dialup, to university network, had a command replay thing on my mac, handled logging in to university dialup, if it was a bit slow to pick up would just display my password. I was a bit surprised first time a friend told me my password. started at ibm, CMVC gui, I wrote a whole library of command line scripts populating data for tests, wrote thing to inject them with data by reflection - this was before mocks - and kept breaking colleagues by leaving stuff which tested their edge cases in a shared db. I thought they should be grateful I was discovering problems in their code for them, but … And then there was the time I needed to write formal design docs, and people wanted to consume them in Word, and I wanted to have my objects automatically populated from Java, so I wrote a tool to convert Java to nicely formatted class diagrams in SVG and LaTEX, and then to word. There are products that do less than what I’d written …

Slide 11

Slide 11

My team #automationconfessions @holly_cummins We all agree automation is good, but some do it more automatically than others. I’ve never seen a thing I didn’t want to automate. I’m always the one in our scrums who says “can that be automated?” whenever anyone else explains what they’re doing.

Slide 12

Slide 12

… My team #automationconfessions @holly_cummins We all agree automation is good, but some do it more automatically than others. I’ve never seen a thing I didn’t want to automate. I’m always the one in our scrums who says “can that be automated?” whenever anyone else explains what they’re doing.

Slide 13

Slide 13

Can that be automated? … My team #automationconfessions @holly_cummins We all agree automation is good, but some do it more automatically than others. I’ve never seen a thing I didn’t want to automate. I’m always the one in our scrums who says “can that be automated?” whenever anyone else explains what they’re doing.

Slide 14

Slide 14

Alasdair #automationconfessions @holly_cummins Loving automation has had some advantages, professionally, and also some disadvantages. Aries reconsume - our customers expect iron-clad serviceability, so that means being able to rebuild several years down the line. We can’t guarantee an external server will still be there so we need copies of source we ship. download tagged level of source tree, zip up, upload to filesystem, put link in to our builds, munge build labels, then build. So I wrote a tool to mirror from subversion to our source control system, build, and upload. So to do a reconsume just snapshot source control and update one reference. In stabilisation mode we could just fork a stream and turn off mirroring.

Slide 15

Slide 15

Look at my cool solution! Alasdair #automationconfessions @holly_cummins Loving automation has had some advantages, professionally, and also some disadvantages. Aries reconsume - our customers expect iron-clad serviceability, so that means being able to rebuild several years down the line. We can’t guarantee an external server will still be there so we need copies of source we ship. download tagged level of source tree, zip up, upload to filesystem, put link in to our builds, munge build labels, then build. So I wrote a tool to mirror from subversion to our source control system, build, and upload. So to do a reconsume just snapshot source control and update one reference. In stabilisation mode we could just fork a stream and turn off mirroring.

Slide 16

Slide 16

Look at my cool solution! Holly, I give you all the worst jobs. Alasdair #automationconfessions @holly_cummins Loving automation has had some advantages, professionally, and also some disadvantages. Aries reconsume - our customers expect iron-clad serviceability, so that means being able to rebuild several years down the line. We can’t guarantee an external server will still be there so we need copies of source we ship. download tagged level of source tree, zip up, upload to filesystem, put link in to our builds, munge build labels, then build. So I wrote a tool to mirror from subversion to our source control system, build, and upload. So to do a reconsume just snapshot source control and update one reference. In stabilisation mode we could just fork a stream and turn off mirroring.

Slide 17

Slide 17

Look at my cool solution! Holly, I give you all the worst jobs. ?! Why?? Alasdair #automationconfessions @holly_cummins Loving automation has had some advantages, professionally, and also some disadvantages. Aries reconsume - our customers expect iron-clad serviceability, so that means being able to rebuild several years down the line. We can’t guarantee an external server will still be there so we need copies of source we ship. download tagged level of source tree, zip up, upload to filesystem, put link in to our builds, munge build labels, then build. So I wrote a tool to mirror from subversion to our source control system, build, and upload. So to do a reconsume just snapshot source control and update one reference. In stabilisation mode we could just fork a stream and turn off mirroring.

Slide 18

Slide 18

Look at my cool solution! Holly, I give you all the worst jobs. ?! Why?? I know you’ll automate them. Alasdair #automationconfessions @holly_cummins Loving automation has had some advantages, professionally, and also some disadvantages. Aries reconsume - our customers expect iron-clad serviceability, so that means being able to rebuild several years down the line. We can’t guarantee an external server will still be there so we need copies of source we ship. download tagged level of source tree, zip up, upload to filesystem, put link in to our builds, munge build labels, then build. So I wrote a tool to mirror from subversion to our source control system, build, and upload. So to do a reconsume just snapshot source control and update one reference. In stabilisation mode we could just fork a stream and turn off mirroring.

Slide 19

Slide 19

It’s not just me. #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 20

Slide 20

It’s not just me. #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 21

Slide 21

It’s not just me. 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 22

Slide 22

It’s not just me. 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 23

Slide 23

It’s not just me. Washing Machine 1858 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 24

Slide 24

It’s not just me. Washing Machine 1858 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 25

Slide 25

It’s not just me. Washing Machine 1858 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push 1941 Electromechanical Computer @holly_cummins

Slide 26

Slide 26

It’s not just me. Washing Machine 1858 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push 1941 Electromechanical Computer @holly_cummins

Slide 27

Slide 27

It’s not just me. Washing Machine 1858 1764 Spinning Jenny #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push Chef 2012 1941 Electromechanical Computer @holly_cummins

Slide 28

Slide 28

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 This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 29

Slide 29

It’s not just me. More and more is automated. Washing Machine 1858 1764 Spinning Jenny Chef 2012 1941 Electromechanical Computer [Human history has been slightly simplified.]! [Timeline is not to scale.] #automationconfessions This is a journey we’ve been on, as a species, for a long time. We’re automating more and more … … because we need to do more and more Devops trend Chef stuff like cf push @holly_cummins

Slide 30

Slide 30

So are we living the dream? #automationconfessions @holly_cummins Technology giveth, and technology taketh away. We’ve got machines doing things for us that couldn’t even be comprehended in the 1700s. And yet, we still have to do tedious tasks. I sometimes suspect that the technology allows us to generate tedious tasks at a much greater level than was possible in the 1700s. TODO Is there a cute cute for that, like to err is human to really foul things up takes a computer, or computers allow us to generate dull tasks at a faster rate than ever before?

Slide 31

Slide 31

So are we living the dream? Well. Not quite. #automationconfessions @holly_cummins Technology giveth, and technology taketh away. We’ve got machines doing things for us that couldn’t even be comprehended in the 1700s. And yet, we still have to do tedious tasks. I sometimes suspect that the technology allows us to generate tedious tasks at a much greater level than was possible in the 1700s. TODO Is there a cute cute for that, like to err is human to really foul things up takes a computer, or computers allow us to generate dull tasks at a faster rate than ever before?

Slide 32

Slide 32

Fixing a classpath #automationconfessions @holly_cummins We’re an ant and Eclipse shop. We’ve got some clever stuff in our build which works out the right order in which to build projects from the Eclipse classpaths, and automatically adds the Eclipse .classpaths to the ant classpath. This ensures we don’t have to write any dependency down twice, and updating a dependency is just a question of updating one .classpath.

Slide 33

Slide 33

#automationconfessions @holly_cummins So far, so easy. But then we discovered we had 26 different copies of httpunit in the source tree. Noticed it and thought “we have to fix this before it gets any worse,” but it wasn’t the kind of job that you mention in recruitment brochures. Job of correcting each class path was pretty tedious. It’s probably the sort of thing that would have benefited from automation with a sed script. New twist: one line perl command, never wrote it down, can’t find it with google

Slide 34

Slide 34

Fixing 26 classpaths #automationconfessions @holly_cummins So far, so easy. But then we discovered we had 26 different copies of httpunit in the source tree. Noticed it and thought “we have to fix this before it gets any worse,” but it wasn’t the kind of job that you mention in recruitment brochures. Job of correcting each class path was pretty tedious. It’s probably the sort of thing that would have benefited from automation with a sed script. New twist: one line perl command, never wrote it down, can’t find it with google

Slide 35

Slide 35

Fixing 26 classpaths #automationconfessions @holly_cummins So far, so easy. But then we discovered we had 26 different copies of httpunit in the source tree. Noticed it and thought “we have to fix this before it gets any worse,” but it wasn’t the kind of job that you mention in recruitment brochures. Job of correcting each class path was pretty tedious. It’s probably the sort of thing that would have benefited from automation with a sed script. New twist: one line perl command, never wrote it down, can’t find it with google

Slide 36

Slide 36

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

Slide 37

Slide 37

Why automate? Automate because we are lazy #automationconfessions @holly_cummins I think this story brings us nicely to the reason we automate. We automate because we don’t want to be doing that. We automate because we are lazy.

Slide 38

Slide 38

My manager #automationconfessions So, here’s a career tip. Telling my boss I’m lazy doesn’t tend to give good end of year feedback. ! The word you want is either efficiency or sustainability. @holly_cummins

Slide 39

Slide 39

My manager #automationconfessions So, here’s a career tip. Telling my boss I’m lazy doesn’t tend to give good end of year feedback. ! The word you want is either efficiency or sustainability. @holly_cummins

Slide 40

Slide 40

My manager #automationconfessions So, here’s a career tip. Telling my boss I’m lazy doesn’t tend to give good end of year feedback. ! The word you want is either efficiency or sustainability. @holly_cummins

Slide 41

Slide 41

“Sustainable” My manager #automationconfessions So, here’s a career tip. Telling my boss I’m lazy doesn’t tend to give good end of year feedback. ! The word you want is either efficiency or sustainability. @holly_cummins

Slide 42

Slide 42

“Sustainable” Automate for sustainability! Automate for efficiency #automationconfessions So, here’s a career tip. Telling my boss I’m lazy doesn’t tend to give good end of year feedback. ! The word you want is either efficiency or sustainability. My manager @holly_cummins

Slide 43

Slide 43

! Do a task once.! Do it a second time and take notes.! Do it a third time, automate.! #automationconfessions TODO strike through for trent and holly @holly_cummins

Slide 44

Slide 44

Scale The more of you there are, the more it is worth investing in automation #automationconfessions @holly_cummins When you’re operating at scale, it’s very easy to trip the three times rule Going back to the class path story, the reason that was a problem was that 26 different developers had had the idea of checking in that jar - if it had been one or two, would have been easy to fix.

Slide 45

Slide 45

Treat your servers like cattle, not like pets. #automationconfessions Treat your this has some interactions with robustness, too @holly_cummins

Slide 46

Slide 46

Treat your servers like cattle, not like pets. #automationconfessions Treat your this has some interactions with robustness, too @holly_cummins

Slide 47

Slide 47

For one server, it doesn’t really matter. For a lot of servers, it matters a lot. Our build farm is 500 servers, so I’m not going to illustrate that. It matters when you’re setting them up, and it matters more when they go wrong. If they’re not unique or special, you can cope with ones going away - you just get a replacement back. So it’s about scale, but also about managing failure. There’s another benefit to this way of managing servers, which is that you know servers won’t end up misconfigured. We have a lot of build servers, and when we set up them up by hand, there’s always some niggling thing which is wrong.

Slide 48

Slide 48

For one server, it doesn’t really matter. For a lot of servers, it matters a lot. Our build farm is 500 servers, so I’m not going to illustrate that. It matters when you’re setting them up, and it matters more when they go wrong. If they’re not unique or special, you can cope with ones going away - you just get a replacement back. So it’s about scale, but also about managing failure. There’s another benefit to this way of managing servers, which is that you know servers won’t end up misconfigured. We have a lot of build servers, and when we set up them up by hand, there’s always some niggling thing which is wrong.

Slide 49

Slide 49

For one server, it doesn’t really matter. For a lot of servers, it matters a lot. Our build farm is 500 servers, so I’m not going to illustrate that. It matters when you’re setting them up, and it matters more when they go wrong. If they’re not unique or special, you can cope with ones going away - you just get a replacement back. So it’s about scale, but also about managing failure. There’s another benefit to this way of managing servers, which is that you know servers won’t end up misconfigured. We have a lot of build servers, and when we set up them up by hand, there’s always some niggling thing which is wrong.

Slide 50

Slide 50

Why Automate? #automationconfessions @holly_cummins Part of the reason we treat our servers like cattle is because we’re lazy, but it’s also because we want to get it right

Slide 51

Slide 51

Why Automate? #automationconfessions @holly_cummins Part of the reason we treat our servers like cattle is because we’re lazy, but it’s also because we want to get it right

Slide 52

Slide 52

Why Automate? Automate because you care #automationconfessions @holly_cummins Part of the reason we treat our servers like cattle is because we’re lazy, but it’s also because we want to get it right

Slide 53

Slide 53

If you care about it, automate it. #automationconfessions Principle: If you care about it, automate it. if take one thing away, make it this one @holly_cummins

Slide 54

Slide 54

Why Automate? #automationconfessions @holly_cummins

Slide 55

Slide 55

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

Slide 56

Slide 56

Marvin #automationconfessions @holly_cummins Scale is thing here, too, because if you have of the order of a hundred or so developers delivering code, the odds of a mistake are higher than if there are two of you

Slide 57

Slide 57

Marvin • Build breaks (including test failures) should be reverted from the stream #automationconfessions @holly_cummins Scale is thing here, too, because if you have of the order of a hundred or so developers delivering code, the odds of a mistake are higher than if there are two of you

Slide 58

Slide 58

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 Scale is thing here, too, because if you have of the order of a hundred or so developers delivering code, the odds of a mistake are higher than if there are two of you

Slide 59

Slide 59

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 Scale is thing here, too, because if you have of the order of a hundred or so developers delivering code, the odds of a mistake are higher than if there are two of you

Slide 60

Slide 60

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 Scale is thing here, too, because if you have of the order of a hundred or so developers delivering code, the odds of a mistake are higher than if there are two of you

Slide 61

Slide 61

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 Scale is thing here, too, because if you have of the order of a hundred or so developers delivering code, the odds of a mistake are higher than if there are two of you

Slide 62

Slide 62

End of iteration demos #automationconfessions @holly_cummins Example - end of iteration demos, some people loved doing them and some people ignored them. At the kind of scale we’re working on, we were relying on people to volunteer to do them, and so a lot of stories were missing being demoed. This picture, by the way, is showing a whiteboard with someone not doing an end of iteration demo, but that’s kind of hard to draw.

Slide 63

Slide 63

End of iteration demos Automatic generation on story close #automationconfessions @holly_cummins So we put in an automation, and changed RTC to automatically spawn a work item for an end of iteration demo when we close a story, got way more stories. This is an example of a really simple automation - the only thing that’s happening is a work item.

Slide 64

Slide 64

Clearly automating to improve outcome rather than save effort. It was actually a lot more effort, and it’s more ongoing effort, too. ! Not all success stories here, our iterations should exit with no must defects but doesn’t ever happen because it’s only an assertion Defect management We shouldn’t exit an iteration with any must-fix defects. Priority inflation, scaling, we do exit, because nothing in our process forces that step We actually know the product is shippable, so it’s a mismatch

Slide 65

Slide 65

Automating to improve the outcome rather than to save effort: Clearly automating to improve outcome rather than save effort. It was actually a lot more effort, and it’s more ongoing effort, too. ! Not all success stories here, our iterations should exit with no must defects but doesn’t ever happen because it’s only an assertion Defect management We shouldn’t exit an iteration with any must-fix defects. Priority inflation, scaling, we do exit, because nothing in our process forces that step We actually know the product is shippable, so it’s a mismatch

Slide 66

Slide 66

Automating to improve the outcome rather than to save effort: • Write the Rational Team Concert plugin (one-off) Clearly automating to improve outcome rather than save effort. It was actually a lot more effort, and it’s more ongoing effort, too. ! Not all success stories here, our iterations should exit with no must defects but doesn’t ever happen because it’s only an assertion Defect management We shouldn’t exit an iteration with any must-fix defects. Priority inflation, scaling, we do exit, because nothing in our process forces that step We actually know the product is shippable, so it’s a mismatch

Slide 67

Slide 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) Clearly automating to improve outcome rather than save effort. It was actually a lot more effort, and it’s more ongoing effort, too. ! Not all success stories here, our iterations should exit with no must defects but doesn’t ever happen because it’s only an assertion Defect management We shouldn’t exit an iteration with any must-fix defects. Priority inflation, scaling, we do exit, because nothing in our process forces that step We actually know the product is shippable, so it’s a mismatch

Slide 68

Slide 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) Clearly automating to improve outcome rather than save effort. It was actually a lot more effort, and it’s more ongoing effort, too. ! Not all success stories here, our iterations should exit with no must defects but doesn’t ever happen because it’s only an assertion Defect management We shouldn’t exit an iteration with any must-fix defects. Priority inflation, scaling, we do exit, because nothing in our process forces that step We actually know the product is shippable, so it’s a mismatch

Slide 69

Slide 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. Clearly automating to improve outcome rather than save effort. It was actually a lot more effort, and it’s more ongoing effort, too. ! Not all success stories here, our iterations should exit with no must defects but doesn’t ever happen because it’s only an assertion Defect management We shouldn’t exit an iteration with any must-fix defects. Priority inflation, scaling, we do exit, because nothing in our process forces that step We actually know the product is shippable, so it’s a mismatch

Slide 70

Slide 70

Why Automate? #automationconfessions @holly_cummins

Slide 71

Slide 71

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

Slide 72

Slide 72

Linting #automationconfessions @holly_cummins If a find bugs failure gets delivered, marvin automatically backs it out Findbugs, js linting Other examples: Suspending changesets Semantic versioning Release deployments can be unexpectedly complex, easy to forget one step ! TODO where does this fit? ie our build monitoring - A skilled person can do it better than a machine. An unskilled person will do it worse than a machine.

Slide 73

Slide 73

Linting • A computer can notice problems that a human can’t (like misspelled variable names) #automationconfessions @holly_cummins If a find bugs failure gets delivered, marvin automatically backs it out Findbugs, js linting Other examples: Suspending changesets Semantic versioning Release deployments can be unexpectedly complex, easy to forget one step ! TODO where does this fit? ie our build monitoring - A skilled person can do it better than a machine. An unskilled person will do it worse than a machine.

Slide 74

Slide 74

Linting • A computer can notice problems that a human can’t (like misspelled variable names) • We love findbugs #automationconfessions @holly_cummins If a find bugs failure gets delivered, marvin automatically backs it out Findbugs, js linting Other examples: Suspending changesets Semantic versioning Release deployments can be unexpectedly complex, easy to forget one step ! TODO where does this fit? ie our build monitoring - A skilled person can do it better than a machine. An unskilled person will do it worse than a machine.

Slide 75

Slide 75

Deployment #automationconfessions ! Suspending changesets Release deployments can be unexpectedly complex, easy to forget one step ! @holly_cummins

Slide 76

Slide 76

Deployment • Should be easy, right? #automationconfessions ! Suspending changesets Release deployments can be unexpectedly complex, easy to forget one step ! @holly_cummins

Slide 77

Slide 77

Deployment • Should be easy, right? • Always one step that gets forgotten … #automationconfessions ! Suspending changesets Release deployments can be unexpectedly complex, easy to forget one step ! @holly_cummins

Slide 78

Slide 78

Why automate? This is another one that I don’t put in my performance appraisals. I didn’t want to leave it out, though, because it’s really true, and this talk is all about confessions. It’s maybe not a good reason to automate, but it does happen. If you’re thinking about how interesting the problem is, rather than the long term picture, that’s maybe a red flag It’s maybe not the best use of your time and your employer’s time

Slide 79

Slide 79

Why automate? This is another one that I don’t put in my performance appraisals. I didn’t want to leave it out, though, because it’s really true, and this talk is all about confessions. It’s maybe not a good reason to automate, but it does happen. If you’re thinking about how interesting the problem is, rather than the long term picture, that’s maybe a red flag It’s maybe not the best use of your time and your employer’s time

Slide 80

Slide 80

Why automate? Automate because it’s fun This is another one that I don’t put in my performance appraisals. I didn’t want to leave it out, though, because it’s really true, and this talk is all about confessions. It’s maybe not a good reason to automate, but it does happen. If you’re thinking about how interesting the problem is, rather than the long term picture, that’s maybe a red flag It’s maybe not the best use of your time and your employer’s time

Slide 81

Slide 81

Why not automate? Ross Bootstrapping problem, sometimes we can’t make that initial investment. Sometimes what we think is a bootstrapping problem is actually a more fundamental problem.

Slide 82

Slide 82

ow h t a d a om I get sWhy not ould c I e m i t much ore m automate? d a h I save if time. Ross Bootstrapping problem, sometimes we can’t make that initial investment. Sometimes what we think is a bootstrapping problem is actually a more fundamental problem.

Slide 83

Slide 83

ow h t a d a om I get sWhy not ould c I e m i t much ore m automate? d a h I save if time. Ross’s bootstraps Ross Bootstrapping problem, sometimes we can’t make that initial investment. Sometimes what we think is a bootstrapping problem is actually a more fundamental problem.

Slide 84

Slide 84

ow h t a d a om I get sWhy not ould c I e m i t much ore m automate? d a h I save if time. The automation paradox Ross’s bootstraps Ross Bootstrapping problem, sometimes we can’t make that initial investment. Sometimes what we think is a bootstrapping problem is actually a more fundamental problem.

Slide 85

Slide 85

#automationconfessions @holly_cummins I’ve given this talk a few times, and every time I think about giving our graduate that search job I feel guilty. BUT … I’ve invested so much time in writing script libraries to manage sed, in googling for scripts to search replace …

Slide 86

Slide 86

find something | exec something {} + ; ?! #automationconfessions @holly_cummins I’ve given this talk a few times, and every time I think about giving our graduate that search job I feel guilty. BUT … I’ve invested so much time in writing script libraries to manage sed, in googling for scripts to search replace …

Slide 87

Slide 87

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? #automationconfessions @holly_cummins I’ve given this talk a few times, and every time I think about giving our graduate that search job I feel guilty. BUT … I’ve invested so much time in writing script libraries to manage sed, in googling for scripts to search replace …

Slide 88

Slide 88

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? sedder.sh and dosed.sh and … ? #automationconfessions @holly_cummins I’ve given this talk a few times, and every time I think about giving our graduate that search job I feel guilty. BUT … I’ve invested so much time in writing script libraries to manage sed, in googling for scripts to search replace …

Slide 89

Slide 89

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? sedder.sh and dosed.sh and … ? perl … um .. something *.txt? #automationconfessions @holly_cummins I’ve given this talk a few times, and every time I think about giving our graduate that search job I feel guilty. BUT … I’ve invested so much time in writing script libraries to manage sed, in googling for scripts to search replace …

Slide 90

Slide 90

find something | exec something {} + ; ?! for … then sed something; mv $i.bak $i; … ? sedder.sh and dosed.sh and … ? perl … um .. something *.txt? #automationconfessions @holly_cummins I’ve given this talk a few times, and every time I think about giving our graduate that search job I feel guilty. BUT … I’ve invested so much time in writing script libraries to manage sed, in googling for scripts to search replace …

Slide 91

Slide 91

Why not automate thanks (for everything!), xkcd.com I saw this on a colleague’s wall, and I just felt this sinking feeling as I recognised so many projects I’d worked on.

Slide 92

Slide 92

The Dream TODO make robot be juggling Automation can be a good friend

Slide 93

Slide 93

The Dream Super-helpful automation automaton TODO make robot be juggling Automation can be a good friend

Slide 94

Slide 94

The Reality

Slide 95

Slide 95

The Reality

Slide 96

Slide 96

The Reality Think about support.

Slide 97

Slide 97

The Reality Think about support. Think about robustness.

Slide 98

Slide 98

Rosie #automationconfessions @holly_cummins Move to CD makes it way simpler externally, more complex internally Right way, right? TODO example logo Key points: Scale of team doing deliveries, some basic process things like “did you do a sandbox build”? “are you using the right kind of work item”? get lost. Tool to replace unsustainable - there’s that word again! - process of manual approvals, and guide team through process.

Slide 99

Slide 99

Rosie ate the world. #automationconfessions Rosie ate the world. Total time sink, one of us, then two of us, then three of us, all our other development stopped. A bit like don’t fight a land war in asia. Don’t do automations which involve javascript. Or at least, be very cautious of automations with user interfaces. @holly_cummins

Slide 100

Slide 100

Rosie ate the world. (Well, my corner of it.) #automationconfessions Rosie ate the world. Total time sink, one of us, then two of us, then three of us, all our other development stopped. A bit like don’t fight a land war in asia. Don’t do automations which involve javascript. Or at least, be very cautious of automations with user interfaces. @holly_cummins

Slide 101

Slide 101

Questions to ask before automating #automationconfessions @holly_cummins

Slide 102

Slide 102

Questions to ask before automating • Who can maintain this automation? #automationconfessions @holly_cummins

Slide 103

Slide 103

Questions to ask before automating • Who can maintain this automation? • Who can manage this automation? #automationconfessions @holly_cummins

Slide 104

Slide 104

Questions to ask before automating • Who can maintain this automation? • Who can manage this automation? • Will it be robust? What if things change? #automationconfessions @holly_cummins

Slide 105

Slide 105

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

Slide 106

Slide 106

Checkpoint during automation #automationconfessions @holly_cummins

Slide 107

Slide 107

Checkpoint during automation • How do I define success? #automationconfessions @holly_cummins

Slide 108

Slide 108

Checkpoint during automation • How do I define success? • Have I got completion criteria? #automationconfessions @holly_cummins

Slide 109

Slide 109

Checkpoint during automation • How do I define success? • Have I got completion criteria? • Is this still worth it? #automationconfessions @holly_cummins

Slide 110

Slide 110

Checkpoint during automation • How do I define success? • Have I got completion criteria? • Is this still worth it? • Am I still saving time? #automationconfessions @holly_cummins

Slide 111

Slide 111

Don’t Go Insane. #automationconfessions Keep your sense of proportion. Before - and during automating, checkpoint regularly to make sure the cost is still acceptable. ! @holly_cummins

Slide 112

Slide 112

Remember the bus #automationconfessions @holly_cummins Example - my automation to reconsume Aries, rest of team scared to touch it and it breaks every now and then

Slide 113

Slide 113

Remember the bus A clever automation isn’t so clever if only one person understands it… #automationconfessions @holly_cummins Example - my automation to reconsume Aries, rest of team scared to touch it and it breaks every now and then

Slide 114

Slide 114

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 Example - my automation to reconsume Aries, rest of team scared to touch it and it breaks every now and then

Slide 115

Slide 115

Give hefty automations adorable names #automationconfessions @holly_cummins Dan North has Conan the deployer. Rosie maid from Jetsons So, no matter how much you checkpoint, some automations will be big. So This one is important. If this thing is going to take over your life, it better have a name, right? So you can say to your boss “I was up until midnight working on Rosie last night …” !

Slide 116

Slide 116

Why not automate #automationconfessions @holly_cummins

Slide 117

Slide 117

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

Slide 118

Slide 118

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

Slide 119

Slide 119

The dumbness problem TODO can we come up with an example? Is server setup vs EBC an example? ! TODO, want to talk more about Process - Is it always bad? A structure for how to interact at scale (credit, JavaPosse somewhere)

Slide 120

Slide 120

The dumbness problem • It’s dumb to automate dumb things TODO can we come up with an example? Is server setup vs EBC an example? ! TODO, want to talk more about Process - Is it always bad? A structure for how to interact at scale (credit, JavaPosse somewhere)

Slide 121

Slide 121

The dumbness problem • It’s dumb to automate dumb things • Automation allows you to do dumb things at a greater speed TODO can we come up with an example? Is server setup vs EBC an example? ! TODO, want to talk more about Process - Is it always bad? A structure for how to interact at scale (credit, JavaPosse somewhere)

Slide 122

Slide 122

Defect screening #automationconfessions @holly_cummins We screen defects daily to manually set a priority, and takes time, and isn’t anyone’s favourite activity. Someone asked if we could automate it, and just automatically set them to should, which is what we usually end up settling on. Technically, we could, but is it the right thing to do? If the priority field doesn’t have value, we shouldn’t have it.

Slide 123

Slide 123

Ask questions before automatically automating things which don’t actually need to be done. #automationconfessions @holly_cummins If a process is so painful the only way to cope with it is to automate it, maybe the process needs to go away. The other way of phrasing this is “don’t automate if you don’t care”

Slide 124

Slide 124

Why not automate Lovely video on youtube of robot trying to feed a mannequin but instead repeatedly punching it in the face. Some jobs are too hard for computers, either because they don’t have intuition, or because the rules are too complex to be able to turn into an algorithm. Some things, like deployment, computers are way better at Others, computers can be worse at

Slide 125

Slide 125

Why not automate Lovely video on youtube of robot trying to feed a mannequin but instead repeatedly punching it in the face. Some jobs are too hard for computers, either because they don’t have intuition, or because the rules are too complex to be able to turn into an algorithm. Some things, like deployment, computers are way better at Others, computers can be worse at

Slide 126

Slide 126

Why not automate Computers don’t always get it right. Lovely video on youtube of robot trying to feed a mannequin but instead repeatedly punching it in the face. Some jobs are too hard for computers, either because they don’t have intuition, or because the rules are too complex to be able to turn into an algorithm. Some things, like deployment, computers are way better at Others, computers can be worse at

Slide 127

Slide 127

Build monitoring #automationconfessions TODO example graphic TODO screenshot of RTC build monitoring, lucene similarity search What caused a failure? If we could write a program to know, we could write a program that didn’t fail Need 100% accuracy Need intuition @holly_cummins

Slide 128

Slide 128

How to automate #automationconfessions @holly_cummins

Slide 129

Slide 129

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

Slide 130

Slide 130

What can we automate? IANAL, but need to care, which means a computer can help with ‘did you forget this?’ but the actual maintenance of the statements should be done by a person Unit test generation - automatically drive getters and setters

Slide 131

Slide 131

What can we automate? • Machine configuration IANAL, but need to care, which means a computer can help with ‘did you forget this?’ but the actual maintenance of the statements should be done by a person Unit test generation - automatically drive getters and setters

Slide 132

Slide 132

What can we automate? • Machine configuration • Deployments IANAL, but need to care, which means a computer can help with ‘did you forget this?’ but the actual maintenance of the statements should be done by a person Unit test generation - automatically drive getters and setters

Slide 133

Slide 133

What can we automate? • Machine configuration • Deployments • Test environments IANAL, but need to care, which means a computer can help with ‘did you forget this?’ but the actual maintenance of the statements should be done by a person Unit test generation - automatically drive getters and setters

Slide 134

Slide 134

What can we automate? • Machine configuration • Deployments • Test environments • …. IANAL, but need to care, which means a computer can help with ‘did you forget this?’ but the actual maintenance of the statements should be done by a person Unit test generation - automatically drive getters and setters

Slide 135

Slide 135

What can we automate? IANAL, but need to care, which means a computer can help with ‘did you forget this?’ but the actual maintenance of the statements should be done by a person Unit test generation - automatically drive getters and setters

Slide 136

Slide 136

What can we automate? Project settings Code formatting …

Slide 137

Slide 137

What can we automate? Project settings Code formatting …

Slide 138

Slide 138

What can we automate? Project settings Code formatting …

Slide 139

Slide 139

What can we automate? Project settings Code formatting …

Slide 140

Slide 140

What can we automate? Project settings Code formatting …

Slide 141

Slide 141

What can we automate? Formatting: the most controversial thing one can automate. Project settings Code formatting …

Slide 142

Slide 142

What can we automate? Actually kind of complex, legally. Need to care, need to identify significant changes

Slide 143

Slide 143

What can we automate? Copyright statements Actually kind of complex, legally. Need to care, need to identify significant changes

Slide 144

Slide 144

What can we automate? Maybe. Copyright statements Actually kind of complex, legally. Need to care, need to identify significant changes

Slide 145

Slide 145

#automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 146

Slide 146

Tools! (an incomplete list) #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 147

Slide 147

Tools! (an incomplete list) #automationconfessions ! TODO shell picture I had to write a wrapper - automation, again - around sed to allow me to get the hang of it @holly_cummins

Slide 148

Slide 148

Tools! (an incomplete list) • Shell scripts #automationconfessions ! TODO shell picture I had to write a wrapper - automation, again - around sed to allow me to get the hang of it @holly_cummins

Slide 149

Slide 149

Tools! (an incomplete list) • Shell scripts • sed #automationconfessions ! TODO shell picture I had to write a wrapper - automation, again - around sed to allow me to get the hang of it @holly_cummins

Slide 150

Slide 150

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

Slide 151

Slide 151

Tools! (still an incomplete list) #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 152

Slide 152

Tools! (still an incomplete list) Jenkins or Rational Team Concert builds #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 153

Slide 153

Tools! (still an incomplete list) #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 154

Slide 154

Tools! (still an incomplete list) Chef or Puppet #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 155

Slide 155

Tools! (still an incomplete list) #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 156

Slide 156

Tools! (still an incomplete list) #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 157

Slide 157

Tools! (still an incomplete list) Docker, VMWare, and Vagrant images #automationconfessions @holly_cummins TODO picture of wrench? Kind of hard and stupid to even write a list because automation is such a general term, covers things from deployment to server management to source control to design documents. I had to write a wrapper - automation, again - around sed to allow me to get the hang of it Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 158

Slide 158

It doesn’t have to be fancy #automationconfessions @holly_cummins Our infrastructure team provide 24/7 support for the critical internal services. They have a rota of who gets the phone. If the phone-holder gets a callout, they have to be ready. However, in most cases they wont get a callout so don’t want to invest in setting up an environment. Solution: The DOI 24/7 laptop, set up with the tools the support team need. Easier than a vmware image. Doesn’t scale, but that’s ok.

Slide 159

Slide 159

It doesn’t have to be fancy #automationconfessions @holly_cummins Our infrastructure team provide 24/7 support for the critical internal services. They have a rota of who gets the phone. If the phone-holder gets a callout, they have to be ready. However, in most cases they wont get a callout so don’t want to invest in setting up an environment. Solution: The DOI 24/7 laptop, set up with the tools the support team need. Easier than a vmware image. Doesn’t scale, but that’s ok.

Slide 160

Slide 160

Tools! (still an incomplete list) #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 161

Slide 161

Tools! (still an incomplete list) #automationconfessions An ant. @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 162

Slide 162

Tools! (still an incomplete list) #automationconfessions An ant. Not a reindeer. @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 163

Slide 163

Tools! (still an incomplete list) #automationconfessions An ant. Not a reindeer. @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 164

Slide 164

Tools! (still an incomplete list) An ant. Not a reindeer. Maven #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 165

Slide 165

Tools! (still an incomplete list) An ant. Not a reindeer. Gradle Maven #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 166

Slide 166

Tools! (still an incomplete list) An ant. Not a reindeer. Gradle Maven #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 167

Slide 167

Tools! (still an incomplete list) An ant. Not a reindeer. Gradle Maven #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 168

Slide 168

Tools! (still an incomplete list) An ant. Not a reindeer. Gradle Maven #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 169

Slide 169

Tools! (still an incomplete list) An ant. Not a reindeer. Plugins Tasks Gradle Maven #automationconfessions @holly_cummins Speaking in shoreditch and mention ant, uncool ! Maven can of course be used for automation, but I haven’t included it in the list since often in Maven you’ll shell out to ant for any kind of procedural process, unless you write your goal In

Slide 170

Slide 170

Tools! (still an incomplete list) #automationconfessions maintenance a problem @holly_cummins

Slide 171

Slide 171

Tools! (still an incomplete list) • Eclipse plugins #automationconfessions maintenance a problem @holly_cummins

Slide 172

Slide 172

Tools! (still an incomplete list) #automationconfessions Web apps are interactive can do more, because user makes choices need to interact with user need a better class of user! @holly_cummins

Slide 173

Slide 173

Tools! (still an incomplete list) • Web applications #automationconfessions Web apps are interactive can do more, because user makes choices need to interact with user need a better class of user! @holly_cummins

Slide 174

Slide 174

Tools! (still an incomplete list) • Web applications • If a UI is involved, proceed with caution #automationconfessions Web apps are interactive can do more, because user makes choices need to interact with user need a better class of user! @holly_cummins

Slide 175

Slide 175

Rolling your own #automationconfessions @holly_cummins What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 176

Slide 176

Rolling your own #automationconfessions @holly_cummins What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 177

Slide 177

Rolling your own #automationconfessions @holly_cummins What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 178

Slide 178

Rolling your own • #automationconfessions Beware not-invented-here @holly_cummins What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 179

Slide 179

Rolling your own • Beware not-invented-here • #automationconfessions Are you sure no one else has done this? @holly_cummins What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 180

Slide 180

Rolling your own • #automationconfessions Beware not-invented-here • Are you sure no one else has done this? • If not, maybe there’s a good reason? @holly_cummins What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 181

Slide 181

Rolling your own • • #automationconfessions 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 What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 182

Slide 182

Rolling your own • #automationconfessions 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 What’s this? [click] Roll your own. This is really important, too. There’s no right answer. Should you roll your own, or is there something already out there? If not, why not? (maybe you have a bad process, or a weird one?) In general, be very wary of rolling your own. Beware of not invented here, getting seduced by interesting problems (like me and the design document generator) On the other hand, what does roll your own even mean? Automation often involves some measure of inventing something, but probably starting with the tools I listed on the previous page

Slide 183

Slide 183

Finally … #automationconfessions @holly_cummins I do love automation, I can’t resist it. Sometimes it gets me in trouble, but I still get to do it. And that’s really cool.

Slide 184

Slide 184

Finally … Aren’t we lucky to have careers where automation is not just allowed, but encouraged? #automationconfessions @holly_cummins I do love automation, I can’t resist it. Sometimes it gets me in trouble, but I still get to do it. And that’s really cool.

Slide 185

Slide 185

#automationconfessions @holly_cummins I do love automation, I can’t resist it. Sometimes it gets me in trouble, but I still get to do it. And that’s really cool.

Slide 186

Slide 186

Any Questions?! ! @holly_cummins www.wasdev.net #automationconfessions @holly_cummins I do love automation, I can’t resist it. Sometimes it gets me in trouble, but I still get to do it. And that’s really cool.