layout: true name: titleslide class: center, middle
.footnote[ ###
@schmonz
####
#agiletd
[schmonz.com/talk /2016-agiletd](https://schmonz.com/talk/2016-agiletd/) ] --- layout: true name: footnotelinks .left-column[
] .footnote[ ## DevOps Dojo ###
@schmonz
####
#agiletd
[schmonz.com/talk /2016-agiletd](https://schmonz.com/talk/2016-agiletd/) ] --- template: titleslide # DevOps Dojo
## Amitai Schleier ### Agile Testing Days 2016/12/07 ??? 1. Press 'C' to clone and move it to projector 2. Press 'P' to show these here presenter notes ### 40 minutes + break + 40 minutes ### Ideas for next time When I said "now work together", people didn't know exactly how to pair. Try these ideas from Llewellyn: - Strong-style pairing - Setting a 4-minute timer (and switching seats when they switch roles) - Mobbing instead of pairing --- layout: false template: footnotelinks .right-column[ # Required: Enough Laptops We'll be pairing. Do we have enough machines? ### Not Required - Knowing how to code ### Required - Knowing how to edit text ] --- .right-column[ # Required: Code of Conduct ## [agiletestingdays.com/code-of-conduct](http://www.agiletestingdays.com/code-of-conduct/)
] --- .right-column[ # Why have a CoC? ## [agiletestingdays.com/code-of-conduct](http://www.agiletestingdays.com/code-of-conduct/) **Not** to prevent behavior we don't like -- nothing can -- but To remind ourselves, when we see some, how _we'll_ want to behave. ] -- .right-column[ ### Why do we test-drive code? It's a cognitive aid: Declaring our intentions helps us live up to them. ] --- .right-column[ # Specification By Example ## [agiletestingdays.com/code-of-conduct](http://www.agiletestingdays.com/code-of-conduct/) ### Key features 1. "Harassment includes..." 2. "If you..." 3. "If a participant engages in harassing behavior..." ### Homework Build shared understanding: Find someone to help you write a few Gherkin examples for this Code of Conduct. (Extra credit: Figure out how to automate them.) ] --- .right-column[ # DevOps Is Two Things ### Not 1. Dev 2. Ops What then? ] -- .right-column[ ### Yes 1. Automation 2. Collaboration Maybe you've heard about Docker, Chef, Puppet, Ansible... But this here is _Agile_ Testing Days. ] --- .right-column[ # Individuals and Interactions In pairs, we're going to: ### Iterate - "Code" (edit text) - "Deploy" (run a program) - Fix - Repeat ] --- .right-column[ # Move Your Feet ## Two options: ### 1. Not your thing? Cool, find something else or ### 2. Sounds good? Cool, find your new pair partner ] --- .right-column[ # Get These Slides ##
schmonz.com/talk/2016-agiletd
] --- .right-column[ # Download These Materials
Mac/Unix (.zip)
Windows (.ova)
] ??? VirtualBox how-tos: - File -> Import Appliance... - Username/password: "devops"/"devops" - Prefer SSH? Log in on the console once and follow instructions - Got a non-US keyboard? Follow instructions on the console --- .right-column[ # Iteration 1 (1/3) ## Self-organize One of you is **Dev**, the other **Ops**. Play a role you don't know well. ## Dev Run this command (the prompt is `$ ` -- don't type that part) ```sh $ ./printlabels addresses0.csv ``` Looks good? Let's go to production! ] --- .right-column[ # Iteration 1 (2/3) ## Ops Run this command: ```sh $ ./printlabels addresses1.csv ``` ] --- .right-column[ # Iteration 1 (3/3) ## Ops Run this command: ```sh $ ./printlabels addresses1.csv ``` ## How'd that go? ] --- .right-column[ # Iteration 2 (1/4) ## Dev We better fix it. Open `printlabels` with `nano`, `vi`, `emacs`, or any other text editor. I'll show you which line to change. ] ??? ```sh $ cd ~/Documents/trees/devops-dojo $ git checkout state-0 $ git crawl master $ git show --decorate ``` --- .right-column[ # Iteration 2 (2/4) ## Dev When you're ready: ```sh $ ./printlabels addresses1.csv ``` Looks good? Let's go to production again! ] --- .right-column[ # Iteration 2 (3/4) ## Ops ```sh $ ./printlabels addresses2.csv ``` ] --- .right-column[ # Iteration 2 (4/4) ## Ops ```sh $ ./printlabels addresses2.csv ``` ## How'd that go? ] --- .right-column[ # Retrospective Let's discuss. Some questions: ## 1. Perl?!!1 ## 2. How unrealistic was that workflow? ## 3. Who has a real-world story to share? ] ???
TDD in context #4: Continual delivery
--- .right-column[ # Iteration 3 (1/2) ## Work _together_ First, fix that bug. I'll show you how. When you're _both_ satisfied, go to production: ```sh $ ./printlabels addresses2.csv ``` ] ??? ```sh $ git crawl master # to state-2-break-* $ git crawl master # to state-3-fix-* $ git show --decorate ``` --- .right-column[ # Iteration 3 (2/2) ## Work _together_ There's an `addresses3.csv`. Try it: ```sh $ ./printlabels addresses3.csv ``` It's supposed to look different. I'll show you how. When you're _both_ satisfied, go to production: ```sh $ ./printlabels addresses3.csv ``` ] ??? ```sh $ git crawl master # to state-4-break-* $ git crawl master # to state-5-fix-* $ git show --decorate ``` --- .right-column[ # Retrospective ### What helps us do well at work - Standardize deployment and monitoring - (Or else design monitoring in) - Templatize service creation where possible - Dev can deploy and support their own code - Communicate and monitor performance requirements (and other
ilities
) - Not needing to have a "code freeze" ### What to try when we're back at work - Define criteria for rejecting a "fix" that might make things worse - When Dev thinks a feature might be "done", demo it and test ASAP - Pair (local or remote) to shorten feedback loops - Continuous Integration ] --- .right-column[ # Rate This Session ## [agiletestingdays.com/session/devops-dojo](http://www.agiletestingdays.com/session/devops-dojo)
] --- .right-column[ # Agile in 3 Minutes > "Before Agile in 3 Minutes, I couldn't get my team to have a > conversation about important topics. Now I have to timebox it." ##
agilein3minut.es
] --- .right-column[ # Agile in 3 Minutes: The Book The simplest _essays_ that could possibly work. $4 today! ## [leanpub.com/agilein3minutes/c/atd16](https://leanpub.com/agilein3minutes/c/atd16)
] --- .right-column[ # ATD Late Night Cabaret ## Come see me perform tonight: 1. An act (with Bob, Jack, and
Heusser
) related to these names and addresses (!) 2. A solo act involving spoken-word poetry (possibly bad (possibly intentionally)) ## 10pm, "Fritze" Pub! ] --- .right-column[ # Let's Keep Going Does your company deliver valuable software? Can I help you in the next few weeks? ##
schmonz.com/coach
] --- template: titleslide # DevOps Dojo
## Amitai Schleier ### [schmonz.com](https://schmonz.com)