SlideShare a Scribd company logo
1 of 55
integreation
  Get it Together.™
                      (Not really. Yet.)
OKAY, SO:
THE PROBLEM & WHAT’S BEHIND IT
                 THE SOLUTION
      *MY 12 STEPS ADVENTURE

                      * not what you’re thinking
the
problem
Uncertainty.
WHYYYYYYYYYYYYYYYYY?!?!?!?!
PEOPLE ARE   PROJECTS ARE    TECHNOLOGY IS
OPTIMISTIC     DEADLINED      REVOLUTIONARY
BUSY             RISKY          FLUCTUATING
DISTRACTED    HIGH STAKES         SPECIALIZED
HUMAN         JOB SECURITY    MADE BY PEOPLE
WHYYYYYYYYYYYYYYYYY?!?!?!?!
PEOPLE ARE   PROJECTS ARE      TECHNOLOGY IS
OPTIMISTIC       DEADLINED      REVOLUTIONARY
BUSY               RISKY          FLUCTUATING
DISTRACTED      HIGH STAKES         SPECIALIZED
HUMAN           JOB SECURITY    MADE BY PEOPLE

CUSTOMERS ARE
THE SOURCE OF ALL JOY IN THE UNIVERSE
WHYYYYYYYYYYYYYYYYY?!?!?!?!
PEOPLE ARE   PROJECTS ARE    TECHNOLOGY IS
OPTIMISTIC     DEADLINED      REVOLUTIONARY
BUSY             RISKY          FLUCTUATING
DISTRACTED    HIGH STAKES         SPECIALIZED
HUMAN         JOB SECURITY    MADE BY PEOPLE

CUSTOMERS ARE ALL OF THE ABOVE.
THE SOURCE OF ALL JOY IN THE UNIVERSE
the
solution
process.
process is unemotional
           repeatable
           risk-averse
           cheap
           transparent
           trainable
           blameless
           consensus
The Joel Test
                    DO YOU:
• Use source control?        • Fix bugs first?
• Make builds in one step?   • Have a spec?
• Make daily builds?         • Have testers?
• Use a bug tracker?         • Do hallway tests?
1        2
                                   5

                               6
3
                                       7
        4
                      8

                          9
        12
                 11       10
1        2
                                   5

                               6
3
                                       7
        4
                      8

                          9
        12
                 11       10
1   2
        THAT’S BETTER.
DEVELOPERS are your code’s creators.   1
  Any Progress Starts Here.
SUBVERSION is your code’s historian.   2
   Stores Every Change
   Mediates Conflicts
   Tags Things For Reference
   Imagines New Paths


ALT: git, cvs, mercurial
1   2




3
TRAC is your code’s conscience.             3
  Thoughts on Changes
  Internal Issues
  Future Planning
  Wiki, Bug tracker, Repo Viewer


ALT: BugTracker.NET , BugZilla, 100s more
1       2




3

        4
CRUISECONTROL is your code’s brain.     4
  Processes Changes
  Collects Feedback From Components
  Oversees Operations



ALT: TeamCity, Team Foundation Server
1       2
                5



3

        4
MSBBUILD is your code’s birth.               5
  Brings code to Life by compiling it
  If this fails, your code doesn’t exist
  Is the equivalent of F5 in Visual Studio



ALT: Ant, NAnt
1       2
                    5

                6
3

        4
NUnit is your code’s physical fitness.   6
  Ensures that it works as expected inside
  Keeps Code Flexible and Strong
  Allows Code to Handle Change



ALT: xUnit, MSTest
1       2
                    5

                6
3
                        7
        4
NCOVER is your code’s gym teacher.      7
  Makes sure enough fitness is tested
  Helps spot weak points




ALT: EMMA, Cobertura, Clover
1       2
                        5

                    6
3
                            7
        4
                8
SPECFLOW is your code’s social skills.   8
  Tests code from outside perspective
  Tests multiple browsers / OSes
  Runs as NUnit Tests
  Makes use of Selenium and VMs
  Lets You Code to Requirements

ALT: Cucumber
1       2
                            5

                        6
3
                                7
        4
                8

                    9
FXCOP is your code’s…well, police officer.
                                      9
  Tests Against Common Coding Standards
  Logs Security / Practices Issues
  Configurable Strictness



ALT: cppcheck, Lint, Eclipse CODAN
1       2
                             5

                         6
3
                                 7
        4
                8

                    9

                    10
STYLECOP is your code’s school uniform.   10
   Enforces Code Formatting Rules
   Similar Looking Code is Readable For All




ALT: checkstyle, PerlTidy
1       2
                                  5

                              6
3
                                      7
        4
                     8

                         9
                11       10
NUGET is your code’s manifesto.        11
  Package of Your Code and its Aims
  Includes Environment Variables, etc.
  Goal: Easily be disseminated elsewhere
1        2
                                   5

                               6
3
                                       7
        4
                      8

                          9
        12
                 11       10
OCTOPUS is your code’s manifesto’s publisher.   12
  Knows its Audience (Servers)
  Translates the Manifesto / Variables
  Puts Your Code Into the Wild



ALT: Enhydra Octopus (Java)
1        2
                                   5

                               6
3
                                       7
        4
                      8

                          9
        12
                 11       10
The Joel Test
                  DO YOU:
 Use source control?       Fix bugs first?
 Make builds in one step?  Have a spec?
 Make daily builds?        Have testers?
 Use a bug tracker?        Do hallway tests?
OKAY, SO:
WHAT DO WE GET?
Quality.
Anything goes wrong? Write a bug w/failing test & make it pass.




                                       Order.
            Code author traceability Tested on Multiple OSes      Code and changes are documented
  User Testing & QA is automated                                  Our code knows how to work around its environment(s)
                                                                                    Metrics on times / performance
Tested for Security & Best Practices
                                                                                  Changes handled gracefully
Pull any version and build it anytime.
                                                                                       Can see who broke the build
Permissions are baked into deployment    Flexibility to change without breaking Spec tests test interaction with existing apps
        Tested on multiple browsers through spec tests Spec tests show code meets requirements
                              Bugs are now just failing tests, documented in the tracker
              Code is tested internally & externally      Environment differences are handled & scripted
HAVING A PROCESS
MEANS MORE TIME BUILDING
    YOUR CODE
HAVING A PROCESS
MEANS MORE TIME BUILDING
  YOUR PRODUCT
HAVING A PROCESS
MEANS MORE TIME BUILDING
YOUR CUSTOMERS
HAVING A PROCESS
MEANS MORE TIME BUILDING
 YOUR COMPANY
HAVING A PROCESS
MEANS MORE TIME BUILDING
     YOUR^SELF
          AWESOME
thanks!
Technologies Used
      Subversion    subversion.apache.org
     TortoiseSVN    tortoisesvn.net
             Trac   trac.edgewall.org
CruiseControl.NET   cruisecontrolnet.org
          MSBuild   msdn.microsoft.com/en-us/library/0k6kkbsd.aspx
            NUnit   nunit.org
           NCover   ncover.com
        SpecFlow    specflow.org
        Selenium    seleniumhq.org
            FxCop   microsoft.com/download/en/details.aspx?id=6544
         StyleCop   stylecop.codeplex.com
       VirtualBox   virtualbox.org
            NuGet   nuget.codeplex.com
         Octopus    octopusdeploy.com
References / Credits / Inspirations
• Jeff Atwood, CodingHorror, “The ‘Works on My Machine’ Certification Program”
     – http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html
• Joel Spolsky, FogCreek, “The Joel Test”
     – http://www.joelonsoftware.com/articles/fog0000000043.html
• Zach Holman, “Slide Design For Developers”
     – http://zachholman.com/posts/slide-design-for-developers/
• Zach Holman, “How GitHub Uses GitHub to Build GitHub”
     – http://zachholman.com/talk/how-github-uses-github-to-build-github
• All logos are the property of their respective owners/companies
• “Winner” image
     – http://kjrmusic.blogspot.com/2010_07_01_archive.html
integreation
    (fin)

More Related Content

What's hot

Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009Andrew Shafer
 
JBoss Forge - Breaking new ground in developer productivity
JBoss Forge - Breaking new ground in developer productivityJBoss Forge - Breaking new ground in developer productivity
JBoss Forge - Breaking new ground in developer productivityVineet Reynolds
 
Reporting bugs: Errors Made and Lessons Learned
Reporting bugs: Errors Made and Lessons LearnedReporting bugs: Errors Made and Lessons Learned
Reporting bugs: Errors Made and Lessons LearnedPeter Sabev
 
Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureNeal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureThoughtworks
 
Постоянное тестирование интеграции
Постоянное тестирование интеграцииПостоянное тестирование интеграции
Постоянное тестирование интеграцииSQALab
 
Lean Engineering. Applying Lean Principles to Building Experiences
Lean Engineering. Applying Lean Principles to Building ExperiencesLean Engineering. Applying Lean Principles to Building Experiences
Lean Engineering. Applying Lean Principles to Building ExperiencesBill Scott
 
11 best practices_for_peer_code_review
11 best practices_for_peer_code_review11 best practices_for_peer_code_review
11 best practices_for_peer_code_reviewSmartBear Software
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutzjazzman1980
 
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenhoO uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenhoIntel Software Brasil
 
David Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and RoadmapDavid Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and RoadmapDay Software
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt projectEyal Edri
 
Automated Reporting of GUI Design Violations for Mobile Apps
Automated Reporting of GUI Design Violations for Mobile AppsAutomated Reporting of GUI Design Violations for Mobile Apps
Automated Reporting of GUI Design Violations for Mobile AppsKevin Moran
 
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile AppsMachine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile AppsKevin Moran
 
Agile Software Design
Agile Software DesignAgile Software Design
Agile Software Designeduardomg23
 
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...Digicomp Academy AG
 
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P KriensWhy Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P Kriensmfrancis
 
Refactoring legacy code driven by tests - ITA
Refactoring legacy code driven by tests -  ITARefactoring legacy code driven by tests -  ITA
Refactoring legacy code driven by tests - ITALuca Minudel
 
SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안
SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안
SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안CURVC Corp
 

What's hot (20)

Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009Agile Infra @AgileRoots 2009
Agile Infra @AgileRoots 2009
 
JBoss Forge - Breaking new ground in developer productivity
JBoss Forge - Breaking new ground in developer productivityJBoss Forge - Breaking new ground in developer productivity
JBoss Forge - Breaking new ground in developer productivity
 
Reporting bugs: Errors Made and Lessons Learned
Reporting bugs: Errors Made and Lessons LearnedReporting bugs: Errors Made and Lessons Learned
Reporting bugs: Errors Made and Lessons Learned
 
Neal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary ArchitectureNeal Ford Emergent Design And Evolutionary Architecture
Neal Ford Emergent Design And Evolutionary Architecture
 
Постоянное тестирование интеграции
Постоянное тестирование интеграцииПостоянное тестирование интеграции
Постоянное тестирование интеграции
 
TDD anche su iOS
TDD anche su iOSTDD anche su iOS
TDD anche su iOS
 
Lean Engineering. Applying Lean Principles to Building Experiences
Lean Engineering. Applying Lean Principles to Building ExperiencesLean Engineering. Applying Lean Principles to Building Experiences
Lean Engineering. Applying Lean Principles to Building Experiences
 
11 best practices_for_peer_code_review
11 best practices_for_peer_code_review11 best practices_for_peer_code_review
11 best practices_for_peer_code_review
 
Test Driven Development by Denis Lutz
Test Driven Development by Denis LutzTest Driven Development by Denis Lutz
Test Driven Development by Denis Lutz
 
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenhoO uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
 
David Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and RoadmapDavid Nuescheler: Igniting CQ 5.3: What's New and Roadmap
David Nuescheler: Igniting CQ 5.3: What's New and Roadmap
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt project
 
Automated Reporting of GUI Design Violations for Mobile Apps
Automated Reporting of GUI Design Violations for Mobile AppsAutomated Reporting of GUI Design Violations for Mobile Apps
Automated Reporting of GUI Design Violations for Mobile Apps
 
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile AppsMachine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps
 
Agile Software Design
Agile Software DesignAgile Software Design
Agile Software Design
 
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
OpenTuesday: Die Selenium-Toolfamilie und ihr Einsatz im Web- und Mobile-Auto...
 
The path to cdi 2.0
The path to cdi 2.0The path to cdi 2.0
The path to cdi 2.0
 
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P KriensWhy Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
 
Refactoring legacy code driven by tests - ITA
Refactoring legacy code driven by tests -  ITARefactoring legacy code driven by tests -  ITA
Refactoring legacy code driven by tests - ITA
 
SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안
SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안
SonarQube와 함께하는 소프트웨어 품질 세미나 - 지속적인 코드 인스펙션 SonarQube 활용 방안
 

Similar to The 12 Steps to Code Integration Success

Scale security for a dollar or less
Scale security for a dollar or lessScale security for a dollar or less
Scale security for a dollar or lessMohammed A. Imran
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practiceintive
 
Strengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessStrengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessMohammed A. Imran
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaMohammed A. Imran
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScriptRob Scaduto
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsMike Bowler
 
TMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasTMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasKJR
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Enkitec
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentDevOps.com
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansMichael Vorburger
 
Test Driven Development - Workshop
Test Driven Development - WorkshopTest Driven Development - Workshop
Test Driven Development - WorkshopAnjana Somathilake
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroPaul Boos
 
Topic production code
Topic production codeTopic production code
Topic production codeKavi Kumar
 
Provisioning Profile Stockholm Syndrome
Provisioning Profile Stockholm SyndromeProvisioning Profile Stockholm Syndrome
Provisioning Profile Stockholm SyndromeJay Graves
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone CivettaCocoaHeads France
 
Why You Need to Stop Using "The" Staging Server
Why You Need to Stop Using "The" Staging ServerWhy You Need to Stop Using "The" Staging Server
Why You Need to Stop Using "The" Staging ServerOutlyer
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy VirinCocoaHeads France
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit testTung Nguyen Thanh
 

Similar to The 12 Steps to Code Integration Success (20)

Scale security for a dollar or less
Scale security for a dollar or lessScale security for a dollar or less
Scale security for a dollar or less
 
Developer Job in Practice
Developer Job in PracticeDeveloper Job in Practice
Developer Job in Practice
 
Strengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or lessStrengthen and Scale Security for a dollar or less
Strengthen and Scale Security for a dollar or less
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile Teams
 
TMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasTMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael Palotas
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
 
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe DevelopmentEclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
Eclipse Che - A Revolutionary IDE for Distributed & Mainframe Development
 
tut0000021-hevery
tut0000021-heverytut0000021-hevery
tut0000021-hevery
 
tut0000021-hevery
tut0000021-heverytut0000021-hevery
tut0000021-hevery
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
 
Test Driven Development - Workshop
Test Driven Development - WorkshopTest Driven Development - Workshop
Test Driven Development - Workshop
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for Distro
 
Topic production code
Topic production codeTopic production code
Topic production code
 
Provisioning Profile Stockholm Syndrome
Provisioning Profile Stockholm SyndromeProvisioning Profile Stockholm Syndrome
Provisioning Profile Stockholm Syndrome
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Why You Need to Stop Using "The" Staging Server
Why You Need to Stop Using "The" Staging ServerWhy You Need to Stop Using "The" Staging Server
Why You Need to Stop Using "The" Staging Server
 
Continuous integration by Rémy Virin
Continuous integration by Rémy VirinContinuous integration by Rémy Virin
Continuous integration by Rémy Virin
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
 

Recently uploaded

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 

Recently uploaded (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 

The 12 Steps to Code Integration Success

  • 1. integreation Get it Together.™ (Not really. Yet.)
  • 2. OKAY, SO: THE PROBLEM & WHAT’S BEHIND IT THE SOLUTION *MY 12 STEPS ADVENTURE * not what you’re thinking
  • 4.
  • 5.
  • 6.
  • 8. WHYYYYYYYYYYYYYYYYY?!?!?!?! PEOPLE ARE PROJECTS ARE TECHNOLOGY IS OPTIMISTIC DEADLINED REVOLUTIONARY BUSY RISKY FLUCTUATING DISTRACTED HIGH STAKES SPECIALIZED HUMAN JOB SECURITY MADE BY PEOPLE
  • 9. WHYYYYYYYYYYYYYYYYY?!?!?!?! PEOPLE ARE PROJECTS ARE TECHNOLOGY IS OPTIMISTIC DEADLINED REVOLUTIONARY BUSY RISKY FLUCTUATING DISTRACTED HIGH STAKES SPECIALIZED HUMAN JOB SECURITY MADE BY PEOPLE CUSTOMERS ARE THE SOURCE OF ALL JOY IN THE UNIVERSE
  • 10. WHYYYYYYYYYYYYYYYYY?!?!?!?! PEOPLE ARE PROJECTS ARE TECHNOLOGY IS OPTIMISTIC DEADLINED REVOLUTIONARY BUSY RISKY FLUCTUATING DISTRACTED HIGH STAKES SPECIALIZED HUMAN JOB SECURITY MADE BY PEOPLE CUSTOMERS ARE ALL OF THE ABOVE. THE SOURCE OF ALL JOY IN THE UNIVERSE
  • 11.
  • 14. process is unemotional repeatable risk-averse cheap transparent trainable blameless consensus
  • 15. The Joel Test DO YOU: • Use source control? • Fix bugs first? • Make builds in one step? • Have a spec? • Make daily builds? • Have testers? • Use a bug tracker? • Do hallway tests?
  • 16.
  • 17. 1 2 5 6 3 7 4 8 9 12 11 10
  • 18. 1 2 5 6 3 7 4 8 9 12 11 10
  • 19. 1 2 THAT’S BETTER.
  • 20. DEVELOPERS are your code’s creators. 1 Any Progress Starts Here.
  • 21. SUBVERSION is your code’s historian. 2 Stores Every Change Mediates Conflicts Tags Things For Reference Imagines New Paths ALT: git, cvs, mercurial
  • 22. 1 2 3
  • 23. TRAC is your code’s conscience. 3 Thoughts on Changes Internal Issues Future Planning Wiki, Bug tracker, Repo Viewer ALT: BugTracker.NET , BugZilla, 100s more
  • 24. 1 2 3 4
  • 25. CRUISECONTROL is your code’s brain. 4 Processes Changes Collects Feedback From Components Oversees Operations ALT: TeamCity, Team Foundation Server
  • 26. 1 2 5 3 4
  • 27. MSBBUILD is your code’s birth. 5 Brings code to Life by compiling it If this fails, your code doesn’t exist Is the equivalent of F5 in Visual Studio ALT: Ant, NAnt
  • 28. 1 2 5 6 3 4
  • 29. NUnit is your code’s physical fitness. 6 Ensures that it works as expected inside Keeps Code Flexible and Strong Allows Code to Handle Change ALT: xUnit, MSTest
  • 30. 1 2 5 6 3 7 4
  • 31. NCOVER is your code’s gym teacher. 7 Makes sure enough fitness is tested Helps spot weak points ALT: EMMA, Cobertura, Clover
  • 32. 1 2 5 6 3 7 4 8
  • 33. SPECFLOW is your code’s social skills. 8 Tests code from outside perspective Tests multiple browsers / OSes Runs as NUnit Tests Makes use of Selenium and VMs Lets You Code to Requirements ALT: Cucumber
  • 34. 1 2 5 6 3 7 4 8 9
  • 35. FXCOP is your code’s…well, police officer. 9 Tests Against Common Coding Standards Logs Security / Practices Issues Configurable Strictness ALT: cppcheck, Lint, Eclipse CODAN
  • 36. 1 2 5 6 3 7 4 8 9 10
  • 37. STYLECOP is your code’s school uniform. 10 Enforces Code Formatting Rules Similar Looking Code is Readable For All ALT: checkstyle, PerlTidy
  • 38. 1 2 5 6 3 7 4 8 9 11 10
  • 39. NUGET is your code’s manifesto. 11 Package of Your Code and its Aims Includes Environment Variables, etc. Goal: Easily be disseminated elsewhere
  • 40. 1 2 5 6 3 7 4 8 9 12 11 10
  • 41. OCTOPUS is your code’s manifesto’s publisher. 12 Knows its Audience (Servers) Translates the Manifesto / Variables Puts Your Code Into the Wild ALT: Enhydra Octopus (Java)
  • 42. 1 2 5 6 3 7 4 8 9 12 11 10
  • 43. The Joel Test DO YOU:  Use source control?  Fix bugs first?  Make builds in one step?  Have a spec?  Make daily builds?  Have testers?  Use a bug tracker?  Do hallway tests?
  • 44. OKAY, SO: WHAT DO WE GET?
  • 46. Anything goes wrong? Write a bug w/failing test & make it pass. Order. Code author traceability Tested on Multiple OSes Code and changes are documented User Testing & QA is automated Our code knows how to work around its environment(s) Metrics on times / performance Tested for Security & Best Practices Changes handled gracefully Pull any version and build it anytime. Can see who broke the build Permissions are baked into deployment Flexibility to change without breaking Spec tests test interaction with existing apps Tested on multiple browsers through spec tests Spec tests show code meets requirements Bugs are now just failing tests, documented in the tracker Code is tested internally & externally Environment differences are handled & scripted
  • 47. HAVING A PROCESS MEANS MORE TIME BUILDING YOUR CODE
  • 48. HAVING A PROCESS MEANS MORE TIME BUILDING YOUR PRODUCT
  • 49. HAVING A PROCESS MEANS MORE TIME BUILDING YOUR CUSTOMERS
  • 50. HAVING A PROCESS MEANS MORE TIME BUILDING YOUR COMPANY
  • 51. HAVING A PROCESS MEANS MORE TIME BUILDING YOUR^SELF AWESOME
  • 53. Technologies Used Subversion subversion.apache.org TortoiseSVN tortoisesvn.net Trac trac.edgewall.org CruiseControl.NET cruisecontrolnet.org MSBuild msdn.microsoft.com/en-us/library/0k6kkbsd.aspx NUnit nunit.org NCover ncover.com SpecFlow specflow.org Selenium seleniumhq.org FxCop microsoft.com/download/en/details.aspx?id=6544 StyleCop stylecop.codeplex.com VirtualBox virtualbox.org NuGet nuget.codeplex.com Octopus octopusdeploy.com
  • 54. References / Credits / Inspirations • Jeff Atwood, CodingHorror, “The ‘Works on My Machine’ Certification Program” – http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html • Joel Spolsky, FogCreek, “The Joel Test” – http://www.joelonsoftware.com/articles/fog0000000043.html • Zach Holman, “Slide Design For Developers” – http://zachholman.com/posts/slide-design-for-developers/ • Zach Holman, “How GitHub Uses GitHub to Build GitHub” – http://zachholman.com/talk/how-github-uses-github-to-build-github • All logos are the property of their respective owners/companies • “Winner” image – http://kjrmusic.blogspot.com/2010_07_01_archive.html
  • 55. integreation (fin)

Editor's Notes

  1. These are all questions I've heard in real life.I’m sure you all have examples for this as well – those “little mystery” questions that pop up, where a fix seems to be made up of unicorn tears brought by strange elves in the middle of the night.
  2. Compile your application code. Getting the latest version of any recent code changes from other developers is purely optional and not a requirement for certification.Launch the application or website that has just been compiled.Cause one code path in the code you're checking in to be executed. The preferred way to do this is with ad-hoc manual testing of the simplest possible case for the feature in question. Omit this step if the code change was less than five lines, or if, in the developer's professional opinion, the code change could not possibly result in an error.Check the code changes into your version control system.