
The one who coined the term
mob programming is clearly not special in marketing. Who wants to join the gang? The word
mob evokes images of broken glass and looted shops - the population of Springfield is lined up with forks and torches.
Indeed, a gang or mob is the opposite of what a successful programming session wants to see. The crowd is disorganized, prone to imprudent decisions, angry and unwilling to compromise. But group
programming has nothing to do with this.
So what is group programming?

')
What is group programming? Simply put: these are three (or more) developers and one keyboard. No, these are not those strange things that you have seen on the Internet. It is about collaboration and the release of high-quality software.
As the majority of programmers throw into the sweat of one thought about working together with other people, I will tell you in more detail how this looks. Imagine that we have a developer Steve. He is working on an application where users can view recipes. One day, Steve was instructed to add the Favorites feature to the app. Using this feature, users can save recipes in their own list called My Favorites. If they want to see a saved recipe, they simply open the Favorites list and select it.
Steve wants to use group programming for the realization of his function, therefore he reserves a negotiation room and asks his colleagues John and Sarah to join his group. John and Sara appear for a meeting with laptops, ready to work on the implementation of the feature "Favorites".
At the moment, Steve has to set certain rules (yes, mobs have rules). They may be something like this:
- At any given time, one person is a “driver”. This is a man with a keyboard and mouse. The only one allowed to change the code.
- All others take on the role of "navigator» (navigator). While the driver spends a lot of time on physical typing, the navigators have all the necessary time to think, view, discuss, describe. And this is exactly what they should do.
- All often change places. No, this is not some kind of games, like in kindergarten. If people sit in one role for too long, they may be tired. If they have a favorite role, they can get bored without it.
And that's all - now you know what group programming is. Add it to your resume.
Well, I understand what it is, tell me more
If you've read this far, you probably think, “Why does this guy explain group programming? Google already gives 500 explanations. ” Well, I just do this every day for five months. And that's what I found out:
It's really nice
I remember when I first learned about group programming. I was 19, a lot of students not using deodorant were in the room, in a building that looked as if it was meant for demolition (funny, but it did). The professor has just finished explaining the course in data structures. In the end, he joked: "You can work alone or in a group — in the industry, everyone works in groups, they call them mobs." My God, I thought,
and in adulthood there is group work .
Surprisingly, every time I explain the concept of group programming to a new person, it seems that the same sense of fear runs over his face.
Keep your group work.But the bad news is that you are already engaged in group work. At work, you have a team, you turn to colleagues for help, they look at the code for you. It takes a combination of all efforts to determine whether the project will be successful or not.
And then you can understand what group programming is. This is not more group work, but as much. The difference is that all interactions with colleagues will become very easy - you will never again have to guess what they are doing, never.
Group programming helps to get to know your colleagues.

If you ever take your eyes off the monitor, you can find out around other people. It turns out that they, too, have a life! But seriously, if you interact with your colleagues from morning to evening, you will learn them much better.
Since programming is a
job , not an interest club, we need to be more practical. Well interacting teams do a better job. It is a fact, from here all these exercises on team building and going on the nature. Teams in mobs do not need team building, because they already work well together.
Remoteness is not a reason to dodge
“But I work remotely, I’m never in the office to join someone in a mob.” Bad news, buddy, I work remotely all the time. It turns out that in this thing called the 21st century of applications for remote work car and a small truck. My favorite is the Slack video call. It has all the necessary functions: you can share the screen when acting as a driver, and speak in a voice as a navigator. Maybe your company does not use Slack, but something like WebEx, where the organization of the call takes three years of work of the research group. In this case, just open the session in
Appear.in , stop looking for reasons to shirk from productive work.
I program more time because I am less stupid
How does programming stand aloneSo, I’m going to make a confession - I’m not good at CSS. And not just bad, but it is specifically BAD. So you can imagine if I work on a project, say, on my website (soon), then I spend hours headbanging the wall, trying to figure out why my divs are not aligned (though why?).
In group work, everything is different: I don't get stuck on CSS, because there is always a second and third pair of eyes to help. So I’m less time knocking my head on the wall and more time to solve problems.
There is no such thing as "my piece of code"
Let me tell you the horror story, the story of a
particular code snippet. Well, you know those. Originally written by Frank, just Frank. When there were bugs, Frank corrected them. When new features were needed, Frank added them. No one else on the team knew how the code worked. Just what he has to do. If he didn't do what he needed, there is Frank next to him. Well, once Frank was not around. He found a new job and got a big salary increase, well done. And you are left with a piece of the system that nobody understands and nobody wants to touch, enjoy.
Groups work together, so there will never be secrets and riddles in the code. If the mysterious fragment is now, then set a group of programmers on it with the author of this code - and they will put an end to the mystery.
As output
So, this is what I learned (for now) about group programming. Honestly, I was really surprised at how pleasant it is to work and solve complex technical problems. You are probably worried right now that I missed one important positive (or negative) point - fortunately, there is a comment section for this.