SlideShare a Scribd company logo
Scaling Communication
             via Continuous Integration



Th e Fi n di ngs Th us Fa r!
LB Denker
Anthropologist of
Developer Culture
     @ Etsy
Anthropologist?!?
    ... only sort of ...
Methods of an
          Anthropologist

Participant
Observation

Interviews

Surveys
Developer Culture


“The most important
component of The Etsy Way
is culture and that is as
difficult to teach as it is
important”
       — Chad Dickerson, CEO
Acquiring Culture



“... humans acquire culture through the
learning processes of enculturation and
socialization ...”
Developer Culture


“Always Be Pushing”

Developer Happiness

We trust people
“Anthropology demands the open-mindedness
with which one must look and listen, record in
astonishment and that which one would not
have been able to guess.”

                            — Margaret Mead
Deployinating All the Pushes


One Button (stage)

Logging

Monitoring

No Child Safety Locks
Anyone Can Deploy!
   Board Members Included
20 Minutes or Less
The Power of Continuous Deployment
Continuous What?!?

Continuous...   Unceremoniously...   Initiated By...

                Push New Code
Deployment                             Anyone
                To Production

                 Apply Quality
Integration                            Anyone
                   Process

                  Release New
  Delivery                             Product
                    Feature
Continuous Deployment
Continuous Integration
Continuous Delivery ???
Continuous Delivery ???
Continuous Delivery ???
Communication Theory

1. The Basic Elements of Communication
 Source                   Destination

 Sender                   Message

 Channel                  Feedback

 Receiver
2. Goal-Oriented Communication
Goals

“Always Be Pushing”

You Shouldn’t Push on Red

You Should Write Clean Tests

You Should Write Clean Code

Trust Everyone To Do The Right Thing
“Always Be Pushing”
                   Instilling Confidence



Th e Fi rs t In te r v ie ws
Confidence


Continuous Deployment is...

 Scary

 A Safety Net

Depends on Your Point of View
Branching was
  Too Costly
Always Ship Trunk

Branch in Code, not
in Version Control

Write Tools to Work
with Trunk

Do not Write Tools to
Work with Branches

Write Transparent
Tools
Quality Process was
Coupled to Pipeline
‘Try’ Before You Commit

Ability to Run Tests in
CI Environment

Actually Continuous
Integration!

Community Enforced!

No Excuses!
Confidence Boost!
The Impact of Knowing that Changes Pass the
     Tests Before Getting in the Pipeline
Why ‘Try’?


No more clogging the
pipeline

CI in Pipeline was
Final Sanity Check
Goal
 Achieved
“Always Be Pushing”
You Should Not
            Push on Red
   De-Noising the Communication Channel



Pa rt ic ip a n t Ob se r v ati on s over IRC
Where We Started From...

                        Number of
           Total Time               Flakiness    Support
                          Tests


            ~30                                 Practically
 Legacy                 Unknown      ~50%
           Minutes                                None


             ~8
Platform                 ~1200       ~20%       Small Core
           Minutes
A Bunch of Noise

Need to Know How Much is Being Covered

Need to Know What is Being Tested

Need to Be Able to Detect Test Runner Errors

Need to Have Actionable Test Results
(Ownership)
De-Noise

                        Number of
           Total Time               Flakiness    Support
                          Tests


            ~30                                 Practically
 Legacy                 Unknown      ~50%
           Minutes                                None


             >8
Platform                 >1200        ~5%       Small Core
           Minutes
Goal
Achieved
You Should Not
 Push on Red
You Should
       Write Clean Tests
                Writing Simple Tests
               Isn’t Always So Simple

Alter n ati ve Te ach ing Met h od s
How To Improve Test Quality


Teach Them!

But People Need to
Want to Learn
Prove It!
                             Number of     Average
                 Test Time
                               Tests     Time per Test

Platform Tests     7:01        2332      0.18 seconds

                                           0.00337
  Unit Tests       0:10        2432
                                           seconds

 DBUnit Tests     0:32          70       0.09 seconds

December 2010
Test Classification

PHPUnit @group

PHPUnit XML Configuration + Some Pake

Split By Point of Error

 ie. cache, database, network, sleep, time, etc.

Flaky Test Silo
Goal
Achieved
  You Should
Write Clean Tests
Too Much
 To Read
   ... and to
 Communicate
How Do Communicate This?

E-Mail? Nope!

Wiki? Nope!

Blog? Nope!

Simplify Jenkins UI?
YES!
Silent Green
Taking a Chapter Out of xUnit Principles
Jenkins Plugins


Master Project Plugin

Triggering User Plugin

Deployinator Plugin


               * All Available on github.com/etsy
You Should
         Write Clean Code
              Not Everyone
 Can Read (and Follow) a Coding Standard

En a bl ing C ul tu re In fl ue n ce
Clean Code


Start with Syntax

Move to Style

Then to Design Level
PHP Lint


Run Locally

Run on Pre-Commit

Run on CI
Using CodeSniffer

Draft Coding Style Guidelines

Experiment With Various Sniffs

Discover Actual Coding Syntax Tendencies

Decide on Changes to Coding Style Guidelines

Create a Strategy on How to Get to Green
Work in
Progress
  You Should
Write Clean Code
Getting to Green


Send ‘Blame’ E-Mails

Use a Staging Job in Try

Do a Fix-It Competition
Trust Everyone
To Do The Right Thing
    Balancing Enforcement with Freedom



Fu tu re Wor k
Continuously Growing
  a Continuously Evolving Culture
Recently Done


Code Reviews, Second Pair of Eyes

PHPUnit --strict Standards

PHPUnit Testing Standards

Log All the Errors E_ALL | E_STRICT
More To Do


Entire Coding Standard in CI

Mess Detector Standards

More PHPUnit Testing Standards

...
Developer Culture


“Always Be Pushing”

Developer Happiness

We trust people
Company
 etsy.com

About Our Craft
 codeascraft.com

More From Me
 elblinkin.info
Ad

Recommended

PHP UK Conference 2012: Scaling Communication via Continuous Integration
PHP UK Conference 2012: Scaling Communication via Continuous Integration
LB Denker
 
Best pratice
Best pratice
Eugenio Romano
 
Testing and DevOps Culture: Lessons Learned
Testing and DevOps Culture: Lessons Learned
LB Denker
 
Distributed agile testing_for_enterprises
Distributed agile testing_for_enterprises
ThoughtWorks Studios
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
Steven Mak
 
Core Principles Of Ci
Core Principles Of Ci
OpenSource Connections
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
Declan Whelan
 
Agile testing for agile sparks kanban clients
Agile testing for agile sparks kanban clients
Yuval Yeret
 
Continuous integration (eng)
Continuous integration (eng)
Anatoliy Okhotnikov
 
Agile Acceptance testing with Fitnesse
Agile Acceptance testing with Fitnesse
ClareMcLennan
 
Continuous Integration testing based on Selenium and Hudson
Continuous Integration testing based on Selenium and Hudson
Zbyszek Mockun
 
Open Source tools in Continuous Integration environment (case study for agil...
Open Source tools in Continuous Integration environment (case study for agil...
suwalki24.pl
 
Turbocharge your automated tests with ci
Turbocharge your automated tests with ci
OpenSource Connections
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
Sandy Mamoli
 
Testing in an Open Source Middleware Platform Space The WSO2 Way.
Testing in an Open Source Middleware Platform Space The WSO2 Way.
WSO2
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Chris Weldon
 
Introduction To Continuous Integration
Introduction To Continuous Integration
Christopher Read
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
Agile Lietuva
 
High Performance Software Engineering Teams
High Performance Software Engineering Teams
Lars Thorup
 
Agile Manifesto & XP
Agile Manifesto & XP
Semen Arslan
 
extreme Programming
extreme Programming
Bilal Shah
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
Steve Lange
 
Automate your way to agility
Automate your way to agility
Yuval Yeret
 
Scaling Quality by Building it in - Agile Tour Ottawa 2017
Scaling Quality by Building it in - Agile Tour Ottawa 2017
Maurizio Mancini
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"
Peter Marshall
 
Integreation
Integreation
Sean Killeen
 
Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012
Dror Helper
 
Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?
Parasoft
 
Php|tek '12 It's More Than Just Style
Php|tek '12 It's More Than Just Style
LB Denker
 
Developer testing 201: When to Mock and When to Integrate
Developer testing 201: When to Mock and When to Integrate
LB Denker
 

More Related Content

Similar to phpDay 2012: Scaling Communication via Continuous Integration (20)

Continuous integration (eng)
Continuous integration (eng)
Anatoliy Okhotnikov
 
Agile Acceptance testing with Fitnesse
Agile Acceptance testing with Fitnesse
ClareMcLennan
 
Continuous Integration testing based on Selenium and Hudson
Continuous Integration testing based on Selenium and Hudson
Zbyszek Mockun
 
Open Source tools in Continuous Integration environment (case study for agil...
Open Source tools in Continuous Integration environment (case study for agil...
suwalki24.pl
 
Turbocharge your automated tests with ci
Turbocharge your automated tests with ci
OpenSource Connections
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
Sandy Mamoli
 
Testing in an Open Source Middleware Platform Space The WSO2 Way.
Testing in an Open Source Middleware Platform Space The WSO2 Way.
WSO2
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Chris Weldon
 
Introduction To Continuous Integration
Introduction To Continuous Integration
Christopher Read
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
Agile Lietuva
 
High Performance Software Engineering Teams
High Performance Software Engineering Teams
Lars Thorup
 
Agile Manifesto & XP
Agile Manifesto & XP
Semen Arslan
 
extreme Programming
extreme Programming
Bilal Shah
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
Steve Lange
 
Automate your way to agility
Automate your way to agility
Yuval Yeret
 
Scaling Quality by Building it in - Agile Tour Ottawa 2017
Scaling Quality by Building it in - Agile Tour Ottawa 2017
Maurizio Mancini
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"
Peter Marshall
 
Integreation
Integreation
Sean Killeen
 
Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012
Dror Helper
 
Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?
Parasoft
 
Agile Acceptance testing with Fitnesse
Agile Acceptance testing with Fitnesse
ClareMcLennan
 
Continuous Integration testing based on Selenium and Hudson
Continuous Integration testing based on Selenium and Hudson
Zbyszek Mockun
 
Open Source tools in Continuous Integration environment (case study for agil...
Open Source tools in Continuous Integration environment (case study for agil...
suwalki24.pl
 
Turbocharge your automated tests with ci
Turbocharge your automated tests with ci
OpenSource Connections
 
Flexing your Agile Muscle - Agile Technical Concepts Explained
Flexing your Agile Muscle - Agile Technical Concepts Explained
Sandy Mamoli
 
Testing in an Open Source Middleware Platform Space The WSO2 Way.
Testing in an Open Source Middleware Platform Space The WSO2 Way.
WSO2
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Chris Weldon
 
Introduction To Continuous Integration
Introduction To Continuous Integration
Christopher Read
 
Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
Agile Lietuva
 
High Performance Software Engineering Teams
High Performance Software Engineering Teams
Lars Thorup
 
Agile Manifesto & XP
Agile Manifesto & XP
Semen Arslan
 
extreme Programming
extreme Programming
Bilal Shah
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
Steve Lange
 
Automate your way to agility
Automate your way to agility
Yuval Yeret
 
Scaling Quality by Building it in - Agile Tour Ottawa 2017
Scaling Quality by Building it in - Agile Tour Ottawa 2017
Maurizio Mancini
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"
Peter Marshall
 
Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012
Dror Helper
 
Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?
Parasoft
 

More from LB Denker (6)

Php|tek '12 It's More Than Just Style
Php|tek '12 It's More Than Just Style
LB Denker
 
Developer testing 201: When to Mock and When to Integrate
Developer testing 201: When to Mock and When to Integrate
LB Denker
 
Developer testing 101: Become a Testing Fanatic
Developer testing 101: Become a Testing Fanatic
LB Denker
 
QC Merge 2012: Growing community
QC Merge 2012: Growing community
LB Denker
 
Are Your Tests Really Helping You?
Are Your Tests Really Helping You?
LB Denker
 
Php com con-2011
Php com con-2011
LB Denker
 
Php|tek '12 It's More Than Just Style
Php|tek '12 It's More Than Just Style
LB Denker
 
Developer testing 201: When to Mock and When to Integrate
Developer testing 201: When to Mock and When to Integrate
LB Denker
 
Developer testing 101: Become a Testing Fanatic
Developer testing 101: Become a Testing Fanatic
LB Denker
 
QC Merge 2012: Growing community
QC Merge 2012: Growing community
LB Denker
 
Are Your Tests Really Helping You?
Are Your Tests Really Helping You?
LB Denker
 
Php com con-2011
Php com con-2011
LB Denker
 
Ad

Recently uploaded (20)

FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Safe Software
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Safe Software
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
AI VIDEO MAGAZINE - June 2025 - r/aivideo
AI VIDEO MAGAZINE - June 2025 - r/aivideo
1pcity Studios, Inc
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Safe Software
 
Enabling BIM / GIS integrations with Other Systems with FME
Enabling BIM / GIS integrations with Other Systems with FME
Safe Software
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
FME for Distribution & Transmission Integrity Management Program (DIMP & TIMP)
Safe Software
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Safe Software
 
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Creating Inclusive Digital Learning with AI: A Smarter, Fairer Future
Impelsys Inc.
 
June Patch Tuesday
June Patch Tuesday
Ivanti
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Ad

phpDay 2012: Scaling Communication via Continuous Integration

Editor's Notes