{"id":2364,"date":"2023-07-10T12:20:02","date_gmt":"2023-07-10T12:20:02","guid":{"rendered":"https:\/\/www.infobip.com\/developers\/?p=2364"},"modified":"2023-09-11T14:28:08","modified_gmt":"2023-09-11T14:28:08","slug":"mob-progrraming-why-would-anyone-do-it","status":"publish","type":"post","link":"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it","title":{"rendered":"Why would anyone do something as absurd as mob programming?!"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">On a warm Spring afternoon, Alice, Bob, Carlos, Dave, and I were quietly enjoying a coffee break when I uttered a question I assumed I would regret: \u201cSeriously, people, what are your thoughts on mob programming? Why aren\u2019t we doing it?\u201d&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The looks on their faces spoke volumes. Bob was appalled and thought, \u201cI thought this guy knew a thing or two about parallelism and resource optimization\u2026\u201d. Alice, a highly productive senior engineer, was disgusted, thinking about what a waste it was for five engineers to work simultaneously on only one task. Carlos, the youngest of the bunch, had a curious look. \u201cI wonder if that cute girl from marketing is seeing someone?\u201d he pondered.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dave, our principal engineer, and an omniscient being, in his infinite wisdom, proclaimed that we would try it out. We were already a high-performing team and would deliver everything we committed on time, even if we experimented with this mob programming thing I kept whining about. The biggest benefit would be that they would get me to shut up about it finally<strong>.&nbsp;&nbsp;<\/strong>&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A perfect chance arises&nbsp;&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the words of&nbsp;<a href=\"https:\/\/twitter.com\/WoodyZuill\" target=\"_blank\" rel=\"noreferrer noopener\">Woody Zuill,&nbsp;<\/a><a href=\"https:\/\/en.wikipedia.org\/wiki\/Mob_programming\" target=\"_blank\" rel=\"noreferrer noopener\">mob programming<\/a>&nbsp;or software teaming is:<\/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\">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.\u201d&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">The next day, during sprint planning, we found a task that would be a good chance to try that approach out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>We needed to introduce a new authorization mechanism on a database gateway microservice.<\/strong>&nbsp;This microservice abstracts the massive database infrastructure away from developers of other microservices. It allows them to invoke stored procedures through a simple remote procedure call (RPC) without the hassle of establishing and maintaining database connections, preparing queries, and processing results, performing health checks and failovers when databases are in maintenance, picking a database instance with the fastest response and so on.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since it is a high throughput service with many existing clients, backward compatibility, performance, and reliability were top priorities.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We estimated that&nbsp;<strong>it would take a single person about a week and a half to implement it.<\/strong>&nbsp;We would try to do it in a mob and see how it goes. We will all go into a room, look at the code on the big screen, discuss it, and code together.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Five rules for mob programming&nbsp;&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On Wednesday, we gathered in a meeting room with a giant TV on the wall. I got up and wrote the rules on the blackboard:&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li>No distractions! Ignore Slack, email, and non-critical alerts. We need everyone\u2019s complete and undivided attention.&nbsp;&nbsp;<\/li>\n\n\n\n<li>&nbsp;One person at a time writes the code. We take turns at the keyboard, rotating every 20 minutes.&nbsp;&nbsp;<\/li>\n\n\n\n<li>&nbsp;The main responsibility of the person at the keyboard is to listen and write the code.,&nbsp;&nbsp;<\/li>\n\n\n\n<li>&nbsp;People away from the keyboard discuss and navigate the person at the keyboard.&nbsp;&nbsp;<\/li>\n\n\n\n<li>&nbsp;We take regular breaks every two hours.&nbsp;&nbsp;&nbsp;<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">We had a brief discussion about how we were to proceed. Alice gathered the requirements in advance and did a little design up front, and Dave, the principal, gave us some pointers and advice before the higher-ups summoned him to join the other Avengers and help save humanity from imminent disaster. &nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">First comes awkwardness, then comes progress&nbsp;&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bob was the first at the keyboard, and he obviously had stage fright as he constantly missed keystrokes and misspelled words. It was amusing to watch him struggle until it was my turn at the keyboard; I was even worse. Alice and Carlos were also nervous. It is curious how easy it is to reason about the code when looking at it on a big screen as someone else is writing it.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I tried to think about implementation and design while I was at the keyboard, but it quickly became apparent that&nbsp;<strong>my role was to listen and write<\/strong>. To obey the rules written on the blackboard.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first rotation was stressful for everyone involved, but we pulled through. After a couple of rounds, the mood changed, everyone felt comfortable with the keyboard in hand, and then the magic started to happen.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cI\u2019m supposed to change this part of the code? I have no idea what it does or how it works?\u201d Carlos complained. Bob, who was familiar with said code, gave a short lecture and answered follow-up questions. Now Carlos&nbsp;is confidently modifying it.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cHow will we ever implement this? It is too much work\u2026\u201d two people with little experience with this project asked; we pointed them to the modules that can be reused.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cWow, how did you do that?!\u201d \u2013 Alice is impressed with a clever IDE trick; minutes later, at the keyboard, she yawns as she performs the same trick for the second time.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cI have an idea how we can get some data we need without relying on the client to provide it. Let me show you before we go on a break.\u201d \u2013 Bob, who has been around and seen the world shows us how, and we are all pleased with the proposal. We have routinely done it sub-optimally for years.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">First impressions&nbsp;&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">During our coffee break, we reflect on the experience. Two benefits we\u2019ve seen so far:&nbsp;<strong>All of us are learning something, and it is a lot of fun.<\/strong>&nbsp;We are the kind of team that likes to hang out together, and we just found a new way to do it.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We are a little worried that we are moving too slowly. There are other tasks in the sprint waiting, and Mallory, the product manager, gives us the stink eye as he passes by.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On Thursday morning, we are back in the office, in a meeting room, ready to continue. We are steadily progressing, but we figured out that 20 minutes at the keyboard is too short, so&nbsp;<strong>we prolonged it to 30.&nbsp;<\/strong>We are constantly discussing naming conventions and design;&nbsp;<strong>we are continuously refactoring.&nbsp;<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It becomes ever more obvious that<strong>&nbsp;the teammates are the customers for the code&nbsp;<\/strong>and that coding together is like having those&nbsp;<a href=\"https:\/\/martinfowler.com\/bliki\/OnsiteCustomer.html\" target=\"_blank\" rel=\"noreferrer noopener\">customers on-site<\/a>. You should write the code as if you are trying to get people to pay you for the luxury of reading and maintaining it.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The highs, the lows, the rollercoaster ride&nbsp;&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As we continue to code, someone suggests we approach the part of the code following the&nbsp;<a href=\"https:\/\/www.ibm.com\/garage\/method\/practices\/code\/practice_test_driven_development\/\" target=\"_blank\" rel=\"noreferrer noopener\">Test-Driven Development approach<\/a>.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We all write tests, some of us after implementation, some before. So, naturally, Alice, who writes them after the implementation, rolls her eyes as she grabs the keyboard and proceeds to write the first failing test.&nbsp;<strong>We hit our first serious obstacles that day.&nbsp;&nbsp;<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">None of us liked the metrics code around the cache we added, but we had no idea how to write it cleaner, and Dave was still&nbsp;out there fighting Thanos. Another issue was with a part of the code which performs a remote procedure call to our authorization server. It behaved strangely; we did not understand our RPC framework as well as we had thought.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After a frustrating half an hour, we decided to stop for the day \u2013<strong>&nbsp;bumping heads against the wall just leads to headaches<\/strong>. Before our next session, one person will investigate how to do the metrics part better, and another will learn how our RPC framework handles exceptions in asynchronous calls.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On Friday, we were all working from home; we joined the call and shared the screen.&nbsp;<strong>The obstacles of yesterday were quickly resolved<\/strong>, and in a couple of hours, we had a working solution \u2013 something that works both locally and in our integration environment. We started polishing it up.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bob proposed a simple refactoring, Carlos saw no point in it, but we still did it. When it was done, it was obvious why Bob was keen on doing it.&nbsp;<strong>I wondered how long it would take to explain the same idea through the comments on the pull request.<\/strong>&nbsp;We started cleaning up the code, following the adage, \u201cFirst make it work, then make it right.\u201d&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And as often happens with this kind of work, every modest improvement makes way for another unforeseen. As the code was getting cleaner, it was easier to spot mistakes and opportunities for improvement.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the new code is a mess and schedules are tight, there is always the temptation to check if the code works say, \u201cIt looks good to me,\u201d and approve the pull request. In this industry, that is known to be a typical prologue of many&nbsp;<strong>really scary horror stories<\/strong>. Programming in a mob helped us avoid that pitfall.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The verdict&nbsp;&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On Monday, we decided to call it quits; Bob would do the last 5 percent of the work alone \u2013 add some logging and documentation, write a couple more tests, and deploy it to production.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We all agreed that&nbsp;<strong>our code was far superior to anything we would have done individually<\/strong>. A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When we add up the person-hours it took to deliver the feature \u2013 we were slightly faster as a mob than when using feature branches and PRs.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our engineering manager put it well:&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\">In programming, you do 90 percent of the stuff smoothly, then you get stuck on some stupid thing and lose a lot of time figuring it out. When you\u2019re in a mob, chances are that someone has already bumped into this stupid thing before or can quickly spot a bug you accidentally introduced.&nbsp;&nbsp;&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">We now have&nbsp;<strong>a complex feature that is thoroughly understood, can be easily improved, and quickly be troubleshot<\/strong>&nbsp;by everyone on the team. There was no waiting on PR approval; we all learned new concepts and keyboard shortcuts, tried different coding styles, and saw how the interplay of different thought processes plays out.&nbsp;&nbsp;We practiced talking accurately and listening carefully, we delivered the feature, and we had fun.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The unexpected benefits&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I believe the main reason our sessions were successful is our team\u2019s values of&nbsp;<a href=\"http:\/\/www.extremeprogramming.org\/values.html\" target=\"_blank\" rel=\"noreferrer noopener\">communication and respect.<\/a>&nbsp;Psychological factors were also at play: we are not afraid to make mistakes and look stupid in front of one another, we cherish the opportunities to share knowledge, and there are no \u201cmy way or the highway \u201cegomaniacs on the team.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Company support also plays a part; there is no micromanagement, and if we are steadily delivering value, no one cares how we do it; it is up to us to&nbsp;<a href=\"https:\/\/martinfowler.com\/bliki\/AgileImposition.html\" target=\"_blank\" rel=\"noreferrer noopener\">self-organize<\/a>.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The team mindset about mob programming changed dramatically since a little experience can quelch many common-sense prejudices. Common sense is the great deceiver. We have been doing an excellent job so far, but we did not want that to be an obstacle to improvement. We agreed to continue the old way for simple tasks that can be quickly implemented and reviewed; for the more complex stuff, we will consider mob programming.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cYou\u2019re not coughing anymore, and you look kind of cheerful. Is everything okay?\u201d \u2013 Dinko from human resources asked me.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cI finally got the team to try mob programming.\u201d I smiled as I explained what it was.&nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dinko was amused, \u201cIt seems to have some health benefits as well; you should write an article about it,&#8221; \u2013 he said.&nbsp;&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\/mob-programming-why-do-it-882\/\">ShiftMag.<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.<\/p>\n","protected":false},"author":47,"featured_media":2368,"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":[146,256],"coauthors":[234],"class_list":["post-2364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-post","category-engineering-practices","tag-development","tag-programming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Why would anyone do something as absurd as mob programming?!<\/title>\n<meta name=\"description\" content=\"A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.\" \/>\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\/mob-programming-why-do-it-882\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why would anyone do something as absurd as mob programming?!\" \/>\n<meta property=\"og:description\" content=\"A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/\" \/>\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-07-10T12:20:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-11T14:28:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-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=\"Hrvoje Rancic\" \/>\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=\"Hrvoje Rancic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it\"},\"author\":{\"name\":\"Hrvoje Rancic\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/6a287508f7128e8e1998938de38bc672\"},\"headline\":\"Why would anyone do something as absurd as mob programming?!\",\"datePublished\":\"2023-07-10T12:20:02+00:00\",\"dateModified\":\"2023-09-11T14:28:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it\"},\"wordCount\":2111,\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"image\":{\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg\",\"keywords\":[\"development\",\"programming\"],\"articleSection\":[\"Blog Post\",\"Engineering Practices\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it\",\"url\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/\",\"name\":\"Why would anyone do something as absurd as mob programming?!\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg\",\"datePublished\":\"2023-07-10T12:20:02+00:00\",\"dateModified\":\"2023-09-11T14:28:08+00:00\",\"description\":\"A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.\",\"breadcrumb\":{\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg\",\"width\":2560,\"height\":1707,\"caption\":\"Group of business team work join their hands together with power and successful concept\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.infobip.com\/developers\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why would anyone do something as absurd as mob programming?!\"}]},{\"@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\/6a287508f7128e8e1998938de38bc672\",\"name\":\"Hrvoje Rancic\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/02598b3a76aef6769d50a738985e98ba\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d31a5e98ca5467b3c5b6464e7eb41b070c17969fa316fbf1257ea2b50574ca74?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d31a5e98ca5467b3c5b6464e7eb41b070c17969fa316fbf1257ea2b50574ca74?s=96&d=mm&r=g\",\"caption\":\"Hrvoje Rancic\"},\"description\":\"Hrvoje is a software engineer in Infobip.\",\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/author\/hrvaoje-rancic\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Why would anyone do something as absurd as mob programming?!","description":"A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.","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\/mob-programming-why-do-it-882\/","og_locale":"en_US","og_type":"article","og_title":"Why would anyone do something as absurd as mob programming?!","og_description":"A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.","og_url":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/","og_site_name":"Infobip Developers Hub","article_publisher":"https:\/\/www.facebook.com\/infobip\/","article_published_time":"2023-07-10T12:20:02+00:00","article_modified_time":"2023-09-11T14:28:08+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg","type":"image\/jpeg"}],"author":"Hrvoje Rancic","twitter_card":"summary_large_image","twitter_creator":"@InfobipDev","twitter_site":"@InfobipDev","twitter_misc":{"Written by":"Hrvoje Rancic","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#article","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it"},"author":{"name":"Hrvoje Rancic","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/6a287508f7128e8e1998938de38bc672"},"headline":"Why would anyone do something as absurd as mob programming?!","datePublished":"2023-07-10T12:20:02+00:00","dateModified":"2023-09-11T14:28:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it"},"wordCount":2111,"publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"image":{"@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg","keywords":["development","programming"],"articleSection":["Blog Post","Engineering Practices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infobip.com\/developers\/blog\/mob-progrraming-why-would-anyone-do-it","url":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/","name":"Why would anyone do something as absurd as mob programming?!","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/#website"},"primaryImageOfPage":{"@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage"},"image":{"@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg","datePublished":"2023-07-10T12:20:02+00:00","dateModified":"2023-09-11T14:28:08+00:00","description":"A few thousand lines of code everyone is satisfied with and understands used to sound like science fiction \u2013 now it was reality.","breadcrumb":{"@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#primaryimage","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/07\/group-of-business-team-work-join-their-hands-toget-2022-12-16-05-12-14-utc-scaled.jpg","width":2560,"height":1707,"caption":"Group of business team work join their hands together with power and successful concept"},{"@type":"BreadcrumbList","@id":"https:\/\/shiftmag.dev\/mob-programming-why-do-it-882\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infobip.com\/developers\/"},{"@type":"ListItem","position":2,"name":"Why would anyone do something as absurd as mob programming?!"}]},{"@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\/6a287508f7128e8e1998938de38bc672","name":"Hrvoje Rancic","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/02598b3a76aef6769d50a738985e98ba","url":"https:\/\/secure.gravatar.com\/avatar\/d31a5e98ca5467b3c5b6464e7eb41b070c17969fa316fbf1257ea2b50574ca74?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d31a5e98ca5467b3c5b6464e7eb41b070c17969fa316fbf1257ea2b50574ca74?s=96&d=mm&r=g","caption":"Hrvoje Rancic"},"description":"Hrvoje is a software engineer in Infobip.","url":"https:\/\/www.infobip.com\/developers\/blog\/author\/hrvaoje-rancic"}]}},"_links":{"self":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2364","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\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/comments?post=2364"}],"version-history":[{"count":5,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2364\/revisions"}],"predecessor-version":[{"id":2488,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2364\/revisions\/2488"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media\/2368"}],"wp:attachment":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media?parent=2364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/categories?post=2364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/tags?post=2364"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/coauthors?post=2364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}