class: center, middle # AMA: We pair program (almost) everything. Ask us anything! [![Continuity Logo](ContinuityLogo.png)](http://www.continuity.net) 2:15 PM - 3:30 PM : Ballroom F Benjamin Oakes, Daria Tan, Tricia Ball --- class: center, middle ## A slight change of plans Your schedule just has Ben's name, but why not pair present? Enter Daria and Trish --- class: center, middle # AMA → AUA # :) --- # Roadmap ## So... who are you people? ## Define pairing ## Ask us anything! (the bulk of the talk) --- # Roadmap ## » So... who are you people? ## Define pairing ## Ask us anything! (the bulk of the talk) --- ![Ben head in jar](ben_oakes.png) ## Ben * Senior Software Engineer * January 2013: Started at Continuity when there was 1 full time engineer total (now there are 10) * Paired in a few jobs, pushed for it at Continuity --- ![Daria head in jar](daria_tan.png) ## Daria * Junior Software Engineer * June 2013: started as an intern at Continuity when there were 3 engineers * Has pair programmed since she started as a pro --- ![Trish head in jar](tricia_ball.jpg) ## Trish * Senior Software Engineer * January 2015: started full time at Continuity when there were 7 engineers * Paired in person at her old job, but not full time --- class: center, middle ## We all pair program remotely (and locally) *(Trish)* But our company's headquarters are in Connecticut. We do web development with Ruby on Rails, PostgreSQL, and client-side JavaScript. --- # Roadmap ## So... who are you people? ## » Define pairing ## Ask us anything! (the bulk of the talk) --- ## Define pairing *(Ben)* Two people at the same computer solving the same problem at the same time. ### Ingredients * 2 keyboards * Read-write access for both participants at any time * Some kind of voice communication: in person or VoIP software * Screen sharing: a shared monitor, remote desktop software, or terminal sharing software * Very difficult to effectively pair with only Skype and Google Hangouts --- ## What it ain't *(Trish)* * Discussing a problem for 10+ minutes then splitting up and working on different parts * Reviewing code after it's written * Watching someone else code (and no other participation) * Checking your email while someone else programs for you --- ## What it is *(Daria)* * You both know where you're starting and where you're heading * You are both intellectually engaged * You are both communicating while you pair (Driver and Navigator responsibility is split, not on one person) * Either person can take over at any point (and you will be consistently switching) --- # Roadmap ## So... who are you people? ## Define pairing ## » Ask us anything! (the bulk of the talk) --- class: center, middle # Ask us anything! We're here to answer **your questions** about pair programming! There are no stupid questions!
Pomodoro:
00:00
--- class: center, middle ![Smiling Tiger](squinting-tiger.jpg) # Thanks for coming! ![NU gear logo](nu.png) --- class: center, middle ![NU gear logo](nu.png) ## Continuity Engineering [engineering.continuity.net](http://engineering.continuity.net) Benjamin Oakes - [benjaminoakes.com](http://www.benjaminoakes.com), [@benjaminoakes](http://twitter.com/benjaminoakes) Tricia Ball - [@tricialball](http://twitter.com/tricialball) Daria Tan is an internet ghost ### TechCorridor.io Near Iowa City/Cedar Rapids? Sign up for our Meetup and Slack channel! --- ## Resources Intrigued? Here's some more info: * [026 RR Pair Programming - Ruby Rogues](http://devchat.tv/ruby-rogues/029-pair-programming) * Joe Moore: [RailsConf 2014](https://www.youtube.com/watch?v=156LdcEjfhs) * Joe Moore: [LA Ruby Conf 2014](https://www.youtube.com/watch?v=rIcUXcyC6BA) (better in Ben's opinion) ## These slides http://bit.ly/continuity-iacc-ama --- class: center, middle What follows are some topics we were thinking about while prepping --- ## Example questions * How do you get over being nervous/insecure? * When is it bad to pair? * How do you deal with differing opinions? * Is it easier to pair two very different people or two very similar people? * How have you implemented remote pair programming? * How did you get started pairing as a team? * What's made pairing the most valuable? * How do you decide when to go to the bathroom? ---
Code Swarm
--- ## Our tools Specific to pairing: * Amazon EC2 * Wemux (shared tmux) * Vim * Homesick (shared dotfiles) * Hitch --- ## Why bother? Isn't it a waste of time (and money) to have 2 people do the work of 1? The answer: *time savings* * **Stopping dumb mistakes.** You can quickly fix something that would have taken 30 minutes to figure out. * **A tighter code review cycle.** Review code *as it's written*, not after days of work. This results in more readable code. * **Sharing is caring.** Best practices, shortcuts, problem solving strategies. * **Transferring knowledge.** More people know how the system works and why it works that way. * **Better architecture.** You tend to build to the highest common denominator, finding the best solution, and writing better code than either one of you could have written by yourself. * **Fewer integration problems.** If you switch partners often, then the entire team has a better chance of pulling the pieces together. (The left hand knows what the right hand is doing.) * **Team building.** We love working on our team! We have a lot of trust in each other. * **Interruptions are less disruptive.** The plan is understood by at least 2 people.