SlideShare a Scribd company logo
Beyond TDD
Enabling Your Team to Continuously Deliver Software
Me
•   Fightin’ Texas Aggie

•   .Net and PHP Developer

•   UNIX and Windows Sysadmin

•   Senior Consultant at

    Improving Enterprises

•   chris@chrisweldon.net
Promotion
Promotion
•   @neraath
Promotion
•   @neraath

•   #adn12
Promotion
•   @neraath

•   #adn12

•   #tdd
Promotion
•   @neraath

•   #adn12

•   #tdd

•   #thisguyisawesome
Promotion
•   @neraath

•   #adn12

•   #tdd

•   #thisguyisawesome

•   #bestspeakerever
Promotion
•   @neraath

•   #adn12

•   #tdd

•   #thisguyisawesome

•   #bestspeakerever

•   #terrbilepresenter
Promotion
•   @neraath

•   #adn12

•   #tdd

•   #thisguyisawesome

•   #bestspeakerever

•   #terrbilepresenter

•   #worstpresentation
is hiring!
Overview
•   No code or demonstrations
•   TDD in your current environment
•   Continuous Integration
•   Continuous Delivery
•   Is it worth it?
•   Your next steps
Agile
in g
B e       Agile
“Working software is
the primary measure of
       progress”
Tests
Unit
Load
UI?
Performance
Unit
Unit
Testing
Unit
Testing
Unit leads to
Testing
Unit leads to
                 TDD
Testing
Unit leads to
                 TDD
Testing
Challenges Getting Past
         TDD
Who/What Broke My
     Build?
Integration
Integration
You Don’t See the Forest thru the Trees
Code Quality
Coding Standards
using System;

namespace BeyondTDD
{
   public class StringUtils
   {
      /// <summary>
      /// Strips double quotes from the provided <paramref name="sourceString" />.
      /// </summary>
      /// <param name="sourceString">The source to strip quotes from.</param>
      /// <returns>A string without quotes.</returns>
      public string StripQuotes(string sourceString)
      {
        if (string.IsNullOrEmpty(sourceString))
          throw new ArgumentNullException("sourceString");
        return sourceString.Replace('"', string.Empty);
      }
   }
}
using System;

namespace BeyondTDD
{
    public class StringUtils
    {


        /// <summary>
        /// Strips double quotes from the provided <paramref name="sourceString" />.
        /// </summary>
        public string StripQuotes(string sourceString) {
            if (sourceString == null) {
                throw new ArgumentNullException("sourceString");
            }
            return sourceString.Replace('"', "");
        }


        // Look at all the spaces, ma!

    }
}
using System;

namespace BeyondTDD {
public class StringUtils
{

/*** I had to change this method cause I'm a n00b.
   public string StripQuotes(string sourceString)
    {
        foreach(char c in sourceString) {
            if (c == '"')
            { sourceString[c] == ""; }
        }

                 return sourceString;
         }
*/

             // comments? what comments? this makes sense, right?
             public string StripQuotes(string sourceString)
     {
                if (sourceString == null)
                    {
                    //throw new ArgumentNullException("sourceString");
                    // I <3 Exception more than anything else.
                    throw new Exception("sourceString");
                }


                return sourceString.Replace('"', "");
} } }
I will hunt you down and shoot you like a duck dog.
Security


             srsly?
           what hacker
           wears a tie?
Creating and Deploying
 a Releasable Package
The Feedback Loop is
    Wide Open
How to Improve?
Continuous Integration
CI is a Practice
CI is a Practice

•   Integrate now, and frequently, rather than
    at the end of development
•   Smaller surface area for integration
    problems
    •   Devs can rapidly fix when they occur
•   Reduces “Integration Hell”
Martin Fowler
Practical CI
involves Tools
What do you need?
                            Build Server Accessible by
Source Control
                                   Entire Team

                                 Your Shell Scripts




       Commit to
trunk / master / mainline
         often
What do you need?
•   Automate your build
    •   Manual steps increases risk of failure
•   Make your build self-testing
    •   Writing unit tests is not enough
    •   Must be able to execute tests with a
        single command
What does it do?
What does it do?

Runs Tests
What does it do?

Runs Tests
What does it do?
               Generates
Runs Tests
             Documentation
What does it do?
               Generates
Runs Tests
             Documentation
What does it do?
               Generates
Runs Tests                   Quality Analysis
             Documentation
What does it do?
               Generates
Runs Tests                   Quality Analysis
             Documentation
What does it do?
What does it do?
What does it do?
               Integrates
                projects
What does it do?
                          Integrates
                           projects



Project Status
  is Visible
    to the
     Team
What does it do?
                          Integrates
                           projects



Project Status
  is Visible
    to the
     Team
“Fail Fast”
“Fail Fast”
This Closes our Feedback Loop
“Fail Fast”
•   Every commit (to the trunk) should be
    built
•   Keep the build fast
•   Notify (and make visible to) the entire
    team
    •   Intrusively notify the team of failures
•   Make sure to fix the build after it’s broken
Word to the Wise: Don’t Break the Build!
Other CI
         Considerations
•   Repeatable & reliable
•   Should be able to run the same build
    process locally
•   Break up large testing suites
    •   Remember, “Fail Fast”
If it’s difficult or painful,




do it more often.
Continuous Delivery
Continuous Delivery is
developing in such a way that
 software is always ready for
           release.
More on Being Agile
More on Being Agile
More on Being Agile

“Our highest priority is to satisfy the customer through
  early and continuous delivery of valuable software.”
More on Being Agile

“Our highest priority is to satisfy the customer through
  early and continuous delivery of valuable software.”
Users Drive Your Value
      Much like beauty, value is
    in the eyes of the beholder.
Get In Front of Users
        Sooner
The “Last Mile” Problem

“The further apart your releases are, the more risk you
        introduce that the changes are wrong.”
                        - Jez Humble
Strategies
Minimum Viable Product
Do the minimum
 amount of work
    necessary
Get in front of users
  immediately
Usage Patterns
Measure Conversion /
Behavior Expectations
Why?

•   We want constant feedback
    •   How else do we know what we’re doing
        is valuable?
•   Constant testing and improving our
    delivery process
What about Large
   Features?
Incomplete Features
Incomplete Features

•   Sometimes a feature is just too big
Incomplete Features

•   Sometimes a feature is just too big
    •   Incomplete features across releases
Incomplete Features

•   Sometimes a feature is just too big
    •   Incomplete features across releases
•   Ship it anyways!
Incomplete Features

•   Sometimes a feature is just too big
    •   Incomplete features across releases
•   Ship it anyways!
    •   Beware the Beta
Incomplete Features

•   Sometimes a feature is just too big
    •   Incomplete features across releases
•   Ship it anyways!
    •   Beware the Beta

    •   Solution: Feature Toggles
Feature Toggles
Feature Toggles
Feature Toggles
Feature Toggles
Feature Toggles
Clear the Delivery Path
•   MVP helps to make the team think about going to
    production as soon as possible

•   Deal with Production Gates

    •   Work to cut, simplify, or work around
        organizational red tape

    •   Find “creative solutions” that satisfy everyone
        while emphasizing the business goals
Everybody has
responsibility for the
   release process
DBAs          UX          QA



          Everybody has
      responsibility for the
         release process
Operations   Developers   Managers
Everyone’s
       Responsibilities

•   How do I automate the testing and
    validation after deploying?
•   How do I make it easier for the team to
    release?
Developer
       Responsibilities

•   How do I keep my software releasable?
•   What does it take to deploy my software?
DBA Responsibilities


•   How do I automate schema deployments?
•   How do I give the build server autonomy
    to deploy?
Ops Responsibilities

•   How do I want the software to be
    deployed?
•   How do I give the build server autonomy
    to deploy?
Tester Responsibilities


•   Did the automated deployment succeed?
    •   This is not the same as testing software.
Deploy
Deploy

•   Use the same mechanism for every
    environment
•   Should be simple
•   For products, use the same mechanisms as
    your customers
Deployment for SaaS

•   FTP/SCP
•   PowerShell
•   Shell Scripting
•   MSBuild
•   MSI/Installer Packages
Deployment for
          Products

•   Windows Installers
    •   Built-in, InstallShield, Wise,VISE, etc.
•   Installer (Mac OS)
Deployment Quality
•   Important to establish trust
•   End-to-end functional tests become more
    valuable
    •   Behavior-Driven Development helps to
        realize this
•   Other quality metrics become just as useful
    •   Performance, compatibility, security
Deploy

•   When you’ve deployed, have automated
    smoke tests validate a successful
    deployment
•   If something’s wrong:
    •   Turn off the feature or rollback
    •   Don’t “hack” a fix
If it’s difficult or painful,




do it more often.
Is it worth it?
•   By removing barriers, rehearsing, and
    continuously improving the release
    process, the risk of a release is reduced
    •   Becomes a regular occurrence rather
        than a traumatic procedure
•   Everyone is involved in making the release
    process more automated & efficient
Is it worth it?

•   Feedback determines the viability of your
    feature
    •   Increases confidence when it’s right
    •   Decreases cost when it’s wrong
Moving Forward
•   Identify a single task
    •   Something that is particularly time
        consuming and/or painful
•   Automate the task
•   Start collecting metrics
•   Build team confidence
Moving Forward
•   You need to talk to the business

•   Ask these questions:

    •   Would you like to set the release schedule?

    •   Would you like to minimize risk during deployments?

    •   Would you like to maximize investment on features
        our customers really want?

•   Be sure to alert them of the up-front investment
    required!
Moving Forward


•   Need help?
    •   After the talk, or after hours party
    •   askanagilist@improvingenterprises.com
Questions?
Thanks!


spkr8.com/neraath
References

•   http://www.informit.com/articles/article.aspx?p=1829417

•   http://www.informit.com/articles/article.aspx?p=1750200

•   http://kief.com/the-conflict-between-continuous-delivery-and-traditional-agile.html

•   http://techcrunch.com/2011/10/19/dropbox-minimal-viable-product/

More Related Content

What's hot

Scrum Plus Extreme Programming (XP) for Hyper Productivity
Scrum Plus Extreme Programming (XP) for Hyper ProductivityScrum Plus Extreme Programming (XP) for Hyper Productivity
Scrum Plus Extreme Programming (XP) for Hyper Productivity
Ron Quartel
 
Automate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaSAutomate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaS
Anand Bagmar
 
Continuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYCContinuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYC
Mike Brittain
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best Practices
Stephen Ritchie
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
Sandy Mamoli
 
QA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel LucentQA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel Lucent
AgileSparks
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons Learned
Ash Maurya
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
Matt Callanan
 
有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?
William Yeh
 
ALE15 The real value of a definition of done
ALE15  The real value of a definition of doneALE15  The real value of a definition of done
ALE15 The real value of a definition of done
Christian Vos
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
Filippo Zanella
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Dmitry Buzdin
 
FAST Agile
FAST AgileFAST Agile
FAST Agile
Ron Quartel
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
Naveen Kumar Singh
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
Kris Buytaert
 
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Mike McGarr
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
William Yeh
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users Anonymous
Dave Haeffner
 
Facilitating Release Planning Event
Facilitating Release Planning EventFacilitating Release Planning Event
Facilitating Release Planning Event
Ravi Tadwalkar
 
Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...
Peter Gfader
 

What's hot (20)

Scrum Plus Extreme Programming (XP) for Hyper Productivity
Scrum Plus Extreme Programming (XP) for Hyper ProductivityScrum Plus Extreme Programming (XP) for Hyper Productivity
Scrum Plus Extreme Programming (XP) for Hyper Productivity
 
Automate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaSAutomate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaS
 
Continuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYCContinuous Deployment at Etsy — TimesOpen NYC
Continuous Deployment at Etsy — TimesOpen NYC
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best Practices
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts ExplainedFlexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
 
QA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel LucentQA team transition to agile testing at Alcatel Lucent
QA team transition to agile testing at Alcatel Lucent
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons Learned
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 
有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?
 
ALE15 The real value of a definition of done
ALE15  The real value of a definition of doneALE15  The real value of a definition of done
ALE15 The real value of a definition of done
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
FAST Agile
FAST AgileFAST Agile
FAST Agile
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
 
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users Anonymous
 
Facilitating Release Planning Event
Facilitating Release Planning EventFacilitating Release Planning Event
Facilitating Release Planning Event
 
Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...
 

Viewers also liked

Finding practice tools
Finding practice toolsFinding practice tools
Finding practice tools
drakowski
 
How to search like a pro
How to search like a proHow to search like a pro
How to search like a pro
drakowski
 
Legal ethics online
Legal ethics onlineLegal ethics online
Legal ethics online
drakowski
 
REST Easy - Building RESTful Services in Zend Framework
REST Easy - Building RESTful Services in Zend FrameworkREST Easy - Building RESTful Services in Zend Framework
REST Easy - Building RESTful Services in Zend Framework
Chris Weldon
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkRESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
Bo-Yi Wu
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
Lorna Mitchell
 

Viewers also liked (6)

Finding practice tools
Finding practice toolsFinding practice tools
Finding practice tools
 
How to search like a pro
How to search like a proHow to search like a pro
How to search like a pro
 
Legal ethics online
Legal ethics onlineLegal ethics online
Legal ethics online
 
REST Easy - Building RESTful Services in Zend Framework
REST Easy - Building RESTful Services in Zend FrameworkREST Easy - Building RESTful Services in Zend Framework
REST Easy - Building RESTful Services in Zend Framework
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkRESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 

Similar to Beyond TDD: Enabling Your Team to Continuously Deliver Software

Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
Agile Montréal
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
David Funaro
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best Practices
Shiva Narayanaswamy
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
LB Denker
 
The Continuous delivery value - Funaro
The Continuous delivery value - FunaroThe Continuous delivery value - Funaro
The Continuous delivery value - Funaro
Codemotion
 
The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014
David Funaro
 
You build it, you run it
You build it, you run itYou build it, you run it
You build it, you run it
Skyscanner
 
Deployment is the new build
Deployment is the new buildDeployment is the new build
Deployment is the new build
Andrew Phillips
 
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
KMS Technology
 
AvenDATA and Devops
AvenDATA and DevopsAvenDATA and Devops
AvenDATA and Devops
Rajbahadur Rajput
 
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
anand003
 
Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating it
Farooq Ali
 
Keeping Your DevOps Transformation From Crushing Your Ops Capacity
Keeping Your DevOps Transformation From Crushing Your Ops Capacity Keeping Your DevOps Transformation From Crushing Your Ops Capacity
Keeping Your DevOps Transformation From Crushing Your Ops Capacity
Rundeck
 
Production-ready Software
Production-ready SoftwareProduction-ready Software
Production-ready Software
Uwe Friedrichsen
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
Einar Ingebrigtsen
 
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
DevOpsDays Tel Aviv
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Steve Mercier
 
Integration testing in enterprises using TaaS
Integration testing in enterprises using TaaS Integration testing in enterprises using TaaS
Integration testing in enterprises using TaaS
Anand Bagmar
 
Building QA Team that matters for an Agile World
Building QA Team that matters for an Agile WorldBuilding QA Team that matters for an Agile World
Building QA Team that matters for an Agile World
Maurizio Mancini
 
Don't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen EmeryDon't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen Emery
DevOpsDays Baltimore
 

Similar to Beyond TDD: Enabling Your Team to Continuously Deliver Software (20)

Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best Practices
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons LearnedTesting and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
 
The Continuous delivery value - Funaro
The Continuous delivery value - FunaroThe Continuous delivery value - Funaro
The Continuous delivery value - Funaro
 
The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014The Continuous delivery Value @ codemotion 2014
The Continuous delivery Value @ codemotion 2014
 
You build it, you run it
You build it, you run itYou build it, you run it
You build it, you run it
 
Deployment is the new build
Deployment is the new buildDeployment is the new build
Deployment is the new build
 
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
 
AvenDATA and Devops
AvenDATA and DevopsAvenDATA and Devops
AvenDATA and Devops
 
Agile development practices - How do they really work ?
Agile development practices - How do they really work ?Agile development practices - How do they really work ?
Agile development practices - How do they really work ?
 
Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating it
 
Keeping Your DevOps Transformation From Crushing Your Ops Capacity
Keeping Your DevOps Transformation From Crushing Your Ops Capacity Keeping Your DevOps Transformation From Crushing Your Ops Capacity
Keeping Your DevOps Transformation From Crushing Your Ops Capacity
 
Production-ready Software
Production-ready SoftwareProduction-ready Software
Production-ready Software
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
Integration testing in enterprises using TaaS
Integration testing in enterprises using TaaS Integration testing in enterprises using TaaS
Integration testing in enterprises using TaaS
 
Building QA Team that matters for an Agile World
Building QA Team that matters for an Agile WorldBuilding QA Team that matters for an Agile World
Building QA Team that matters for an Agile World
 
Don't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen EmeryDon't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen Emery
 

More from Chris Weldon

Keat presentation
Keat presentationKeat presentation
Keat presentation
Chris Weldon
 
SOLID - Not Just a State of Matter, It's Principles for OO Propriety
SOLID - Not Just a State of Matter, It's Principles for OO ProprietySOLID - Not Just a State of Matter, It's Principles for OO Propriety
SOLID - Not Just a State of Matter, It's Principles for OO Propriety
Chris Weldon
 
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
Chris Weldon
 
Unit Testing in SharePoint 2010
Unit Testing in SharePoint 2010Unit Testing in SharePoint 2010
Unit Testing in SharePoint 2010
Chris Weldon
 
IoC with PHP
IoC with PHPIoC with PHP
IoC with PHP
Chris Weldon
 
PHP & MVC
PHP & MVCPHP & MVC
PHP & MVC
Chris Weldon
 

More from Chris Weldon (6)

Keat presentation
Keat presentationKeat presentation
Keat presentation
 
SOLID - Not Just a State of Matter, It's Principles for OO Propriety
SOLID - Not Just a State of Matter, It's Principles for OO ProprietySOLID - Not Just a State of Matter, It's Principles for OO Propriety
SOLID - Not Just a State of Matter, It's Principles for OO Propriety
 
SOLID Principles
SOLID PrinciplesSOLID Principles
SOLID Principles
 
Unit Testing in SharePoint 2010
Unit Testing in SharePoint 2010Unit Testing in SharePoint 2010
Unit Testing in SharePoint 2010
 
IoC with PHP
IoC with PHPIoC with PHP
IoC with PHP
 
PHP & MVC
PHP & MVCPHP & MVC
PHP & MVC
 

Recently uploaded

Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 

Recently uploaded (20)

Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 

Beyond TDD: Enabling Your Team to Continuously Deliver Software

  • 1. Beyond TDD Enabling Your Team to Continuously Deliver Software
  • 2. Me • Fightin’ Texas Aggie • .Net and PHP Developer • UNIX and Windows Sysadmin • Senior Consultant at Improving Enterprises • chris@chrisweldon.net
  • 4. Promotion • @neraath
  • 5. Promotion • @neraath • #adn12
  • 6. Promotion • @neraath • #adn12 • #tdd
  • 7. Promotion • @neraath • #adn12 • #tdd • #thisguyisawesome
  • 8. Promotion • @neraath • #adn12 • #tdd • #thisguyisawesome • #bestspeakerever
  • 9. Promotion • @neraath • #adn12 • #tdd • #thisguyisawesome • #bestspeakerever • #terrbilepresenter
  • 10. Promotion • @neraath • #adn12 • #tdd • #thisguyisawesome • #bestspeakerever • #terrbilepresenter • #worstpresentation
  • 12. Overview • No code or demonstrations • TDD in your current environment • Continuous Integration • Continuous Delivery • Is it worth it? • Your next steps
  • 13. Agile
  • 14. in g B e Agile
  • 15. “Working software is the primary measure of progress”
  • 16. Tests
  • 17. Unit
  • 18. Load
  • 19. UI?
  • 21. Unit
  • 25. Unit leads to TDD Testing
  • 26. Unit leads to TDD Testing
  • 30. Integration You Don’t See the Forest thru the Trees
  • 33. using System; namespace BeyondTDD { public class StringUtils { /// <summary> /// Strips double quotes from the provided <paramref name="sourceString" />. /// </summary> /// <param name="sourceString">The source to strip quotes from.</param> /// <returns>A string without quotes.</returns> public string StripQuotes(string sourceString) { if (string.IsNullOrEmpty(sourceString)) throw new ArgumentNullException("sourceString"); return sourceString.Replace('"', string.Empty); } } }
  • 34. using System; namespace BeyondTDD { public class StringUtils { /// <summary> /// Strips double quotes from the provided <paramref name="sourceString" />. /// </summary> public string StripQuotes(string sourceString) { if (sourceString == null) { throw new ArgumentNullException("sourceString"); } return sourceString.Replace('"', ""); } // Look at all the spaces, ma! } }
  • 35. using System; namespace BeyondTDD { public class StringUtils { /*** I had to change this method cause I'm a n00b. public string StripQuotes(string sourceString) { foreach(char c in sourceString) { if (c == '"') { sourceString[c] == ""; } } return sourceString; } */ // comments? what comments? this makes sense, right? public string StripQuotes(string sourceString) { if (sourceString == null) { //throw new ArgumentNullException("sourceString"); // I <3 Exception more than anything else. throw new Exception("sourceString"); } return sourceString.Replace('"', ""); } } }
  • 36. I will hunt you down and shoot you like a duck dog.
  • 37.
  • 38. Security srsly? what hacker wears a tie?
  • 39. Creating and Deploying a Releasable Package
  • 40. The Feedback Loop is Wide Open
  • 43. CI is a Practice
  • 44. CI is a Practice • Integrate now, and frequently, rather than at the end of development • Smaller surface area for integration problems • Devs can rapidly fix when they occur • Reduces “Integration Hell”
  • 45.
  • 48. What do you need? Build Server Accessible by Source Control Entire Team Your Shell Scripts Commit to trunk / master / mainline often
  • 49. What do you need? • Automate your build • Manual steps increases risk of failure • Make your build self-testing • Writing unit tests is not enough • Must be able to execute tests with a single command
  • 51. What does it do? Runs Tests
  • 52. What does it do? Runs Tests
  • 53. What does it do? Generates Runs Tests Documentation
  • 54. What does it do? Generates Runs Tests Documentation
  • 55. What does it do? Generates Runs Tests Quality Analysis Documentation
  • 56. What does it do? Generates Runs Tests Quality Analysis Documentation
  • 59. What does it do? Integrates projects
  • 60. What does it do? Integrates projects Project Status is Visible to the Team
  • 61. What does it do? Integrates projects Project Status is Visible to the Team
  • 63. “Fail Fast” This Closes our Feedback Loop
  • 64. “Fail Fast” • Every commit (to the trunk) should be built • Keep the build fast • Notify (and make visible to) the entire team • Intrusively notify the team of failures • Make sure to fix the build after it’s broken
  • 65.
  • 66. Word to the Wise: Don’t Break the Build!
  • 67.
  • 68. Other CI Considerations • Repeatable & reliable • Should be able to run the same build process locally • Break up large testing suites • Remember, “Fail Fast”
  • 69. If it’s difficult or painful, do it more often.
  • 71. Continuous Delivery is developing in such a way that software is always ready for release.
  • 72. More on Being Agile
  • 73. More on Being Agile
  • 74. More on Being Agile “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
  • 75. More on Being Agile “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
  • 76. Users Drive Your Value Much like beauty, value is in the eyes of the beholder.
  • 77. Get In Front of Users Sooner
  • 78. The “Last Mile” Problem “The further apart your releases are, the more risk you introduce that the changes are wrong.” - Jez Humble
  • 80.
  • 81.
  • 83. Do the minimum amount of work necessary
  • 84.
  • 85. Get in front of users immediately
  • 86.
  • 89.
  • 90.
  • 91.
  • 92. Why? • We want constant feedback • How else do we know what we’re doing is valuable? • Constant testing and improving our delivery process
  • 93. What about Large Features?
  • 95. Incomplete Features • Sometimes a feature is just too big
  • 96. Incomplete Features • Sometimes a feature is just too big • Incomplete features across releases
  • 97. Incomplete Features • Sometimes a feature is just too big • Incomplete features across releases • Ship it anyways!
  • 98. Incomplete Features • Sometimes a feature is just too big • Incomplete features across releases • Ship it anyways! • Beware the Beta
  • 99. Incomplete Features • Sometimes a feature is just too big • Incomplete features across releases • Ship it anyways! • Beware the Beta • Solution: Feature Toggles
  • 105. Clear the Delivery Path • MVP helps to make the team think about going to production as soon as possible • Deal with Production Gates • Work to cut, simplify, or work around organizational red tape • Find “creative solutions” that satisfy everyone while emphasizing the business goals
  • 106. Everybody has responsibility for the release process
  • 107. DBAs UX QA Everybody has responsibility for the release process Operations Developers Managers
  • 108. Everyone’s Responsibilities • How do I automate the testing and validation after deploying? • How do I make it easier for the team to release?
  • 109. Developer Responsibilities • How do I keep my software releasable? • What does it take to deploy my software?
  • 110. DBA Responsibilities • How do I automate schema deployments? • How do I give the build server autonomy to deploy?
  • 111. Ops Responsibilities • How do I want the software to be deployed? • How do I give the build server autonomy to deploy?
  • 112. Tester Responsibilities • Did the automated deployment succeed? • This is not the same as testing software.
  • 113. Deploy
  • 114. Deploy • Use the same mechanism for every environment • Should be simple • For products, use the same mechanisms as your customers
  • 115. Deployment for SaaS • FTP/SCP • PowerShell • Shell Scripting • MSBuild • MSI/Installer Packages
  • 116. Deployment for Products • Windows Installers • Built-in, InstallShield, Wise,VISE, etc. • Installer (Mac OS)
  • 117. Deployment Quality • Important to establish trust • End-to-end functional tests become more valuable • Behavior-Driven Development helps to realize this • Other quality metrics become just as useful • Performance, compatibility, security
  • 118. Deploy • When you’ve deployed, have automated smoke tests validate a successful deployment • If something’s wrong: • Turn off the feature or rollback • Don’t “hack” a fix
  • 119. If it’s difficult or painful, do it more often.
  • 120. Is it worth it? • By removing barriers, rehearsing, and continuously improving the release process, the risk of a release is reduced • Becomes a regular occurrence rather than a traumatic procedure • Everyone is involved in making the release process more automated & efficient
  • 121. Is it worth it? • Feedback determines the viability of your feature • Increases confidence when it’s right • Decreases cost when it’s wrong
  • 122. Moving Forward • Identify a single task • Something that is particularly time consuming and/or painful • Automate the task • Start collecting metrics • Build team confidence
  • 123. Moving Forward • You need to talk to the business • Ask these questions: • Would you like to set the release schedule? • Would you like to minimize risk during deployments? • Would you like to maximize investment on features our customers really want? • Be sure to alert them of the up-front investment required!
  • 124. Moving Forward • Need help? • After the talk, or after hours party • askanagilist@improvingenterprises.com
  • 127. References • http://www.informit.com/articles/article.aspx?p=1829417 • http://www.informit.com/articles/article.aspx?p=1750200 • http://kief.com/the-conflict-between-continuous-delivery-and-traditional-agile.html • http://techcrunch.com/2011/10/19/dropbox-minimal-viable-product/

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. Finish at 90 seconds\n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. Finish at 4:00\n
  21. Finish at 4:00\n
  22. Finish at 4:00\n
  23. Finish at 4:00\n
  24. \n
  25. \n
  26. Finish at 5:30\n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. Finish no later than 10:00\n
  38. \n
  39. NO LATER THAN 12:00\n
  40. \n
  41. \n
  42. Finish at 21:00\n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. Finish at 15:30\n
  51. Finish at 15:30\n
  52. Finish at 15:30\n
  53. Finish at 15:30\n
  54. \n
  55. \n
  56. Finish at 19:00\n
  57. \n
  58. \n
  59. Finish at 23:00\n
  60. Ask audience what Continuous Delivery is. 3 responses max. \nStop at 24:00. DO NOT ASK FOR AUDIENCE PARTICIPATION IF PAST 24:00.\n
  61. Finish at 24:30\n
  62. \n
  63. \n
  64. \n
  65. \n
  66. Finish at 26:30\nTalk about needing to understand value.\n
  67. \n
  68. Finish at 27:30\n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. Finish at 32:00\n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. Finish at 35:00\n
  88. Finish at 35:00\n
  89. Finish at 35:00\n
  90. Finish at 35:00\n
  91. IF STARTING AFTER 35:00, MOVE QUICK\n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. Finish at 36:00\n
  103. \n
  104. \n
  105. SKIP IF AFTER 37:30\n
  106. SKIP IF AFTER 38:00\n
  107. Finish at 39:00\n
  108. \n
  109. Finish at 40:00\n
  110. \n
  111. Finish at 42:00\n
  112. \n
  113. \n
  114. Finish at 45:00\n
  115. \n
  116. \n
  117. \n