From the lab

Mob Programming Timer to our CLI app

We upgraded the Prototyp CLI application (a prototype from a previous Prototyp Week) and added a Mob Programming Timer.

Tech used

  • Go
  • Charm
  • CLI

Press to view video

Background

During the last Prototyp Week, a Prototyp CLI (Command Line Interface) was developed to simplify the daily work life of all employees. That version of the CLI application supported communication in Slack, time reporting in Harvest, and time estimation in Planning Poker. Now, we wanted to upgrade the CLI app with:

  1. A mob programming timer module to use when pair- and mob programming. To keep track of when to switch between driver and navigator roles, todo:s, and, of course, the time.
  2. An onboarding module for new hires to get them up and running with their computers and ensure they have everything they need to start coding.

The Process

As we were developing a module for mob programming, we decided "to do as we learn" and use a mob programming approach. The whole team worked simultaneously on the same thing in the same space with the same code.

Gruppen utvecklare deras nya Prototyp CLI system.

We took turns typing on the keyboard (being the driver) while the rest instructed and guided (navigators) what was being typed. Each person got 20 minutes as a driver before we switched. This way, we got to learn and experiment with a new programming language and explore new libraries together!

The Challenges

One challenge was to make the right choice of what CLI Library to use. We wanted to know how they all worked to understand what was possible, so we spent much time (more than we had) exploring a handful of them, such as Charm’s Bubbletea and Wish, Cobra, and Reactea. Ultimately, we settled on using Bubbletea and Wish for the mob programming timer module and combining Cobra and Bubbletea for the onboarding module.

https://charm.sh/ har mängd olika CLI-bibliotek att tillgå.

https://charm.sh/ offers a variety of CLI libraries.

The long exploration phase also led to difficulties in keeping our focus in the actual production. Instead, we jumped back and forth between libraries and working on the mob- and the onboarding modules alternately. In addition, we had little to no experience writing in Go before, which, combined with the already mentioned, became a significant hurdle for us.

Therefore, at the end of the week, we decided to narrow the scope and focus on what we felt was more bite-sized and had the potential of being complete (or near to it) with the time we had left. We decided to focus only on the mob programming timer.

Result / Key takeaways

In the end, we managed to finalize a small mob programming timer accessible by SSH which we could add to the current CLI application

Mob programming is very time-consuming when everyone is new to a code language. The learning curve is quite steep if the team also needs to learn more about CLI libraries. Even if we didn't finish everything we wanted to do, it was still worth it for us - because what we lost in speed we made up for in fun.

Mob programming modul for Prototyp CLI.