{"id":12242,"date":"2013-06-02T14:33:28","date_gmt":"2013-06-02T21:33:28","guid":{"rendered":"https:\/\/svapm.org\/?p=12242"},"modified":"2013-06-02T14:33:41","modified_gmt":"2013-06-02T21:33:41","slug":"remote-pair-programming","status":"publish","type":"post","link":"https:\/\/svapm.org\/?p=12242","title":{"rendered":"Remote Pair Programming"},"content":{"rendered":"<p>I&#8217;ve been enamored of remote pair programming since briefly leading development at Socialtext, where no three developers were in the same locale. Socialtext was committed to agile approaches including pair programming (but not including colocation, I might note!). Being distributed, remote pairing was the way forward.<\/p>\n<p>Pair programming is controversial in being possibly the most difficult agile engineering practice to inculcate into development teams &#8211; we&#8217;ve heard of programmers quitting companies rather than signing on. But there&#8217;s also plenty of evidence that it&#8217;s well worth doing: Mike Cohn, in <i>Succeeding with Agile<\/i>, says, &#8220;if you&#8217;re in a hurry this is the time you need pair programming the most\u2026 Although most studies show a slight increase in the total number of person-hours used when pairing, this is offset by a decrease in the total duration of the effort. That is, while pairing takes more person-hours, fewer hours pass on the clock\u2026. Pair programming has also been shown to improve quality\u2026. Additionally, pair programming facilitates knowledge transfer and is an ideal way to bring new developers up to speed on the application. It is also an effective practice for working in uncharted territory or solving difficult problems in known parts of the system.&#8221;<\/p>\n<figure id=\"attachment_12245\" aria-describedby=\"caption-attachment-12245\" style=\"width: 500px\" class=\"wp-caption alignright\"><a href=\"https:\/\/svapm.org\/remote-pair-programming\/pair-programming-guys-3928250043_a0d22c9c44\" rel=\"attachment wp-att-12245\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-12245\" alt=\"photo: Proximate Pair Programming\" src=\"https:\/\/svapm.org\/wp-content\/uploads\/2013\/06\/Pair-Programming-guys-3928250043_a0d22c9c44.jpg\" width=\"500\" height=\"375\" srcset=\"https:\/\/svapm.org\/wp-content\/uploads\/2013\/06\/Pair-Programming-guys-3928250043_a0d22c9c44.jpg 500w, https:\/\/svapm.org\/wp-content\/uploads\/2013\/06\/Pair-Programming-guys-3928250043_a0d22c9c44-300x225.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"caption-attachment-12245\" class=\"wp-caption-text\">Proximate Pair Programming<\/figcaption><\/figure>\n<p>In our book, <a title=\"book: Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams \" href=\"http:\/\/www.ManagingTheUnmanageable.net\"><i>Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams<\/i><\/a>, we note a less obvious use of the technique. We share <a title=\"David Vydra's website\" href=\"http:\/\/www.testdriven.com\" target=\"_blank\">David Vydra<\/a>&#8216;s interviewing rule of thumb,&#8221;Pair programming for half an hour during an interview will save everyone&#8217;s time.&#8221;<\/p>\n<p>And as for pairing remotely, we also share the pleasure I saw programmers at Socialtext experience transitioning from physical to virtual pairing. (<a title=\"book: Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams\" href=\"http:\/\/www.ManagingTheUnmanageable.net\">pp. 133-4<\/a>)<\/p>\n<p>While proximal pairs typically share a single screen and often a single keyboard and single monitor, virtual pairs each sit square to their own monitor, keyboard and mouse, sharing a virtual single screen. For screen sharing, developers at Socialtext typically used a version of VNC (e.g., Chicken or RealVNC).<\/p>\n<p>As a co-chair of the <a title=\"Emerging Technology SIG of SVForum\" href=\"http:\/\/www.svforum.org\/ETsig\" target=\"_blank\">Emerging Technology SIG<\/a> of nonprofit tech organization SVForum, I&#8217;ve recently been looking at collaboration tools of various kinds, led there in part by the amazing advances in sharing Web research that Vivek Agarwal at <a title=\"Surfmark web site, home of collaborative research tools\" href=\"http:\/\/www.surfmark.com\" target=\"_blank\">Surfmark<\/a> is doing. (Vivek is speaking at the Emerging Tech SIG on Thurs, June 13, 2013, in SF.) That led me to consider that screen sharing in general might have taken a leap forward.<\/p>\n<p>I didn&#8217;t find anything startling, when I went looking for an update on remote pairing tools, but David Vydra, who seems to know and have worked with not only all the cool tools but all the cool kids, pointed me to a wonderful resource, <a title=\"Joe Moore's blog\" href=\"http:\/\/remotepairprogramming.com\/tagged\/Tools\" target=\"_blank\">Joe Moore&#8217;s blog<\/a>, which is focused on remote pairing tools. Not surprisingly, Joe is part of Rob Mee&#8217;s Pivotal Labs, known for its XP engineer practices.<\/p>\n<p>A lot of great stuff, including updates on tmux, Google Hangouts and MadEye, SublimeText 2, solving Skype challenges, and more. In his <a title=\"Remote pair programming survey (blog post: Joe Moore)\" href=\"http:\/\/remotepairprogramming.com\/post\/43644506226\/remote-pair-programming-technology\" target=\"_blank\">two-year-ago assessment of remote pairing technology<\/a>, Moore concluded, &#8220;using Apple\u2019s built in Screen Sharing.app (aka SSA) combined with Skype has proved to be the best remote paring technology combination.&#8221;<\/p>\n<p>For those who are distributed &#8211; or just working from home &#8211; remote pairing is alive and well.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been enamored of remote pair programming since briefly leading development at Socialtext, where no three developers were in the [&hellip;]<\/p>\n","protected":false},"author":1541,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8,5,10,20,845,1,853,855,851,939],"tags":[202,39,1280,1279,1278,1284,1274,1173,1174,1277,718,1276,84,1169,1170,1158,1270,1271,1286,1176,162,1281,1156,1272,1285,1283,929,1273,728,71,1282,1275],"class_list":["post-12242","post","type-post","status-publish","format-standard","hentry","category-priorities-2","category-time-management","category-cost","category-quality","category-human-resources","category-miscellaneous","category-pmbok-process-initiating","category-pmbok-process-executing","category-global-leadership-leadership","category-change-2","tag-agile","tag-best-practices","tag-collocation","tag-colocation","tag-distributed-teams","tag-emerging-technology-sig","tag-extreme-programming","tag-great-management","tag-great-project-management","tag-hiring","tag-interviewing","tag-knowledge-transfer","tag-management","tag-managing-the-unmanageable","tag-mickey-mantle","tag-orchestrating","tag-pair-programming","tag-pairing","tag-pivotal-labs","tag-programming","tag-quality-2","tag-remote","tag-software-development","tag-speed-to-market","tag-surfmark","tag-svforum","tag-synergy","tag-time-to-market","tag-tools","tag-virtual","tag-vnc","tag-xp"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts\/12242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/users\/1541"}],"replies":[{"embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12242"}],"version-history":[{"count":7,"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts\/12242\/revisions"}],"predecessor-version":[{"id":12250,"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts\/12242\/revisions\/12250"}],"wp:attachment":[{"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}