Skip to main content
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)