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

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

Let's Get Moving With Software Development!

Recently I was reading a discussion on Twitter about software projects, and it reminded me of something. Many years ago I had a conversation with my dad about moving. After just having moved, he wasn't too pleased with the moving experience. He mentioned that there was essentially two models that movers operated under. The first was you paid a fixed price for the move. I don't remember the exact details, but the movers quoted a price most likely along the lines the square footage of the house, or some similar metric. The other model, was simply to pay the movers for their time. If it took them 20 hours to complete the move, you paid for those 20 hours. Now the catch was, as he described it, if you paid for a fixed price the movers didn't really put a lot of care into the move. They simply wanted to get the job done as quickly as possible. I seem to recall that if they broke something, they would reimburse you. However, that wasn't a pain free process. More importantl

The Cost of Meetings

Meetings ... love them or hate them they are a part of everyday business life. I've had multiple bosses that detested meetings, saw them as a waste of time, and would dissuade us from having them. On the other end of the spectrum I've worked for organizations that had countless meeting, many that were of little relevance to me, and left little time in the day to accomplish my other duties. In this posting I aim to examine the cost and benefits of meetings, and also touch upon what it takes to have effective meetings. As someone that has worked as a software developer, team leader, and manager of developers over the years, I'd like to think that I've seen the good and bad side of meetings. Let's start first with the cost. Everyone would agree that a 1 hour meeting requires at least an hours worth of time for everyone that attends. Add to that the need to break ones focus from what they were doing, and regaining that focus after the meeting, you may even raise that