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)

Integreation

  • 1.
    integreation Getit Together.™ (Not really. Yet.)
  • 2.
    OKAY, SO: THE PROBLEM& WHAT’S BEHIND IT THE SOLUTION *MY 12 STEPS ADVENTURE * not what you’re thinking
  • 3.
  • 7.
  • 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
  • 12.
  • 13.
  • 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?
  • 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 yourcode’s creators. 1 Any Progress Starts Here.
  • 21.
    SUBVERSION is yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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 yourcode’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.
  • 45.
  • 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 MEANSMORE TIME BUILDING YOUR CODE
  • 48.
    HAVING A PROCESS MEANSMORE TIME BUILDING YOUR PRODUCT
  • 49.
    HAVING A PROCESS MEANSMORE TIME BUILDING YOUR CUSTOMERS
  • 50.
    HAVING A PROCESS MEANSMORE TIME BUILDING YOUR COMPANY
  • 51.
    HAVING A PROCESS MEANSMORE TIME BUILDING YOUR^SELF AWESOME
  • 52.
  • 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.

Editor's Notes

  • #7 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.
  • #12 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.