18
Extreme Development: Pair Programming Devin S. Olson Collaborative Solutions Developer Czarnowski Exhibit Services Mike McGarel Collaborative Solutions Developer Czarnowski Exhibit Services

Extreme Development: Pair Programming

Embed Size (px)

Citation preview

Page 1: Extreme Development: Pair Programming

Extreme Development:Pair ProgrammingDevin S. OlsonCollaborative Solutions DeveloperCzarnowski Exhibit Services

Mike McGarelCollaborative Solutions DeveloperCzarnowski Exhibit Services

Page 2: Extreme Development: Pair Programming

• Who we are

• What is “Pair Programming”?

• History of pair programming

• Basic concepts

• Benefits

• Breakdowns

• Tools

• Getting started

AD107Extreme Development: Pair Programming

Agenda

Page 3: Extreme Development: Pair Programming

• Collaborative Solutions Developer at Czarnowski Display Services

• Notes / Domino consultant since 1995 (that's R3 for you punks)

• PCLP SA/AD R4.6, R5, R6, R7 (stopped taking tests after that)

• Beer Snob (Anheuser-Busch Certified Beer Master)

• IBM Champion

• LearningXPages.com

AD107Extreme Development: Pair Programming

Who We Are – Devin S. Olson

Page 4: Extreme Development: Pair Programming

• Collaborative Solutions Developer at Czarnowski Display Services

• Working with Notes/Domino since version 4.6

• Working on the Web since 1999

• OpenNTF contributor

• Maintain MWLUG site

• IBM Champion (2015)

AD107Extreme Development: Pair Programming

Who We Are – Mike McGarel

Page 5: Extreme Development: Pair Programming

• Two people

• Same code

• Same computer

• Same time

AD107Extreme Development: Pair Programming

What is “Pair Programming”?

By Calqui (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons

Page 6: Extreme Development: Pair Programming

• 1950s and probably before

• Early adopters: NASA, Chrysler

• Part of Extreme or Agile development

• Widely used

- NASA, Boeing, Google, Facebook, Microsoft, Czarnowski ;-)

• Where it’s going

- “To the moon Alice!”

AD107Extreme Development: Pair Programming

History of Pair Programming

Page 7: Extreme Development: Pair Programming

• “Lone wolves”

• Lack of formal programming training

• Unpleasant without third party tools

• Lack of Notes/Domino development standards

• Applications designed to solve specific problems

AD107Extreme Development: Pair Programming

Why Is It Rare in Notes/Domino?

Page 8: Extreme Development: Pair Programming

• Driver

• Navigator

• Switching

• Task oriented

• Scheduled times

• Temporary partnerships

• Combination of different skill sets

AD107Extreme Development: Pair Programming

Basic Concepts

Images courtesy of Streetwise Motorsportswww.streetwiseparts.com

Page 9: Extreme Development: Pair Programming

• Faster deliverables

• Better quality code

• Shared knowledge

• Improved team communication

• Personal growth

• "You are not alone"

AD107Extreme Development: Pair Programming

Competitive Advantages

Images courtesy of Streetwise Motorsportswww.streetwiseparts.com

Page 10: Extreme Development: Pair Programming

• Personality conflicts

• Scheduling conflicts

• Distractions

• Teacher/student pattern

• "Code hog"

• “I wouldn’t do it that way”

AD107Extreme Development: Pair Programming

Breakdowns

Images courtesy of Streetwise Motorsports www.streetwiseparts.com

Page 11: Extreme Development: Pair Programming

• Daily task list

• Pre/post review

• Time management

• Remove distractions

• Flexibility

• Coding standards

• Talk, talk, talk

AD107Extreme Development: Pair Programming

Making It Work

Images courtesy of Streetwise Motorsports www.streetwiseparts.com

Page 12: Extreme Development: Pair Programming

• Code repository

- e.g. Github, Mercurial, Bitbucket

• Source control manager

- e.g. SourceTree

• Diagramming software

- e.g. Vizio, LucidChart

• Pen, paper and index cards

AD107Extreme Development: Pair Programming

Tools for Paired Programming

Page 13: Extreme Development: Pair Programming

• High quality internet

• Online meeting software

- e.g. GoToMeeting, Skype, Sametime

• Online file sharing store

- e.g. Box, Dropbox, Connections, Google Drive, OneDrive

• Good speakers, microphone and headset

AD107Extreme Development: Pair Programming

Tools for Remote Programming

Page 14: Extreme Development: Pair Programming

AD107Extreme Development: Pair Programming

A Quick Spin

Images courtesy of Streetwise Motorsports www.streetwiseparts.com

Page 15: Extreme Development: Pair Programming

• So, is it working for us?

• Benefits

• Roadblocks (no breakdowns)

AD107Extreme Development: Pair Programming

Maintenance Check

Page 16: Extreme Development: Pair Programming

• http://collaboration.csc.ncsu.edu/laurie/Papers/ESE%20WilliamsPairProgramming_V2.pdf

• http://www.thoughtworks.com/insights/blog/effective-navigation-in-pair-programming

• http://www.youtube.com/watch?v=saSEu2p7aAI&feature=youtu.be

• http://medium.com/@dickeyxxx/how-to-pair-program-d6741077e513#.rttygvc91

• http://www.wikihow.com/Pair-Program

• http://programmers.stackexchange.com/questions/166635/reasons-for-pair-programming

• http://c2.com/cgi/wiki?PairProgramming

• http://www.semanticscholar.org/paper/Pair-Programming-Williams/1d4c7da6969ad0df86aa1d81274305fddc1e20e0/pdf

• http://www.nomachetejuggling.com/2009/02/21/i-love-pair-programming/

• http://www.quora.com/What-is-the-origin-of-pair-programming

• https://www.agilealliance.org/glossary/pairing/

AD107Extreme Development: Pair Programming

References

Page 17: Extreme Development: Pair Programming

• Research

• Start small

- Volunteer at work

- Contribute to open source

- Mentor at community college

AD107Extreme Development: Pair Programming

Call to Action!

Image courtesy of Wikimedia http://commons.wikimedia.org

Page 18: Extreme Development: Pair Programming

AD107Extreme Development: Pair Programming

Thank You!Devin S. Olson

Email: [email protected]

Twitter, Skype: @spanky762

LinkedIn: www.linkedin.com/in/devinolson

www.learningxpages.com

Mike McGarel

Email: [email protected]

Twitter: @mmcgarel

LinkedIn: www.linkedin.com/in/mikemcgarel