SlideShare a Scribd company logo
Scaling Communication
             via Continuous Integration



Th e Fi n di ngs Th us Fa r!
PHP UK Conference 2012: Scaling Communication via Continuous Integration
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...

                 Apply Quality
Integration                            Anyone
                   Process

                Push New Code
Deployment                             Anyone
                To Production

                  Release New
  Delivery                             Product
                    Feature
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

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
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
More To Do

Code Reviews, Second Pair of Eyes

Entire Coding Standard in CI

Mess Detector Standards

PHPUnit --strict Standards

PHPUnit Testing Standards

...
Developer Culture


“Always Be Pushing”

Developer Happiness

We trust people
PHP UK Conference 2012: Scaling Communication via Continuous Integration
Company
 etsy.com

About Our Craft
 codeascraft.com

More From Me
 elblinkin.info

More Related Content

KEY
phpDay 2012: Scaling Communication via Continuous Integration
PDF
100% Code Coverage in Real World Software
PDF
Introduction to-thucydides
PPTX
Distributed agile testing_for_enterprises
KEY
Testing and DevOps Culture: Lessons Learned
KEY
Essential practices and thinking tools for Agile Adoption
PDF
Testing in an Open Source Middleware Platform Space The WSO2 Way.
PDF
Core Principles Of Ci
phpDay 2012: Scaling Communication via Continuous Integration
100% Code Coverage in Real World Software
Introduction to-thucydides
Distributed agile testing_for_enterprises
Testing and DevOps Culture: Lessons Learned
Essential practices and thinking tools for Agile Adoption
Testing in an Open Source Middleware Platform Space The WSO2 Way.
Core Principles Of Ci

Similar to PHP UK Conference 2012: Scaling Communication via Continuous Integration (20)

PPTX
Agile Testing: The Role Of The Agile Tester
PDF
Continuous Integration testing based on Selenium and Hudson
PDF
Open Source tools in Continuous Integration environment (case study for agil...
PPTX
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PDF
Flexing your Agile Muscle - Agile Technical Concepts Explained
PPTX
What does it mean to us by agile
PDF
Audrys Kažukauskas - Introduction into Extreme Programming
PDF
RACI Team Practice
PPTX
Creating change from within - Agile Practitioners 2012
PPTX
Integreation
PDF
Vaidyanathan Ramalingam Trade Off Economics In Testing Conference Speech
PDF
Vaidyanathan Ramalingam Agile Testing Leadership Lessons Softec 2 July2011
PDF
Vaidyanathan Ramalingam Agile Testing Conference Speech
PDF
Vaidyanathan Ramalingam Testing Checklist Conference Speech
PDF
Vaidyanathan Ramalingam Waterfall Vs Agile Testing Conference Speech
PDF
Vaidyanathan Ramalingam Software Testing Eco System Conference Speech
PDF
Vaidyanathan Ramalingam Silicon India Testing Conference 2 July2011 Speech
PDF
PDF
Vaidyanathan Ramalingam Rca In Agile Conference Speech
PDF
Vaidyanathan Ramalingam Rca In Testing Conference Speech
Agile Testing: The Role Of The Agile Tester
Continuous Integration testing based on Selenium and Hudson
Open Source tools in Continuous Integration environment (case study for agil...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
Flexing your Agile Muscle - Agile Technical Concepts Explained
What does it mean to us by agile
Audrys Kažukauskas - Introduction into Extreme Programming
RACI Team Practice
Creating change from within - Agile Practitioners 2012
Integreation
Vaidyanathan Ramalingam Trade Off Economics In Testing Conference Speech
Vaidyanathan Ramalingam Agile Testing Leadership Lessons Softec 2 July2011
Vaidyanathan Ramalingam Agile Testing Conference Speech
Vaidyanathan Ramalingam Testing Checklist Conference Speech
Vaidyanathan Ramalingam Waterfall Vs Agile Testing Conference Speech
Vaidyanathan Ramalingam Software Testing Eco System Conference Speech
Vaidyanathan Ramalingam Silicon India Testing Conference 2 July2011 Speech
Vaidyanathan Ramalingam Rca In Agile Conference Speech
Vaidyanathan Ramalingam Rca In Testing Conference Speech
Ad

More from LB Denker (6)

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

Recently uploaded (20)

PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Getting Started with Data Integration: FME Form 101
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
1. Introduction to Computer Programming.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Big Data Technologies - Introduction.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
A Presentation on Artificial Intelligence
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
Teaching material agriculture food technology
Digital-Transformation-Roadmap-for-Companies.pptx
MYSQL Presentation for SQL database connectivity
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Advanced methodologies resolving dimensionality complications for autism neur...
A comparative analysis of optical character recognition models for extracting...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Getting Started with Data Integration: FME Form 101
Network Security Unit 5.pdf for BCA BBA.
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Programs and apps: productivity, graphics, security and other tools
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
1. Introduction to Computer Programming.pptx
Spectral efficient network and resource selection model in 5G networks
Big Data Technologies - Introduction.pptx
Assigned Numbers - 2025 - Bluetooth® Document
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Accuracy of neural networks in brain wave diagnosis of schizophrenia
A Presentation on Artificial Intelligence
Diabetes mellitus diagnosis method based random forest with bat algorithm
Teaching material agriculture food technology

PHP UK Conference 2012: Scaling Communication via Continuous Integration

Editor's Notes