1. HASHROCKET
EXPERTLY CRAFTED WEB
Mechanics, Myths, &
Mints The Pair Programming Pill
Swallowing
PRESENTED BY
Jim ‘Big Tiger’ Remsik
2. HASHROCKET
EXPERTLY CRAFTED WEB
Mechanics, Myths, &
Mints The Pair Programming Pill
Swallowing
PRESENTED BY
Jim ‘Big Tiger’ Remsik
3. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
What is Pair Programming?
4. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
What is Pair Programming today?
5. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Local Configurations
6. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Local Configurations
• One developer and his rubber duck
7. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Local Configurations
• One developer and his rubber duck
• Two developers, one keyboard, & one mouse
8. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Local Configurations
• One developer and his rubber duck
• Two developers, one keyboard, & one mouse
• Two developers, two keyboards, & two mice, shared display
9. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Local Configurations
• One developer and his rubber duck
• Two developers, one keyboard, & one mouse
• Two developers, two keyboards, & two mice, shared display
• Two developers, two machines, & a network connection
10. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
11. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
12. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
13. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
14. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
What do you mean I can’t go on vacation?
15. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Remote Configurations
16. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Remote Configurations
• Access to the view changes in real time
17. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Remote Configurations
• Access to the view changes in real time
• Ability for either developer to edit the code
18. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Remote Configurations
• Access to the view changes in real time
• Ability for either developer to edit the code
• Ability to communicate (Audio at least)
19. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
iChat or Screen-sharing
20. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
iChat or Screen-sharing
• See exactly what the other person sees
• High bandwidth requirements
• Screen lag
• No ability to share video
21. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Teamviewer
22. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Teamviewer
• See exactly what the other person sees
• High bandwidth requirements
• Not free ($)
23. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Shared Terminal
24. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Shared Terminal
• See exactly what the other person sees
• Low bandwidth requirements
• Audio/Video channels are still available
• Free
• Available on most machines
• We could use Vim!
25. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Remote Pairing config with TMUX/Vim/Skype
http://vurl.me/WPP
26. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Which of these should you use?
27. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Why are you using pair-programming?
28. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Fewer Bugs
29. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
30. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
31. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Aoccdring to rscheearch at Cmabrigde
uinervtisy, it deosn't mttaer waht oredr
the ltteers in a wrod are, the olny
iprmoetnt tihng is taht the frist and lsat
ltteres are at the rghit pclae. The rset can
be a tatol mses and you can sitll raed it
wouthit a porbelm. Tihs is bcuseae we do
not raed ervey lteter by it slef but the
wrod as a wlohe.
32. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Sgeun un etsduio de una uivenrsdiad
ignlsea, no ipmotra el odren en el que las
ltears etsan ersciats, la uicna csoa
ipormtnate es que la pmrirea y la utlima
ltera esten ecsritas en la psiocion
cocrrtea. El rsteo peuden estar ttaolmntee
mal y aun pordas lerelo sin pobrleams.
Etso es pquore no lemeos cada ltera por
si msima preo la paalbra es un tdoo.
33. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
The White Team Exercise
34. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
35. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
36. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Inattentional Blindness
37. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
38. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
39. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
40. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
AcvtieRecord
41. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Knowledge Transfer
42. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Knowledge Transfer
43. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Put your skills in context
44. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
“The intersection of your ignorance and my ignorance is
much smaller than each of our individual ignorances”
45. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
“I want my team to pair so that I can
make sure that my team is not screwing
around”
46. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Common Myths
47. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
I won't be able to get into the "zone"
48. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
“Two developers working on one piece
of software will take twice as long to
achieve the same results as if they were
separated”
49. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
“Pair programming is good for training.
But, once you know what you're doing,
it's a waste of time”
50. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
“I’ll have to share credit for my work.”
51. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
“I’ll have to go to the bathroom at the
same time as my pair.”
52. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Summary
53. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Yes, and ...
54. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
It’s not for everybody but, it is for anybody.
55. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
Pair programming requires a mutual respect
between the developers and an ability to
communicate.
56. Mechanics, Myths, and Mints: Swallowing the Pair Programming pillTiger” Remsik
Jim “Big
HASHROCKET
EXPERTLY CRAFTED WEB
Thank you
Jim Remsik
bigtiger@hashrocket.com
Notas do Editor
Mute your sound\n
Who am I? El Tigre Grande.\nPairing everyday at work for the past 3 years (In fact, yesterday was my three year anniversary and my first day at Hashrocket I attended a conference).\n\nPaired with Javier Vidal, Jorge Gorka when they came to work at Hashrocket\n
Two developers, literally sitting side by side developing one piece of software at the same computer.\n\nKent Beck coined the term but he meant something very specific. Driver and Navigator - The driver is in control and the navigator is focused on what is upcoming.\n\nWhen I hear this I think World Rally Championships, or at the very least Rally Car Racing. Perhaps it’s not a perfect analogy.\n
Pair programming has evolved. Today I think pair programming has a much broader definition.\n\nTwo developers actively, consciously, collaborating to develop a piece of software at the same time.\n\n
\n
\n
\n
\n
\n
\n
\n
\n
I like to Travel. Just this year I’ve been to Edinburgh, Scotland; Austin, TX; Phoenix, AZ; Chicago, IL; and now Madrid. That left me with almost no vacation and more travel that I wanted to do. Admittedly, this was a selfish reason but, I wanted to visit my wife who was attending university about > 1600 km away.\n\nMy pair for that week and I decided to find a remote pairing solution that worked for us.\n\n
We can’t always be in the same location but, today that doesn’t mean you can’t collaborate on software.\n
We can’t always be in the same location but, today that doesn’t mean you can’t collaborate on software.\n
We can’t always be in the same location but, today that doesn’t mean you can’t collaborate on software.\n
\n
\n
\n
Stephen Caudill (Voxdolo) blogged about what worked for us with step by step instructions and Vim keybindings for TMUX.\n
It depends. No silver bullet. Use what works for you. Why are you using pair-programming at all?\n\n
Hopefully it's not (only) because you saw a talk at a conference.\n\n- Knowledge Transfer\n-- training\n-- Bus Sensitivity\n- Fewer bugs\n- Better architecture/design decisions\n- To make sure my team isn't screwing around\n\n
Few examples to illustrate why eliminating bugs as they happen or preventing them is favorable and how they happen.\n
Imagine Waldo is a mistake that was made while developing this drawing. If you had been with the artist as they drew this picture you would have seen the addition of Waldo and stopped and corrected the issue right away.\n
\n
How many people can read this? It may work poorly so let me read it. If you mind is able to parse the overview details no wonder it’s so easy to transpose letters or make other typos.\n
I want everyone to be able to see this so, here is a version in Espanol.\n
We’re going to watch a very quick video and I want you count the number of times the white (blanco) team pass the ball.\n\nIf you’ve seen this video please let everyone else see if they can count each pass.\n
How many people counted 14 passes? 15 passes? 16 passes? How many people saw a gorilla?\n
Another problem that can occur is inattentional blindness. You become so focused on the task at hand that you lose track of the obvious thing that you could not have otherwise missed. This is a trick known to and used by stage magicians.\n
\n
If we’re pairing and you know I am going to type ActiveRecord you will see the misspelling immediately and fix the problem.\n\nAs Luismi mentioned yesterday in order for examples to be deliverable in a talk format the ideas need to be simplified to the point it doesn’t appear worth the effort. So, a minor misspelling might not be worth pairing this is a simplified way to express the idea that your pair will help you find mistakes in your code and you in theirs. \n
With pairing learning is built-in. My experience is learning vim. I was happy using textmate. Until I saw the people I was pairing with and how efficient they had become in Vim in a short amount of time.\n\nEverything you do is an opportunity to show someone how to be more efficient and vice versa.\n
Another added benefit is the ability to continue development if a person is no longer available. This is often referred to as a Truck Number or Bus Sensitivity. What would happen if developer X were hit by a bus?\n
You are not as good of a developer as you think you are. You are also not as bad of a developer as you fear you are. Many people are scared of pairing because they don’t want to be exposed for knowing so little. Programming can be a very competitive environment but it doesn’t need to be. Can you be a “Yes, and” developer like Jessie was talking about yesterday. If someone comes in with a different idea do you block it because it’s different?\n
Better Design/Architecture\n\nWe have different experience to pull from and therefore can have different solutions come to mind. When we reach into our toolbox we have different sets of tools. Perhaps you have a bigger hammer or jewelers hammer.\n
While you may see enhanced accountability and responsibility this is a terrible reason to start pair programming. It implies that you don’t trust you team and is a smell that there are bigger issues.\n\n
\n
Raul mentioned “the zone” in his opening talk yesterday. When working in a pair on a sufficiently engaging problem pairs can achieve pair flow. In fact, at Hashrocket we have a large open room and when things are clicking and you get into a rhythm the rest of the room falls away. However, you still have to be disciplined about which distractions you allow. \n\nAn added benefit is people will find it harder to interrupt you if you are in a conversation with another person. The same effect can also be achieved by talking to yourself, although I don’t recommend this approach.\n
With pairing learning is built in and developers become more efficient by learning best practices & shortcuts. Potential bugs are often found sooner. Also, the mastubatory exercise of going to find the perfect design is avoided when you have to convince your pair to masturbate with you.\n
Clearly then these people don’t know what they are doing Corey Haines, Kent Beck, Uncle Bob. \n
Who cares?! This isn’t the nobel prize. Either that or work with someone whose work you can steal. :)\n
This is just getting silly. \n
Growing in popularity; Pair programming journeys or Tours\n
By knowing that they are working with someone who will not block their idea simply because it’s different you will be exposed to many different ideas\n
Anyone can use pair programming, it’s a tool for your toolbox. If pairing is not working for you it is likely because one of you doesn’t want it to work.\n