May 11, 2022
Why not just split the work?
There is a good question. After all, it seems like the best solution for solving a large task would be to divide and conquer. From personal experience, I have found that is not always the case. In a Collaborative Coding Session, multiple people are looking at the same code. Multiple eyes are much better at catching various mistakes. Alternatively, I might miss a mistake and spend a lot of time debugging, why things are not working.
Another benefit is everyone is looking at the same code at once and sees the big picture. If the major part of the task at hand is coded collaboratively, then afterward, when people do happen to split off on specific tasks, everyone will be able to better navigate the code and see what exactly is happening.
I also think multiple brains working together on a task simultaneously makes it go much more effectively. Everyone thinks a little differently. Everyone has their own bit of wisdom to contribute. Especially when one is coding they're thinking about the code technically while navigators are more looking at the bigger picture. They can better guide the coder than they might guide themselves. Communication is much better when working simultaneously on any given task.
What is collab coding anyway?
From my personal experience in school, I got the chance of working on teams of 3 or 4 people often. Collaborative coding can consist of multiple various formats. Depending on who you are working with the roles in the session might take various forms. If one of the team members is a bit more advanced they might spend more quality time in the role of a navigator while others are more in the driver role. In general, though session would consist of the roles switching based on a timer. So we would have a timer running and every so many minutes the roles would rotate.
The different roles
The navigator's role would consist of guiding the main driver or coder. That usually took the form of either guiding the coder on what to type or doing research on a personal laptop. If there is more than one navigator like on a team of 3 for example, there may be 2 navigators with one driver. The two navigators might split the roles by having one constantly doing research for the other 2 while the other is guiding the driver based on input from the one doing research.
The role of the driver or coder would be coding on the main machine used for the session. They would take the input from the navigator or multiple navigators and manifest it into code. As the driver is coding the navigators are constantly looking over their code to make sure it is clean and free of errors. The main coding machine would always follow the driver with the switching roles.
The different formats
What we often did was in a group of 4 we may split into 2 pairs. Each pair would have its own collab coding session. This way we are splitting up the work in the large project and the coders are still working efficiently.
Or we may have 2 navigators, 1 driver and the other person doing work on their own if for example they were a bit more advanced than the rest of us. In a group of 3, we may have similar formats of 2 navigators, 1 driver or something like 1 driver and navigator, and the other doing their own work solo.
Based on the task at hand and the team members the format might take various forms. We have found that conquering the large project in these collaborative coding sessions was much more efficient than everyone always working on their own. We would still often split up and each work on our own. Especially later on in the project. We may code the major guts of the project collaboratively and then split off for the more specific features. This strategy of working on various apps seemed to be rather effective from our experience.