Mob Programing

Why do some Mob Programming?

Avoid misunderstanding on some tickets

  • Discover the (dark) other side for the non dev member of the team
      Help them to understand
      Help them to go with the dev team (US splitting, tech point etc..)
  • Continuous learning
  • Technical debt vs Increase of the quality
      Onboarding.
      Junior growing and update the knowledge of the older
  • Avoid "one person knowledge"
  • Common environment setting
  • Help to have the discussion faster and allow to remove useless thing to go to the essential

Preparations:

  • Book a meeting room with big screens / projector / desk / chairs.
  • One computer with good set up (e.g dev env), which will be used for programming. (We also can have other computers sitting around that we use while we need to do researching, looking at databases, etc. There will often be more than one person searching for information about some problem or new technology we are trying to use)
  • Clear user story and breakdown as small as possible (What we are going to do / code). And explain it to the team clearly.
  • A rotation name list.

Roles & rotation for Mob Programming:

  • Mainly we have 2 roles: Driver / Navigator. In this pattern, the Navigator is doing the thinking about the direction we want to go, and then verbally describes and discusses the next steps of what the code must do. The Driver is translating the spoken English / Chinese into code. In other words, all code written goes from the brain and mouth of the Navigator through the ears and hands of the Driver into the computer.
  • There is one Driver and one Navigator at a time, and the rest of the team joins in as shadow Navigators and Researchers. One important benefit is that we are communicating and discussing our design to everyone on the team. Everyone stays involved and informed.
  • If the Driver is not highly skilled, the rest of the team will help by guiding the Driver in how to create the code – we often suggest things like keyboard short-cuts, language features, Clean Code practices, etc. This is a learning opportunity for the Driver, and we transfer knowledge quickly throughout the team which quickly improves everyone's coding skills.
  • Rotation: Every 10 minutes - take turns to play as the Driver / Navigator role base on the pre-defined name list. As the day goes whenever we get to the bottom of the list we just start over again at the top.

Other important notes:

  • Non Sens if the quality is not in the center of the team.
  • Need good relationship between member of a team.
  • Need to be focus.
  • It's important that the people understand that the driver must not be think about the coding part, he only renders what the navigator tells him to write.