{"id":26,"date":"2019-09-10T05:49:22","date_gmt":"2019-09-10T05:49:22","guid":{"rendered":"https:\/\/efelti.com\/tech\/?p=26"},"modified":"2020-11-12T06:40:21","modified_gmt":"2020-11-12T06:40:21","slug":"pair-programming-good-practices-7-issues-and-possible-approaches-to-solve","status":"publish","type":"post","link":"https:\/\/efelti.com\/tech\/?p=26","title":{"rendered":"Pair Programming Good Practices &#8211; 7 Issues and Possible Approaches to Solve"},"content":{"rendered":"\n<p><strong>Pair programming<\/strong>&nbsp;<sup><a href=\"https:\/\/en.wikipedia.org\/wiki\/Pair_programming\" rel=\"noreferrer noopener\" target=\"_blank\">[wikipedia]<\/a><\/sup>&nbsp;is an&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Agile_software_development\" rel=\"noreferrer noopener\" target=\"_blank\">agile software development<\/a>&nbsp;technique in which two&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Computer_programmer\" rel=\"noreferrer noopener\" target=\"_blank\">programmers<\/a>&nbsp;work together at one workstation. One, the&nbsp;<em>driver<\/em>, writes&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Source_code\" rel=\"noreferrer noopener\" target=\"_blank\">code<\/a>&nbsp;while the other, the&nbsp;<em>observer<\/em>&nbsp;or&nbsp;<em>navigator<\/em>,<sup><a href=\"https:\/\/en.wikipedia.org\/wiki\/Pair_programming#cite_note-1\" rel=\"noreferrer noopener\" target=\"_blank\">[1]<\/a><\/sup>&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Code_review\" rel=\"noreferrer noopener\" target=\"_blank\">reviews<\/a>&nbsp;each line of code as it is typed in. The two programmers switch roles frequently.<\/p>\n\n\n\n<p>During few sprints experiences adopting pair programming practice, my IT-Team has collected <strong>&#8220;Do&#8221;s<\/strong> and <strong>&#8220;Don&#8217;t&#8221;s<\/strong> good practices, but also <strong>Issues<\/strong> and <strong>Possible Approaches<\/strong> to solve the Issues<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"537\" src=\"https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming-1024x537.png\" alt=\"\" class=\"wp-image-28\" srcset=\"https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming-1024x537.png 1024w, https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming-300x157.png 300w, https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming-768x403.png 768w, https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming-1536x806.png 1536w, https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming-100x52.png 100w, https:\/\/efelti.com\/tech\/wp-content\/uploads\/2020\/11\/Pair-Programming.png 1763w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1 \u2013 Person A felt offended because of unconstructive criticisms of person B<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Categories<\/strong>: Communication Problem, Disrespect \/ Humiliation, Hypersensitivity<\/li><li><strong>Principles to Follow<\/strong>: Challenge, Respect, Encourage, Coach, Openness<\/li><li><strong>Possible Approaches<\/strong>:<ul><li>Coach person A to use constructive feedback techniques, learn to challenge with scenario rather than judge others or others&#8217; result.<\/li><li>Coach person A to use &#8220;How if&#8221; technique to induce cooperation in thinking and analysis instead of humiliation.<\/li><li>Coach person A to appreciate person B effort, so person A learns how much effort has been done, and person B feels empathized.<\/li><li>Coach person B to accept feedback more openly than taking personally<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2 \u2013 Person A often gets angry and lose patience to pair with others<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Categories<\/strong>: Impatience \/ Emotional Problem, Expectation and Goal<\/li><li><strong>Principles to Follow<\/strong>: Coach, Agreement <\/li><li><strong>Possible Approaches<\/strong>:<ul><li>Coach person A to understand expert &#8211; novice pairing, and coach person A as an expert to learn to coach so person A won&#8217;t expect expert &#8211; expert pairing and become more emotional by not getting expected result.<\/li><li>Coach person A to understand about the goal of pairing, is that to implement quick or to coach each other to build more robust team. Agree with the goal so expectation can be aligned together<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3 \u2013 Person A uses cell phone during pair programming, Person B feels demotivated of the pairing because of the distraction, Person A doesn&#8217;t learn effectively because of the distraction<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Categories<\/strong>: Distraction, Missing Coordination<\/li><li><strong>Principles to Follow<\/strong>: Agreement, Communication<\/li><li><strong>Possible Approaches<\/strong>:<ul><li>Have an agreement practice, how to use cell phone, e.g. person A should inform person B about the necessity and will stand during cell phone usage<\/li><li>Coach person A not to use cell phone in case of not really required, since it could be toxic for the process<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4 \u2013 Person A sits idle during pairing with person B<\/h3>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-07070b3e-a098-4a42-9960-6c03256f2a4c\"><li><strong>Categories<\/strong>: Idle<\/li><li><strong>Principles to Follow<\/strong>: Time Plan &amp; Time Box, Pro-activeness, Fun<\/li><li><strong>Possible Approaches<\/strong>:<ul><li>Have time box and plan the time to have regular role changing of driver and navigator<\/li><li>Coach person A to pro-actively asking questions to person B of unclear things<\/li><li>Coach person B to pro-actively observe person A to recognize in case person A does not understand something and coach person B to pro-actively asking and explaining things to person B<\/li><li>Coach person A and B to be able to bring out interesting topic related to the tasks which is to be discussed so pair programming will be more fun.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5 \u2013 Person A suddenly takes keyboard from person B, person B feels uncomfortable \/ distracted of that activities<\/h3>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-18b64551-588a-42f1-a577-964c02d99741\"><li><strong>Categories<\/strong>: Missing Coordination<\/li><li><strong>Principles to Follow<\/strong>: Communication, Agreement<\/li><li><strong>Possible Approaches<\/strong>:<ul><li>Have an agreement and communication between person A and B, e.g. confirming \/ asking before taking over keyboard<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6 \u2013 Person A is taking breaks which person B cannot understand and disrupting the processPerson A needs some break but person B does not understand<\/h3>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-a3a4ca31-a895-4fd0-a805-e8eb90d9f787\"><li><strong>Categories<\/strong>: Missing Coordination<\/li><li><strong>Principles to Follow<\/strong>: Time Plan &amp; Time Box<\/li><li><strong>Possible Approaches<\/strong>:<ul><li>In case this happens, have an agreement between person A and person B about how long the pairing will take before the break and plan about the break. Plan accordingly and time box the process.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7 \u2013 Person A and person B goes through un-ending discussion which puts the focus on the problems and obstacles<\/h3>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-0281e807-7eeb-4b06-93b3-f7f77176cd62\"><li><strong>Categories<\/strong>: Problem Orientation, Blind Idealism, Perfectionism<\/li><li><strong>Principles to Follow<\/strong>: Solution Orientation, Pragmatism, Communication, Coach<\/li><li><strong>Possible Approaches<\/strong>:<ul><li>Coach person A and person B to have solution orientation discussion technique, focusing on &#8220;how to&#8221; solve the problems. Instead of &#8220;but it will &#8230;&#8221;, &#8220;how to solve it in case of &#8230;&#8221;.<\/li><li>Coach person A and person B to have pragmatical solution technique to move forward instead of holding on un-ending perfectionism. Define and agree about the goal and expectation instead of blind idealism &amp; perfectionism without goal.<\/li><\/ul><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Pair programming&nbsp;[wikipedia]&nbsp;is an&nbsp;agile software development&nbsp;technique in which two&nbsp;programmers&nbsp;work together at one workstation. One, the&nbsp;driver, writes&nbsp;code&nbsp;while the other, the&nbsp;observer&nbsp;or&nbsp;navigator,[1]&nbsp;reviews&nbsp;each line of code as it is typed in. The two programmers switch roles frequently. During few sprints experiences adopting pair programming practice, my IT-Team has collected &#8220;Do&#8221;s and &#8220;Don&#8217;t&#8221;s good practices, but also Issues and Possible Approaches [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":31,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,13],"tags":[11,14,15],"class_list":["post-26","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile","category-extreme-programming-xp","tag-agile","tag-extreme-programming-xp","tag-software-engineering-practices"],"_links":{"self":[{"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26"}],"version-history":[{"count":3,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":32,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/posts\/26\/revisions\/32"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=\/wp\/v2\/media\/31"}],"wp:attachment":[{"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/efelti.com\/tech\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}