SlideShare una empresa de Scribd logo
1 de 58
How Pair Programming Can Help You Code Faster,
Cleaner, and with More Confidence
PRESENTED BY ANDY MELICHAR FOR WORDCAMP JACKSON 2017
FIRST THINGS FIRST
A LITTLE ABOUT ME…
I LOVE
KARAOKE.
If you love karaoke,
check out
@wckaraoke on
Twitter!!
Serial
Hobbyist
Current obsession: HAM Radio.
My callsign is KEØATA
Director of Web
Development
for A2 Hosting
 We love hosting WordPress
websites, and we spend a lot of
time on making WordPress
better for our customers!
 Ask me about Agile/Scrum!
In this talk
we’ll cover:
1. Getting to Know You (and My Team)
2. What is Pair Programming
3. Benefits of Pair Programming
4. How we do Pair Programming at A2 Hosting
5. Important Considerations
6. Q&A
Audience:
(who are you?)
1. Developers
2. Development Managers
3. Project/Product Managers
Critical Point
#1
 If you don’t think this is for
you, I won’t take offense to
you joining the other talk!
 The other talk going on
right now is “Grow Your
Reach Through Blogging”
by Patricia Robertson
Time to Fess
Up!
 Who has tried some form of Pair Programming
before?
 Who here has a coworker, friend, etc., who they
could potentially pair program with?
 Who works under the Agile/Scrum methodology?
 What brought you to this talk?
My Web
Development
Team
 Consists of 7 full-time developers
 Managed directly by me
 5 employees local, but still work from
home about 80% of the time
 2 employees 100% remote
 2 different time zones
 Work primarily on projects internal to
A2 Hosting
 5 Mac users and 1 on Linux Mint
 I’m a weirdo PC user
Flash back almost two years ago…
 We managed our projects under waterfall
 Individual Web Developers were in charge is singular projects and tasks
 Our project management was done in Redmine with tickets
 And lots and lots of Google Docs
 And a lot of stuff in our head
 Developers were working 14-hour days regularly trying to meet deadlines
 Needless to say they (we all) were a bit burnt out
We also had some major knowledge
silos…
Employee A Employee B Employee C
System A
System B
System C
System D
That fix they
did last year
that solved a
super critical
production issue
that is happening
right now and
nobody can
remember what
it was.
“Hey, I’ve got an idea…
LET’S TRY THIS PAIR PROGRAMMING THING AND SEE HOW IT GOES.”
Critical Point
#2
Listen to your team
and be willing to try
new things!
WHAT IS PAIR
PROGRAMMING?
The “Boring” Definition
 Pair programming is an agile software development technique in which
two programmers work together at one workstation. One, the driver,
writes code while the other, the observer or navigator, reviews each line of
code as it is typed in. The two programmers switch roles frequently.
 While reviewing, the observer also considers the "strategic" direction of
the work, coming up with ideas for improvements and likely future
problems to address. This frees the driver to focus all of his or her
attention on the "tactical" aspects of completing the current task, using the
observer as a safety net and guide.
 Source: https://en.wikipedia.org/wiki/Pair_programming
The “Not-so-Boring” Definition
 Programmer One to Programmer Two: “I’ve got your back.”
 Programmer Two to Programmer One: “Let’s DO THIS!!”
 A few hours later… “Hey, Andy! We’re done with everything you gave us
and we need some more tickets!”
WOW THAT SOUNDS
AMAZING
TELL ME MORE ABOUT THIS AMAZING OPPORTUNITY…
THE BENEFITS
OF PAIR
PROGRAMMING
In an un-official,
statistically inaccurate
2016 survey of five web
developers…
5 OUT OF 5 DEVELOPERS SAID IF WE EVER WENT BACK TO THE WAY IT WAS
BEFORE PAIR PROGRAMMING, THEY WOULD QUIT.
5 out of 5, you say?
 Obviously this is my team of developers
 I, as their manager, was skeptical about pair
programming going into it
 As was the rest of management
What the Research
Shows…
HONESTLY, NOT MUCH.
Critical Point
#3
Whether or not pair programming works
or makes sense for you is going to
depend on a LOT of variables:
1. The willingness of your team and
management
2. The amount of time you can dedicate
to ramping up and figuring out the
workflow
3. Your team’s ability to give and accept
critique and feedback
4. The type of work you do – repetitive
work, for example, does NOT benefit
from pair programming
In Their Own Words…
“I never believed the claim that pair programming was more
productive than two developers working alone. It made no
sense to me. Surely there would be too much overhead in
coordinating with another person. Once we started pair
programming, it became apparent that it was true. You
work so much more efficiently and get stuck so much less
often, it really is more productive and results in higher code
quality.”
-Dave M.
“When working solo on a problem I was hesitant to ask
coworkers for input because context switching takes a
major toll on productivity. There has to be a really good
reason to interrupt someone else's work. When working
on a problem as a pair there is no context switching
and you are both invested in the outcome.”
- Peter S.
“There is much less ‘clever’ code because the partner
will be like, ‘umm, this is going to bite us.’”
- Steve P.
The developers like it… so what?
WHAT DOES MANAGEMENT HAVE TO SAY ABOUT IT?
Well, I’m here talking to you about it!
1. An astounding change in the morale of my team.
 Because they actually ARE a team now, instead of a bunch of cowboy coders
writing ugly spaghetti code
2. Code quality has gone through the roof, and continues to improve on a
sprint-by-sprint basis
3. Defects that make it into production are far fewer, and the ones that do
make it are usually solved much faster
4. I spend a lot less time micro-managing each of my team members and
chasing down project statuses
5. I can trust ANY team member to work on ANY system in our
infrastructure
6. Literal, no-kidding, DAY ONE productivity of new team members
DAY ONE Productivity? Really?
 I’ve brought four new developers onto the team since we began pair
programming
 Each one of them was able to dive right into our codebase and complete
tickets their first day
 Our ramp-up time for a new developer prior to pair programming was 3-6
months
Critical Point
#4 YMMV
We’ve all reached that point
of brain-on-fire, bang your
head against SOMETHING
frustration point with our
code.
With pair programming,
it’s MUCH harder to get
to that point, because
someone is already
there, helping you
through the difficulties of
your code.
OK ANDY, WE GET IT, YOU LIKE PAIR
PROGRAMMING…
MAYBE TELL US HOW THIS WORKS IN THE REAL WORLD?
How We
Pair Program
at A2 Hosting
High-Level
of Our
Workflow
 We work in 2-week sprint cycles
 The first and last day of the sprint are meeting days,
those who are local come into the office, those who
are remote are brought in on a video conference
 The entire rest of the 2 weeks (8 working days)
everyone works from home
 Each developer is (usually) paired with another
developer for the entire sprint
 We rotate pairs every sprint
Day-to-Day
Workflow
 Start the day with a quick all-team huddle
 After that, our pairs connect up to begin pair
programming, they stay paired for the entire day
 Obviously taking breaks occasionally for lunch and
such (the pairs each agree on their schedules)
 First and last half-hour of the day is housekeeping,
code reviews, water cooler time, etc.
Wikipedia says it’s two programmers in one
room… but your team is remote?
 With the magic of the interwebs, we create our own rooms
 We use Google Hangouts for an audio connection
 We use C9.io as our shared, web-based development environment
Our Tools/Stack
 Cloud9 for our IDE - https://c9.io/
 Google Hangouts for Chat – https://hangounts.google.com/
 Atlassian Stack – https://www.atalassian.com/
 Jira for Project Management
 Confluence for Documentation
 Fisheye for git Respository Management
 Crucible for Code Reviews
 Old-skool IRC for chatting
 All code is stored in git
 Self-hosted development server running LEMP
Development Server
Critical Point
#5
The only way pair
programming will work
is if you have the right
technology to support
it
We Have Some Agreements
 Established coding standards that every team member agrees to abide by
– and the team agrees to support each other in following those standards
 Pairs are encouraged to work on tickets that provide an opportunity for
the transfer of knowledge
 No “cowboy coding” – all coding is done in pairs
 Follow the process
 Everything goes through code review
 Don’t take things live after 4pm or on Fridays
Processes that Support Pair
Programming
 At the end of every sprint we do a sprint review with the stakeholders
 At the end of every sprint we do a retrospective
 We do peer-360 reviews at 90-days, and then every 6-months
 Tool: https://www.spidergap.com/
 Agile/Scrum project management
Critical Point
#6
Pair Programming is
NOT for everyone, and
that’s OK.
Hiring is a Whole New Game
 First 10 minutes of any interview, I explain our process and the team
 I give the prospective employee an “out”
 They interview with me first, and then AT LEAST two members of the dev
team
 First 90 days is critical to ensuring team cohesion and their ability to adopt
our processes
 Hire slow, fire fast
IMPORTANT
CONSIDERATIONS
SOME OF THIS WILL BE REVIEW. MAYBE ALL OF IT.
As it is with any
new workflow,
it’s going to take
some time to
iron out the
details.
Absolutely,
positively get
management
buy-in from the
very beginning.
Absolutely be
sure your team
is ready for what
it takes to pair
program.
Credit Where
Credit is Due
THE VAST MAJORITY OF THESE PROCESSES AND IDEAS HAVE COME
FROM MEMBERS OF MY TEAM, NOT ME
Critical Point
#7
Pair Programming benefits GREATLY from
a management style that empowers the
team to figure things out on their own
and self-manage
The upside of this is your team learns how
to self-manage, which empowers them to
make better decisions, which in turn helps
them to deliver a better product.
Having
the right
tools is
essential.
A Final Thought…
JUST TRY IT!
Q&A TIME!
I MIGHT HAVE SOME ANSWERS FOR YOU
THANK YOU!

Más contenido relacionado

La actualidad más candente

Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystifiedMarek Kirejczyk
 
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Lisa Boyer Cooney (she/her)
 
Global Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul EventGlobal Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul EventLemi Orhan Ergin
 
Pair programming
Pair programmingPair programming
Pair programmingJon Jagger
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints EfficientlyLemi Orhan Ergin
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentSven Peters
 
Nguyen Vu Hung - Software Project Management with Jira Agile
Nguyen Vu Hung - Software Project Management with Jira AgileNguyen Vu Hung - Software Project Management with Jira Agile
Nguyen Vu Hung - Software Project Management with Jira AgileVu Hung Nguyen
 
What is-agile henrik kniberg august 20 2013
What is-agile henrik kniberg august 20 2013What is-agile henrik kniberg august 20 2013
What is-agile henrik kniberg august 20 2013Richard P. Doerer
 
20 Ideas On How To Improve Your Agile Board
20 Ideas On How To Improve Your Agile Board20 Ideas On How To Improve Your Agile Board
20 Ideas On How To Improve Your Agile BoardMarcus Hammarberg
 
Transform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOpsTransform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOpsGaurav Sharma
 
Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)Manuel Padilha
 
Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...
Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...
Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...Agile Lietuva
 
My Career Journey: An Unconventional Path into DevOps
My Career Journey: An Unconventional Path into DevOpsMy Career Journey: An Unconventional Path into DevOps
My Career Journey: An Unconventional Path into DevOpsVMware Tanzu
 
Day projectcon real-world-scrum
Day projectcon real-world-scrumDay projectcon real-world-scrum
Day projectcon real-world-scrumProjectCon
 

La actualidad más candente (20)

Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
 
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
 
Global Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul EventGlobal Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul Event
 
Pair programming
Pair programmingPair programming
Pair programming
 
Meteorjs
MeteorjsMeteorjs
Meteorjs
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
 
Agile Methodologies & Key Principles 2
Agile Methodologies & Key Principles 2Agile Methodologies & Key Principles 2
Agile Methodologies & Key Principles 2
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
 
Kanban in Action
Kanban in ActionKanban in Action
Kanban in Action
 
Nguyen Vu Hung - Software Project Management with Jira Agile
Nguyen Vu Hung - Software Project Management with Jira AgileNguyen Vu Hung - Software Project Management with Jira Agile
Nguyen Vu Hung - Software Project Management with Jira Agile
 
What is-agile henrik kniberg august 20 2013
What is-agile henrik kniberg august 20 2013What is-agile henrik kniberg august 20 2013
What is-agile henrik kniberg august 20 2013
 
Lean vs scrum
Lean vs scrumLean vs scrum
Lean vs scrum
 
20 Ideas On How To Improve Your Agile Board
20 Ideas On How To Improve Your Agile Board20 Ideas On How To Improve Your Agile Board
20 Ideas On How To Improve Your Agile Board
 
Transform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOpsTransform Agile Development With Practical DevOps
Transform Agile Development With Practical DevOps
 
Scrum Fundamentals
Scrum FundamentalsScrum Fundamentals
Scrum Fundamentals
 
Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)
 
Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...
Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...
Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in ...
 
Metrics that bring value
Metrics that bring valueMetrics that bring value
Metrics that bring value
 
My Career Journey: An Unconventional Path into DevOps
My Career Journey: An Unconventional Path into DevOpsMy Career Journey: An Unconventional Path into DevOps
My Career Journey: An Unconventional Path into DevOps
 
Day projectcon real-world-scrum
Day projectcon real-world-scrumDay projectcon real-world-scrum
Day projectcon real-world-scrum
 

Similar a It Takes Two - A Case Study in Pair Programming

Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea Designveloper
 
An Introduction To Agile Development
An Introduction To Agile DevelopmentAn Introduction To Agile Development
An Introduction To Agile Developmentelliando dias
 
Working together
Working togetherWorking together
Working togetherhimaye
 
Kickass Agile Development - Agile & Beyond Conference
Kickass Agile Development - Agile & Beyond ConferenceKickass Agile Development - Agile & Beyond Conference
Kickass Agile Development - Agile & Beyond ConferenceDan Chuparkoff
 
Bringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day JobBringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day JobBen Coe
 
Agile Patterns and Anti-Patterns
Agile Patterns and Anti-PatternsAgile Patterns and Anti-Patterns
Agile Patterns and Anti-PatternsRichard Cheng
 
How to Ship in 8 Weeks or Less (via Cross-Functional Teams)
How to Ship in 8 Weeks or Less (via Cross-Functional Teams)How to Ship in 8 Weeks or Less (via Cross-Functional Teams)
How to Ship in 8 Weeks or Less (via Cross-Functional Teams)QuekelsBaro
 
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpScrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpHossam Hassan
 
Scrum and Agile: Experience growing from 2 to 15 people
Scrum and Agile: Experience growing from 2 to 15 peopleScrum and Agile: Experience growing from 2 to 15 people
Scrum and Agile: Experience growing from 2 to 15 peopleAli Khajeh-Hosseini
 
Practical Programming It Awareness Advocacy
Practical Programming   It Awareness AdvocacyPractical Programming   It Awareness Advocacy
Practical Programming It Awareness AdvocacyMarie Claire Ponsaran
 
The Role of a BA on a Scrum Team IIBA Presentation 2010
The Role of a BA on a Scrum Team IIBA Presentation 2010The Role of a BA on a Scrum Team IIBA Presentation 2010
The Role of a BA on a Scrum Team IIBA Presentation 2010scrummasternz
 
Industry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanbanIndustry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanbanBusiness901
 
2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk
2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk
2019-CertiFUNcation-Hacking-Agile-not-a-tech-talkTYPO3 CertiFUNcation
 
Back To Basics Hyper Free Principles For Software Developers
Back To Basics Hyper Free Principles For Software DevelopersBack To Basics Hyper Free Principles For Software Developers
Back To Basics Hyper Free Principles For Software DevelopersAdrian Treacy
 
How to be proud when you are done
How to be proud when you are doneHow to be proud when you are done
How to be proud when you are doneMikalai Alimenkou
 
How to be proud when you are done
How to be proud when you are doneHow to be proud when you are done
How to be proud when you are doneAleksey Solntsev
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressmtoppa
 

Similar a It Takes Two - A Case Study in Pair Programming (20)

Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea
 
An Introduction To Agile Development
An Introduction To Agile DevelopmentAn Introduction To Agile Development
An Introduction To Agile Development
 
Working together
Working togetherWorking together
Working together
 
Kickass Agile Development - Agile & Beyond Conference
Kickass Agile Development - Agile & Beyond ConferenceKickass Agile Development - Agile & Beyond Conference
Kickass Agile Development - Agile & Beyond Conference
 
Bringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day JobBringing Open-Source Practices to Your Day Job
Bringing Open-Source Practices to Your Day Job
 
Agile Patterns and Anti-Patterns
Agile Patterns and Anti-PatternsAgile Patterns and Anti-Patterns
Agile Patterns and Anti-Patterns
 
How to Ship in 8 Weeks or Less (via Cross-Functional Teams)
How to Ship in 8 Weeks or Less (via Cross-Functional Teams)How to Ship in 8 Weeks or Less (via Cross-Functional Teams)
How to Ship in 8 Weeks or Less (via Cross-Functional Teams)
 
Scrum For Developers
Scrum For DevelopersScrum For Developers
Scrum For Developers
 
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpScrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
 
Scrum and Agile: Experience growing from 2 to 15 people
Scrum and Agile: Experience growing from 2 to 15 peopleScrum and Agile: Experience growing from 2 to 15 people
Scrum and Agile: Experience growing from 2 to 15 people
 
Practical Programming It Awareness Advocacy
Practical Programming   It Awareness AdvocacyPractical Programming   It Awareness Advocacy
Practical Programming It Awareness Advocacy
 
The Role of a BA on a Scrum Team IIBA Presentation 2010
The Role of a BA on a Scrum Team IIBA Presentation 2010The Role of a BA on a Scrum Team IIBA Presentation 2010
The Role of a BA on a Scrum Team IIBA Presentation 2010
 
Industry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanbanIndustry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanban
 
2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk
2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk
2019-CertiFUNcation-Hacking-Agile-not-a-tech-talk
 
Back To Basics Hyper Free Principles For Software Developers
Back To Basics Hyper Free Principles For Software DevelopersBack To Basics Hyper Free Principles For Software Developers
Back To Basics Hyper Free Principles For Software Developers
 
How to be proud when you are done
How to be proud when you are doneHow to be proud when you are done
How to be proud when you are done
 
How to be proud when you are done
How to be proud when you are doneHow to be proud when you are done
How to be proud when you are done
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
 
The Heart Of Agile
The Heart Of AgileThe Heart Of Agile
The Heart Of Agile
 

Último

𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...sonatiwari757
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLimonikaupta
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Standkumarajju5765
 

Último (20)

𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
10.pdfMature Call girls in Dubai +971563133746 Dubai Call girls
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
Call Girls in Mayur Vihar ✔️ 9711199171 ✔️ Delhi ✔️ Enjoy Call Girls With Our...
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 

It Takes Two - A Case Study in Pair Programming

  • 1. How Pair Programming Can Help You Code Faster, Cleaner, and with More Confidence PRESENTED BY ANDY MELICHAR FOR WORDCAMP JACKSON 2017
  • 2. FIRST THINGS FIRST A LITTLE ABOUT ME…
  • 3. I LOVE KARAOKE. If you love karaoke, check out @wckaraoke on Twitter!!
  • 4. Serial Hobbyist Current obsession: HAM Radio. My callsign is KEØATA
  • 5. Director of Web Development for A2 Hosting  We love hosting WordPress websites, and we spend a lot of time on making WordPress better for our customers!  Ask me about Agile/Scrum!
  • 6. In this talk we’ll cover: 1. Getting to Know You (and My Team) 2. What is Pair Programming 3. Benefits of Pair Programming 4. How we do Pair Programming at A2 Hosting 5. Important Considerations 6. Q&A
  • 7. Audience: (who are you?) 1. Developers 2. Development Managers 3. Project/Product Managers
  • 8. Critical Point #1  If you don’t think this is for you, I won’t take offense to you joining the other talk!  The other talk going on right now is “Grow Your Reach Through Blogging” by Patricia Robertson
  • 9. Time to Fess Up!  Who has tried some form of Pair Programming before?  Who here has a coworker, friend, etc., who they could potentially pair program with?  Who works under the Agile/Scrum methodology?  What brought you to this talk?
  • 10. My Web Development Team  Consists of 7 full-time developers  Managed directly by me  5 employees local, but still work from home about 80% of the time  2 employees 100% remote  2 different time zones  Work primarily on projects internal to A2 Hosting  5 Mac users and 1 on Linux Mint  I’m a weirdo PC user
  • 11. Flash back almost two years ago…  We managed our projects under waterfall  Individual Web Developers were in charge is singular projects and tasks  Our project management was done in Redmine with tickets  And lots and lots of Google Docs  And a lot of stuff in our head  Developers were working 14-hour days regularly trying to meet deadlines  Needless to say they (we all) were a bit burnt out
  • 12. We also had some major knowledge silos… Employee A Employee B Employee C System A System B System C System D That fix they did last year that solved a super critical production issue that is happening right now and nobody can remember what it was.
  • 13. “Hey, I’ve got an idea… LET’S TRY THIS PAIR PROGRAMMING THING AND SEE HOW IT GOES.”
  • 14. Critical Point #2 Listen to your team and be willing to try new things!
  • 16.
  • 17. The “Boring” Definition  Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.  While reviewing, the observer also considers the "strategic" direction of the work, coming up with ideas for improvements and likely future problems to address. This frees the driver to focus all of his or her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.  Source: https://en.wikipedia.org/wiki/Pair_programming
  • 18. The “Not-so-Boring” Definition  Programmer One to Programmer Two: “I’ve got your back.”  Programmer Two to Programmer One: “Let’s DO THIS!!”  A few hours later… “Hey, Andy! We’re done with everything you gave us and we need some more tickets!”
  • 19. WOW THAT SOUNDS AMAZING TELL ME MORE ABOUT THIS AMAZING OPPORTUNITY…
  • 21. In an un-official, statistically inaccurate 2016 survey of five web developers… 5 OUT OF 5 DEVELOPERS SAID IF WE EVER WENT BACK TO THE WAY IT WAS BEFORE PAIR PROGRAMMING, THEY WOULD QUIT.
  • 22. 5 out of 5, you say?  Obviously this is my team of developers  I, as their manager, was skeptical about pair programming going into it  As was the rest of management
  • 24. Critical Point #3 Whether or not pair programming works or makes sense for you is going to depend on a LOT of variables: 1. The willingness of your team and management 2. The amount of time you can dedicate to ramping up and figuring out the workflow 3. Your team’s ability to give and accept critique and feedback 4. The type of work you do – repetitive work, for example, does NOT benefit from pair programming
  • 25. In Their Own Words…
  • 26. “I never believed the claim that pair programming was more productive than two developers working alone. It made no sense to me. Surely there would be too much overhead in coordinating with another person. Once we started pair programming, it became apparent that it was true. You work so much more efficiently and get stuck so much less often, it really is more productive and results in higher code quality.” -Dave M.
  • 27. “When working solo on a problem I was hesitant to ask coworkers for input because context switching takes a major toll on productivity. There has to be a really good reason to interrupt someone else's work. When working on a problem as a pair there is no context switching and you are both invested in the outcome.” - Peter S.
  • 28. “There is much less ‘clever’ code because the partner will be like, ‘umm, this is going to bite us.’” - Steve P.
  • 29. The developers like it… so what? WHAT DOES MANAGEMENT HAVE TO SAY ABOUT IT?
  • 30. Well, I’m here talking to you about it! 1. An astounding change in the morale of my team.  Because they actually ARE a team now, instead of a bunch of cowboy coders writing ugly spaghetti code 2. Code quality has gone through the roof, and continues to improve on a sprint-by-sprint basis 3. Defects that make it into production are far fewer, and the ones that do make it are usually solved much faster 4. I spend a lot less time micro-managing each of my team members and chasing down project statuses 5. I can trust ANY team member to work on ANY system in our infrastructure 6. Literal, no-kidding, DAY ONE productivity of new team members
  • 31. DAY ONE Productivity? Really?  I’ve brought four new developers onto the team since we began pair programming  Each one of them was able to dive right into our codebase and complete tickets their first day  Our ramp-up time for a new developer prior to pair programming was 3-6 months
  • 33.
  • 34. We’ve all reached that point of brain-on-fire, bang your head against SOMETHING frustration point with our code.
  • 35. With pair programming, it’s MUCH harder to get to that point, because someone is already there, helping you through the difficulties of your code.
  • 36.
  • 37. OK ANDY, WE GET IT, YOU LIKE PAIR PROGRAMMING… MAYBE TELL US HOW THIS WORKS IN THE REAL WORLD?
  • 39. High-Level of Our Workflow  We work in 2-week sprint cycles  The first and last day of the sprint are meeting days, those who are local come into the office, those who are remote are brought in on a video conference  The entire rest of the 2 weeks (8 working days) everyone works from home  Each developer is (usually) paired with another developer for the entire sprint  We rotate pairs every sprint
  • 40. Day-to-Day Workflow  Start the day with a quick all-team huddle  After that, our pairs connect up to begin pair programming, they stay paired for the entire day  Obviously taking breaks occasionally for lunch and such (the pairs each agree on their schedules)  First and last half-hour of the day is housekeeping, code reviews, water cooler time, etc.
  • 41. Wikipedia says it’s two programmers in one room… but your team is remote?  With the magic of the interwebs, we create our own rooms  We use Google Hangouts for an audio connection  We use C9.io as our shared, web-based development environment
  • 42. Our Tools/Stack  Cloud9 for our IDE - https://c9.io/  Google Hangouts for Chat – https://hangounts.google.com/  Atlassian Stack – https://www.atalassian.com/  Jira for Project Management  Confluence for Documentation  Fisheye for git Respository Management  Crucible for Code Reviews  Old-skool IRC for chatting  All code is stored in git  Self-hosted development server running LEMP
  • 44. Critical Point #5 The only way pair programming will work is if you have the right technology to support it
  • 45. We Have Some Agreements  Established coding standards that every team member agrees to abide by – and the team agrees to support each other in following those standards  Pairs are encouraged to work on tickets that provide an opportunity for the transfer of knowledge  No “cowboy coding” – all coding is done in pairs  Follow the process  Everything goes through code review  Don’t take things live after 4pm or on Fridays
  • 46. Processes that Support Pair Programming  At the end of every sprint we do a sprint review with the stakeholders  At the end of every sprint we do a retrospective  We do peer-360 reviews at 90-days, and then every 6-months  Tool: https://www.spidergap.com/  Agile/Scrum project management
  • 47. Critical Point #6 Pair Programming is NOT for everyone, and that’s OK.
  • 48. Hiring is a Whole New Game  First 10 minutes of any interview, I explain our process and the team  I give the prospective employee an “out”  They interview with me first, and then AT LEAST two members of the dev team  First 90 days is critical to ensuring team cohesion and their ability to adopt our processes  Hire slow, fire fast
  • 49. IMPORTANT CONSIDERATIONS SOME OF THIS WILL BE REVIEW. MAYBE ALL OF IT.
  • 50. As it is with any new workflow, it’s going to take some time to iron out the details.
  • 52. Absolutely be sure your team is ready for what it takes to pair program.
  • 53. Credit Where Credit is Due THE VAST MAJORITY OF THESE PROCESSES AND IDEAS HAVE COME FROM MEMBERS OF MY TEAM, NOT ME
  • 54. Critical Point #7 Pair Programming benefits GREATLY from a management style that empowers the team to figure things out on their own and self-manage The upside of this is your team learns how to self-manage, which empowers them to make better decisions, which in turn helps them to deliver a better product.
  • 57. Q&A TIME! I MIGHT HAVE SOME ANSWERS FOR YOU

Notas del editor

  1. The one day, one of my developers came to the team and had an idea.
  2. So we did some research.
  3. There’s been a ton of research in pair programming, and it is incredibly contradictory, mostly because every pair, every project, every situation is different.
  4. HA! Obviously I’m a fan. We’re over a year into it, and I would never go back. These are just SOME of the things I’ve experienced as being a manager of a team of developers who pair program.
  5. I made a hire, they was a little hesitant about pair programming at first, and within their first 90 days they decided it wasn’t for them. And that’s OK.
  6. “You are going to basically be on the telephone with the other half of your pair for 8 days straight. How do you feel about that?”