by Nate Wixom and Torrey Powell
With a growing team of engineers, creating a consistent process can be difficult. Individual developers and programmers approach code differently — from writing the code to fixing bugs to making additions — making it inconvenient, if not impossible, to decipher when a developer leaves or takes a vacation. To overcome these obstacles, Clearlink implemented mob programming at the start of 2017 — and ever since, we’ve increased productivity and efficiency in several areas.
Here are six of the top ways we’ve seen major improvement across our organization.
1. Reduced Process Waste
Most development shops operate on the old paradigm of one developer per project. The product is developed in a vacuum, and the developer is the only one who knows the project inside and out. With mob programming, however, multiple eyes are on each piece of code, resulting in fewer bugs and fewer required revisions.
The real magic for Clearlink came when we combined mob programming with the Scrum framework. A marketing director or product owner works with a Scrum Master, who then works with the mob developer team. They have daily standup meetings to check with the product owner and make sure the project is on track and meeting requirements. This regular stakeholder communication further helps prevent process waste and ensures that the project is always on target
2. Increased Efficiency
Since putting mob programming in place, we’ve had to make tweaks here and there to make it work for our team. We found that it’s most effective when developers take turns leading their mob. To facilitate, we set what we call a mob timer: every five to 15 minutes, we switch between who’s the driver and who are the navigators.
The driver’s responsibility is to type and input the code, while the navigators tell the driver what to type and have time to think ahead, review, and discuss best practices. By switching who does what on a certain cadence — somewhere between every five and 15 minutes — each person within the team is allowed time to focus while driving and time to be creative as a navigator. It also gives interns and junior developers the chance to give and receive feedback and gain confidence and leadership skills.
3. Consistent Workflow
Without mob programming, projects had to be put on hold if a developer was sick, went on vacation, or took an extended leave. The valuable flow and cadence of that project would be broken, adding undue stress to project managers and product owners.
As an example, when one of our developers had premature twins, he had to take an unexpected extended leave of absence. If we hadn’t been mob programming, someone who was working on a different project would have had to come work on his project — or perhaps the project would have been put on hold. Such context-switching is avoided with mob programming. If one member of the mob needs to be absent for a period, the mob can still move forward with the project.
4. Enhanced Learning Opportunities
Mob programming is a wonderful way to expose developers to new types of code. To facilitate this exposure, we reorganize our mobs on a regular cadence. Because Clearlink opts to use the best code frameworks for each individual project — rather than one standard framework for every project — our developers get exposure to different programming languages. This exposure teaches them to be more well-rounded developers.
After a few projects, it’s possible for a developer to become an expert in several types of programming languages. This helps them in their careers, whether they stay with Clearlink or go somewhere else later on.
5. Immediate Knowledge Sharing
Mob programming has also simplified our onboarding process. Previously, we would pull a developer off their projects to help a new hire get acclimated and up to speed with the different tools we use. Now we can add the new hire into an existing mob so they can immediately start getting familiar with the project and begin to contribute.
Knowledge sharing, which is so important in mob programming, becomes effective immediately — and it doesn’t break flow of the project or of an individual developer. The mobs are the onboarding. We simply add someone to the mob, and they come up to speed very quickly.
6. More Solid Product Creation
After about six months of mob programming, Clearlink began to see some big benefits. Because multiple eyes have seen the same set of code for each project, they tend to have fewer bugs when we release them into production. This also means our projects are less likely to come back into our queue again, which allows us to move on and focus wholesale on a new project.
This differs from when individual developers were working on projects. With only one set of eyes on the code, an individual developer would often release projects with previously unnoticed bugs. We would then have to re-inventory the project, disrupting flow. Mob programming, on the other hand, allows us to release projects that are, quite simply, better. We’re able to get through projects faster because they are higher quality and don’t require any rework or restructuring.
Mob programming has streamlined our process at Clearlink, allowing us to work through projects quicker and more efficiently. We release better products and train better developers with this system of production. Implement mob programming on your own team and you can see better results too.
Nate Wixom is the Director of Marketing Technology at Clearlink, with nearly 20 years of experience on technology projects and initiatives.
Torrey Powell is the Director of Software Engineering at Clearlink, with over 15 years of experience directing enterprise level software development projects.