Skip to main content

Our Experience With Mob Programming

I was first made aware of Mob Programming well over a year ago. While I've always felt that you can do great work in collaborative environments, I have to admit that at first I was somewhat skeptical of the idea. How could having the entire team work on one thing at a time be as productive as everyone working in parallel?  Having said that I considered myself open minded and am always willing to give something a chance.

As mentioned previously, I've had great experiences working collaboratively in teams. In the past I worked on a large team making complex software, and our best work was produced after designing as a group with white boarding sessions and intensive debates about best approaches. I had also worked for a Credit Union, and worked hand in hand with the business to help come up with ideas on how to best utilize technology to solve their business challenges. Only by collaborating as partners were were able to come up with practical solutions that properly addressed their needs, while at the same time utilizing technology to it's maximum potential.

At my current position we had a single team, which essentially had been split in two. There was a legacy application that was still in use, and we had a new application that was being spun up to replace the legacy one. Half of the team worked on the new app, while the other half spent their time supporting and legacy system. As the end of 2015 approached, it was clear that we would be retiring the legacy system and would put the entire team's efforts into the new app. It was the holiday season, which tends to be a slow of the year. Many people are off, and in my experience not a lot gets done. Given the circumstances, I thought this was a perfect chance to experiment with mobbing.

Our first challenge as a mob was to refactor a somewhat complicated piece of logic, in order to be able to extend some functionality. I was thinking that it would take about a week to finish. What we found out is that by mobbing we were able to finish the work in a little over a day. So instead of one person spending five days, we had three people spending one day. (Some of the team was off on holiday at this time.) If you prescribe to the math, we roughly gained about two days in productivity. Not only that, we delivered that functionality quicker as well.

Everyone on the team was engaged. Additionally, we all knew how this critical piece of the system worked. We no longer would have to worry if a particular team member was available, because they were the only one that knew how something worked. We also didn't have to rely on communication via meetings, emails, etc, because we were all in the room working on the problem. Perhaps equally important, we all got better as engineers as we were able to learn from each other.

After the holiday season was over, I was concerned about our ability to continue the practice. We mostly got a free pass during the holiday season, but now some of the management was back in the office and starting to ask questions about mobbing. I was able to explain all of the benefits, and I think the idea that everyone was able to quickly get up to speed on the new project was a major selling point. We were allowed to proceed with the practice, with the caveat that we would continue to deliver.

We continued to mob over the next few months. Now that all of the other team members were back from the holidays, we had a bigger team to work with.  Overall the experience continued to be positive. There were a few instances were it felt that the team was spinning it's wheels, which I largely attribute to us all getting used to the process. Some simply wanted to solve the problem on their own, instead of articulating to the group their thought process. We still delivered, and we still had the added benefit of a shared understanding of the system.

Unfortunately we had a team member that didn't like working in the mob, and it proved to be a challenge. On the one hand we didn't want to force anyone into mobbing. On the other hand, it didn't make sense to have someone working completely independent of the mob, while still working on the same functionality. As the team leader I proposed to the individual that he could work on functionality that was ancillary to our efforts, and was still challenging and valuable. In the end he decided to continue to work in the mob, as I don't think he wanted he wanted his work to be  viewed as secondary. Even though he continued to work with the mob, it was evident that he preferred working alone.

Around this time the leadership of the department changed.  The new leadership seemed less open to the idea of mobbing. While much of the team enjoyed it, and it was working well, we also had a someone that didn't and he was rather vocal about it. Eventually members of the team were split off onto other unrelated tasks, and the mob was killed off in a rather indirect manner.

Despite this eventual outcome, we did get to experience several solid months of mobbing. With one exception, we all really enjoyed it. More importantly the quality of our work was high and we all learned a lot during that time. Ironically enough, now that we're not mobbing, we are falling back into the same problems that occurred in the past. Sometimes we encounter something that only one team member is aware of, and they are not available we end up losing time.

Looking back perhaps we could have done more to accommodate the team member, although I think some people simply prefer working alone. My conclusion is that it only makes sense to mob if all team members are genuinely open to it, or if they are open to working alone on unrelated work. That is to say that it might not work with all teams, but when the whole team buys into it,  you can see some great results.

As an aside I decided to create a web based Mob Timer, in my own free time. One my friends, who has a design background, helped with the UX/UI portion, and we're very pleased with the result. If you're interested in Mob Programming, I'd suggest that you give it a look.

My final conclusion is that in the right environments Mob Programming can be great. Not only does the work get finished quicker, the end result tends to be much higher in quality. Additionally you end up with a shared understanding of the system by the entire team. In short, if you have the ability to do so, it's definitely a practice worth trying.

Until next time!

Comments

Popular posts from this blog

The Retrospective From Hell

Over the last 17 years of my career I'd like to think that I've learned a lot. I've learned from positive role models, from experience of what works well, by studying my craft, and from my own trials and tribulations. However, I believe the lessons that I have learned that had the biggest impact is learning from failures. One such failure occurred at a previous employer. By telling the story of a past failure, we can reflect and see what can be learned from it. No names will be mentioned, no embellishment or poetic license will be will used. As a matter of fact, I will make every attempt to be objective and accurate as possible. The truth of the matter the story doesn't need it; it speaks for itself. Some time ago I worked for a company that, among other things, had a software product. There was a small team of software developers, and someone that acted as the manager of the team. I was brought on board, as a software engineer, to help with the software product as

Value and Quality over Schedules

According to a study by CEB Research, 70% of software projects are delivered on time, but only on 38% meet stakeholder's expectations. In most cases the people that use your software will not even be aware of internal project deadlines. Case in point, think of all of the software the you use everyday. You are rarely aware of what the due date was. However, what you do notice is how well the software does it's job. It's it's of low quality, you'll very likely notice right away. Even if it appears to be of high quality, if it doesn't provide any major value to you, chances are you still stop using it. With that in mind, then why do many software projects today have a set scope and a hard due date? When building software for a customer, it's only natural for them to what to know what exactly they are going to get and what is will cost them. That is a very reasonable thing to want to know. Even when developing software internally, there are often similar expe

How to run your IS department

Over the course of being a software developer for the past 10 years, at 5 different employers, I've noticed a reoccurring problem at these organizations. The business leaders simply don't understand what IS does and the value that they can bring to the company. (The one exception being a software consulting company, where IS was their business.) Most organizations tend to see IS in a similar light as brick layers or plumbers. They are simply there to keep things working. Additionally they are there to build what other business leaders have envision. In this analogy the business leaders are the architects, coming up with the grand designs, while the software people are the construction workers, putting the pieces together. What the business often fails to realize is that role of IS is to help the business run more efficiently, increases company wide productivity, and most importantly be a strategic asset to the company. In all of my working experience, the software