{"id":2299,"date":"2023-06-25T09:42:49","date_gmt":"2023-06-25T09:42:49","guid":{"rendered":"https:\/\/www.infobip.com\/developers\/?p=2299"},"modified":"2023-09-11T14:28:35","modified_gmt":"2023-09-11T14:28:35","slug":"two-years-into-pair-programming-the-good-and-the-challenging","status":"publish","type":"post","link":"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging","title":{"rendered":"Two years into pair programming: The good and the challenging\u00a0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming. And it worked.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The team comprises developers with different backgrounds and levels of experience. The idea was to use pair programming to level the team and make everyone faster and more independent in developing new features. We already had positive experiences with pair\/mob sessions when troubleshooting production problems or supporting our users (other engineers and support teams), so we gave it a go.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We\u2019ve been at it for&nbsp;<strong>two years and are happily reaping the benefits<\/strong>.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is pair programming?&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even though programming in a pair has been practiced since the dawn of programming, the practice was first introduced to a broader audience in the 90s. In his excellent book \u201c<a href=\"https:\/\/learning.oreilly.com\/library\/view\/extreme-programming-explained\/0201616416\/\" target=\"_blank\" rel=\"noreferrer noopener\">Extreme Programming Explained<\/a>\u201d from 1999.,&nbsp;<strong>Kent Beck<\/strong>&nbsp;defined pair programming as follows:&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>All production code is written with two people looking at one machine, with one keyboard and one mouse. [\u2026]There are two roles in each pair. One partner, the one with the keyboard and the mouse, is thinking about the best way to implement this method right here. The other partner is thinking more strategically..<\/em>.Kent Beck, Extreme Programming Explained, 1999<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Today, there are more options for pair programming than sitting together in front of a computer with one keyboard and mouse, from simple screen sharing to specialized tools like&nbsp;<strong>Code With Me<\/strong>&nbsp;from JetBrains. However, the above-mentioned principle remains the same.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I heard about pair programming long ago and was always intrigued by it, but I hadn\u2019t had practical experience before we introduced it two years ago. I heard a lot of positive experiences with it, and the success stories were impressive.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is also a fair amount of skepticism, whereas the main concerns are that pair programming is expensive, slow, and necessarily ends in frustration \u2013 everything you would like to avoid in a team. And diametrically opposed to what we were trying to achieve.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rocky start, stellar results&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As the team was already collaborative and had a proven record of great teamwork, we weren\u2019t afraid of pair programming ending in infighting. And yet,<strong>&nbsp;we were off to a rocky start.<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Although everyone was theoretically up for trying pair programming, we didn\u2019t want to make it mandatory. This meant that, in reality, people were quite shy about asking for pair programming.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the issues was that they often didn\u2019t deem a feature valuable or complex enough to have two developers working on it, or there was pressure to code a feature as fast as possible \u2013 and talking about it all day long seemed like a waste of valuable time.&nbsp;There were also some social fears:&nbsp;<strong>What if other team members saw everything I don\u2019t know, what I have to Google, how slow I am?&nbsp;&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We gave up on pair programming on routine, repetitive, and simple tasks because we didn\u2019t get any added value. In that case, pair programming did prove too expensive. But,&nbsp;<strong>when adding new features, we saw more and more benefits<\/strong>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It also took us some time to figure out how to be productive without frustrating each other with unhelpful comments and remarks. We found ways to work through things that bothered us (talking to team members can solve almost anything, right?). We took a pause when needed or moved programming sessions to different times. We didn\u2019t use any specific tool for pair programming, just screen share and audio call.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despite our hesitations, even the first pair programming sessions were a positive experience \u2013 mainly because we all learned more than we expected, not only about programming, frameworks, or tools we used but also about the domain and the feature\/problem we need to solve.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We noticed that the&nbsp;<strong>ratio between talking and coding was much higher than we expected<\/strong>. Since we better understood the problem, the developed solutions and code were better than they would have been if we were coding alone.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Better readability, predictability, and quality&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the beginning, the most experienced team member was the driver of most sessions, and we rarely switched roles during sessions. Still, we were noticeably more productive than working alone.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We paired for&nbsp;<strong>3-4 hours a day<\/strong>, as we had other operations and support we needed to attend to. Not to mention that pair programming requires complete focus and can be exhausting, so 3-4 hours per day was the maximum anyway.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Focus was strictly on the task at hand, without the usual interruptions (Slack, mail, phone\u2026). We never got stuck on a problem and always learned from each other. Exhaustion aside, we were satisfied with the progress, and&nbsp;<strong>the results were better and more predictable than coding alone<\/strong>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After a few months, we started with pair programming more often and switching roles. That\u2019s when another positive side effect surfaced: The code was always readable because if it wasn\u2019t, you immediately had questions about it.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The code quality, in general, was very good. And by quality, I\u2019m referring to Dave Farley\u2019s description: \u201c<a href=\"https:\/\/twitter.com\/davefarley77\/status\/1562834939204231168\" target=\"_blank\" rel=\"noreferrer noopener\">The ability to change software easily, safely, and with confidence is a marker of its quality.<\/a>\u201c. I would say that the solutions we implement regularly are the best that team could implement (in a similar timeframe), regardless of the way of the work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When we switched to&nbsp;<a href=\"https:\/\/www.infobip.com\/developers\/blog\/trunk-based-development-vs-feature-branching\" target=\"_blank\" rel=\"noreferrer noopener\">trunk-based development<\/a>, the experience was even better. My favorite part was no pull requests or pull request reviews. The code was reviewed continuously, and since we had solid automated tests, we got all the benefits of continuous integration.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\"><p lang=\"en\" dir=\"ltr\">&quot;Why you&#39;re not using PRs in your project?&quot;<br>&quot;Because we prefer to use CI\/CD&quot;<br>&quot;But but&#8230;&quot;<br>&quot;Listen, <a href=\"https:\/\/twitter.com\/KentBeck?ref_src=twsrc%5Etfw\">@KentBeck<\/a> invented CI, <a href=\"https:\/\/twitter.com\/davefarley77?ref_src=twsrc%5Etfw\">@davefarley77<\/a> invented CD. They both agree that PRs and feature branches are incompatible with CI\/CD.<br>What do you know that they don&#39;t?&quot;<\/p>&mdash; Uberto Barbini (@ramtop) <a href=\"https:\/\/twitter.com\/ramtop\/status\/1641690501416984578?ref_src=twsrc%5Etfw\">March 31, 2023<\/a><\/blockquote><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Mob programming&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If two programmers do a better job than one, then three, four, or more programmers must do it even better, right? After our initial success with pair programming, we decided to try&nbsp;<strong>mob programming as well<\/strong>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whether you call it mob\/team\/ensemble\/collaborative programming or software teaming, the practice follows&nbsp;<a href=\"https:\/\/twitter.com\/WoodyZuill\" target=\"_blank\" rel=\"noreferrer noopener\">Woody Zuill<\/a>\u2018s definition from \u201c<a href=\"https:\/\/softwareteaming.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Software Teaming<\/a>\u201d book:&nbsp;<em>All the brilliant minds working together on the same thing, at the same time, in the same space, and at the same computer.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or, in more practical terms:&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Software Teaming is a software development approach where the whole team works together on the same thing, at the same time, in the same space, and at the same computer. This is similar to Pair Programming, where two people sit at the same computer and collaborate on the same code at the same time. However, with Software Teaming, we extend the collaboration to everyone on the team while still using a single computer for writing the code and doing other work.Woody Zuill, Software Teaming<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">We were doing mob programming sessions online, sharing screens the way we do when pair programming.&nbsp;<strong>It showed the same benefits as pair programming but wasn\u2019t much of an upgrade from it.&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We noticed it was even harder to stay focused. Usually, the driver and one navigator were actively paying attention, but others got distracted by other work. We opted to do more pair programming sessions instead but are leaving our options open.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since we have been spending more time at the office recently, we will try to do<strong>&nbsp;mob programming sessions live to see if it makes a difference<\/strong>.<em>&nbsp;<\/em>If you\u2019d like to know more about mob programming or try it out yourself, check the aforementioned book \u201c<a href=\"https:\/\/softwareteaming.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Software Teaming<\/a>.\u201d Dave Farley also&nbsp;<a href=\"https:\/\/www.youtube.com\/watch?v=ikilHGYk5Fs\" target=\"_blank\" rel=\"noreferrer noopener\">has a great video<\/a>&nbsp;on the topic, and Thierry de Pauw shared a lot of practical tips &amp; tricks&nbsp;<a href=\"https:\/\/twitter.com\/tdpauw\/status\/1582318541906190337\" target=\"_blank\" rel=\"noreferrer noopener\">in this thread.<\/a>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Intrigued? I certainly hope so!&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pair programming and trunk-based development have proven to be an excellent combination for us. We also started practicing&nbsp;<strong>test-driven development<\/strong>&nbsp;with more discipline to see if it would improve our work. That combination resulted in continuous progress and predictive feature releases every time we used it.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If this article has motivated you to try pair programming, here are some great resources to get you started:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li><a href=\"https:\/\/martinfowler.com\/articles\/on-pair-programming.html\" target=\"_blank\" rel=\"noreferrer noopener\">On Pair Programming \u2013 Birgitta B\u00f6ckeler, Nina Siessegger<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=fLG4m2kMkD4\" target=\"_blank\" rel=\"noreferrer noopener\">Key to Pivotal Software\u2019s success: Pair programming! (Rob Mee)<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=RCDfBioUgts\" target=\"_blank\" rel=\"noreferrer noopener\">I\u2019ve Pair Programmed for 30,000 Hours: Ask Me Anything! \u2014 Joe Moore<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=t92iupKHo8M\" target=\"_blank\" rel=\"noreferrer noopener\">You Must Be Crazy To Do Pair Programming \u2022 Dave Farley \u2022 GOTO 2022<\/a>&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/twitter.com\/thiagoghisi\/status\/1621303250917163008\" target=\"_blank\" rel=\"noreferrer noopener\">Remote Pair Programming Good Practices \u2013 Thiago Ghisi<\/a>&nbsp;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">And if you are already pair programming, share your experience with me on&nbsp;<a href=\"https:\/\/twitter.com\/kranjcec\" target=\"_blank\" rel=\"noreferrer noopener\">Twitter<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/kranjcec\/\">LinkedIn<\/a>!&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>*This article was created through the Infobip Advocate program and originally published on&nbsp;<a href=\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/\">ShiftMag.<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming. And it worked.\u00a0<\/p>\n","protected":false},"author":39,"featured_media":2311,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[28,254],"tags":[193,256],"coauthors":[181],"class_list":["post-2299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-post","category-engineering-practices","tag-engineering-culture","tag-programming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Two years into pair programming: The good and the challenging\u00a0<\/title>\n<meta name=\"description\" content=\"In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Two years into pair programming: The good and the challenging\u00a0\" \/>\n<meta property=\"og:description\" content=\"In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/\" \/>\n<meta property=\"og:site_name\" content=\"Infobip Developers Hub\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/infobip\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-25T09:42:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-11T14:28:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Denis Kranjcec\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:site\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Denis Kranjcec\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging\"},\"author\":{\"name\":\"Denis Kranjcec\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/fa06907dcf59f83ef428a9aea13899bc\"},\"headline\":\"Two years into pair programming: The good and the challenging\u00a0\",\"datePublished\":\"2023-06-25T09:42:49+00:00\",\"dateModified\":\"2023-09-11T14:28:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging\"},\"wordCount\":1484,\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"image\":{\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg\",\"keywords\":[\"engineering culture\",\"programming\"],\"articleSection\":[\"Blog Post\",\"Engineering Practices\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging\",\"url\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/\",\"name\":\"Two years into pair programming: The good and the challenging\u00a0\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg\",\"datePublished\":\"2023-06-25T09:42:49+00:00\",\"dateModified\":\"2023-09-11T14:28:35+00:00\",\"description\":\"In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming.\",\"breadcrumb\":{\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg\",\"width\":2560,\"height\":1707,\"caption\":\"High angle view at modern office workplace with two computers on table, IT programming concepts\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.infobip.com\/developers\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Two years into pair programming: The good and the challenging\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"name\":\"Infobip Developers Hub\",\"description\":\"Build meaningful customer relationships across any channel\",\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.infobip.com\/developers\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\",\"name\":\"Infobip Developers Hub\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"width\":696,\"height\":696,\"caption\":\"Infobip Developers Hub\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/infobip\/\",\"https:\/\/x.com\/InfobipDev\",\"https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ\",\"https:\/\/github.com\/infobip-community\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/fa06907dcf59f83ef428a9aea13899bc\",\"name\":\"Denis Kranjcec\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/b581c4217284ee0687dd78cf8c30700a\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/459f494b0aeff6e37f634512fd758c31cdef0b9e749a300cd7ce56762c33f67f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/459f494b0aeff6e37f634512fd758c31cdef0b9e749a300cd7ce56762c33f67f?s=96&d=mm&r=g\",\"caption\":\"Denis Kranjcec\"},\"description\":\"Denis works at Infobip on the observability stack, using mainly Java as a language and platform of choice. He is also an experienced product manager, system architect, and developer of complex information systems. He is always looking for new ways to be a better software engineer.\",\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/author\/denis-kranjcec\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Two years into pair programming: The good and the challenging\u00a0","description":"In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/","og_locale":"en_US","og_type":"article","og_title":"Two years into pair programming: The good and the challenging\u00a0","og_description":"In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming.","og_url":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/","og_site_name":"Infobip Developers Hub","article_publisher":"https:\/\/www.facebook.com\/infobip\/","article_published_time":"2023-06-25T09:42:49+00:00","article_modified_time":"2023-09-11T14:28:35+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg","type":"image\/jpeg"}],"author":"Denis Kranjcec","twitter_card":"summary_large_image","twitter_creator":"@InfobipDev","twitter_site":"@InfobipDev","twitter_misc":{"Written by":"Denis Kranjcec","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#article","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging"},"author":{"name":"Denis Kranjcec","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/fa06907dcf59f83ef428a9aea13899bc"},"headline":"Two years into pair programming: The good and the challenging\u00a0","datePublished":"2023-06-25T09:42:49+00:00","dateModified":"2023-09-11T14:28:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging"},"wordCount":1484,"publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"image":{"@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg","keywords":["engineering culture","programming"],"articleSection":["Blog Post","Engineering Practices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infobip.com\/developers\/blog\/two-years-into-pair-programming-the-good-and-the-challenging","url":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/","name":"Two years into pair programming: The good and the challenging\u00a0","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/#website"},"primaryImageOfPage":{"@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage"},"image":{"@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg","datePublished":"2023-06-25T09:42:49+00:00","dateModified":"2023-09-11T14:28:35+00:00","description":"In an attempt to speed up our development process, my teammates and I took a somewhat controversial route \u2013 we introduced pair programming.","breadcrumb":{"@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#primaryimage","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/06\/office-workplace-with-two-computers-on-table-it-pr-2023-06-23-05-44-08-utc-scaled.jpg","width":2560,"height":1707,"caption":"High angle view at modern office workplace with two computers on table, IT programming concepts"},{"@type":"BreadcrumbList","@id":"https:\/\/shiftmag.dev\/pair-programming-benefits-challenges-563\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infobip.com\/developers\/"},{"@type":"ListItem","position":2,"name":"Two years into pair programming: The good and the challenging\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/www.infobip.com\/developers\/#website","url":"https:\/\/www.infobip.com\/developers\/","name":"Infobip Developers Hub","description":"Build meaningful customer relationships across any channel","publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infobip.com\/developers\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infobip.com\/developers\/#organization","name":"Infobip Developers Hub","url":"https:\/\/www.infobip.com\/developers\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","width":696,"height":696,"caption":"Infobip Developers Hub"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/infobip\/","https:\/\/x.com\/InfobipDev","https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ","https:\/\/github.com\/infobip-community"]},{"@type":"Person","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/fa06907dcf59f83ef428a9aea13899bc","name":"Denis Kranjcec","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/b581c4217284ee0687dd78cf8c30700a","url":"https:\/\/secure.gravatar.com\/avatar\/459f494b0aeff6e37f634512fd758c31cdef0b9e749a300cd7ce56762c33f67f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/459f494b0aeff6e37f634512fd758c31cdef0b9e749a300cd7ce56762c33f67f?s=96&d=mm&r=g","caption":"Denis Kranjcec"},"description":"Denis works at Infobip on the observability stack, using mainly Java as a language and platform of choice. He is also an experienced product manager, system architect, and developer of complex information systems. He is always looking for new ways to be a better software engineer.","url":"https:\/\/www.infobip.com\/developers\/blog\/author\/denis-kranjcec"}]}},"_links":{"self":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/comments?post=2299"}],"version-history":[{"count":4,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2299\/revisions"}],"predecessor-version":[{"id":2312,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2299\/revisions\/2312"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media\/2311"}],"wp:attachment":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media?parent=2299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/categories?post=2299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/tags?post=2299"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/coauthors?post=2299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}