Whole Team Development

Ian Moss
10 min readJul 15, 2020

Mob Programming (For Me; March 2020->July 2020)

I thought I’d write up a blog on my recent experiences of Mob Programming, or as it can also be described as a whole team approach. I’m not a remote developer. But I do have a lot of development experience, since I graduated back in 1997. I’m not claiming to be an expert in Mob Programming. This is merely my experience so far. Which has been good :)

http://alter.is

In March, during the lock-down, I was suddenly stuck. Not really getting on with solo (remote) development, and now I was isolated — which eventually would go on for 2 months.

I noticed that Woody Zuil was running a last minute workshop. There was around 50 people. And we all were keen to learn more about how to mob programme.

The Initial Workshop

Some had pair programming experience, some not. We all ‘zoomed’ in, and then did the ISBN kata, with coder dojo and zoom sharing the driver’s web browser — since the ‘IDE’ was web-based, and built into the dojo with the test environment. Each test run, was also a commit. Nice.

The team was 5 people. With an assigned driver, and navigator. Similarly to pair programming, you have a driver and Navigator. The driver would only do what the Navigator says. And then after a period you would rotate. I believe we rotated every 5 minutes, with one person keeping a clock running.

We went through each person in the team as driver, then did a retrospective, and repeated. Straight away we were productive. And this is actually a miracle given no-one knew each other before. Everyone was personable. There were no heroes. Everyone was down-to-earth, collaborative, and focused on what solved the next aspect of the problem. Momentum was high, and we were productive.

One thing we did notice was that we were all confused by who was the Driver/Navigator. It was resolved by rotating post-its, on a piece of paper, and having that visible behind one person’s camera. Nice.

The retrospective’s goal was to amplify the good, and not dwell on the negative, which worked and also gave a very good feeling to the people in the exercise.

The Next Workshop

And well, whilst a good one-off feeling is great, was it repeatable?

There was another workshop I found out about via a tweet. Held by the Munich Software Craftperson community. And again, we used the online IDE of Cyber Dojo. I felt a bit more comfortable with zoom calls now. And had a bit more of a clue about what would happen.

The learning of ‘the team’ staying quiet, unless needed, was amplified again.

It also further amplified that a Kata was a great way of getting a team figuring out ways of working together. It’s a different problem to our day jobs, but also often non-trivial. They come with no long-term commitment, and are often more fun because this.

(There was also XP Manchester where we ended up working on a kata as a mini mob. Lovely to reconnect with those folks).

(Woody also gave an interesting talk at Hamburg Ruby User Group. There maybe other ruby user groups in the pipeline?)

A More Practical Project?

From some people’s angle a Kata is too abstract, so I felt that a more practical example is needed. This could lead to how the experience on how to do consultancy with mob programming.

During lock-down, I really enjoyed the meetups that moved online, and they even increased their audience size, whilst many gave up. Suddenly you could go to Hamburg, Berlin, Málaga, Japan or even Manchester in the same day. Something that was really quite great during World Product Day.

But, it was tricky to find all of these events that have moved online vs the ones that went on pause.

So, the idea of Meetups Live was born. This would list the meetups that are still alive. Originally I was thinking for comedy, music and intercambio. But why not Mob Programming?

Simply, we can log in, add events, and then tag them with ‘mobprogramming’ (or comedy, or ruby etc). Subsequently, a user can subscribe to tags, and receive a weekly email with the events happening in that tag. Nice.

Can We Build This Just Using Mob Programming?

Myself and Tonio, have been meeting regularly, on Tuesday and Thursday’s for 2 hour sessions. And I’ve been trying to regularly include others. Which has not proven easy. The community is small and fragmented, but enthusiastic.

Ironically our tool could make it easier for people to discover they can take part in our mob programming project.

To date we have included 3 others. Nata, Lars and Harald. Thanks to all.

Mostly the method of screen sharing via Zoom has worked well. I fire up an editor — usually Sublime, Atom or lately a bit of Visual Studio too. I have a web browser open, with the local project running, the production one, and the mob timer. And I run a terminal with a rails server (well foreman), the rails console, and a normal command line for initiating tests, and git commits.

It’s mostly worked quite well. There was some issues with keyboard layouts — especially I think it was a Swedish keyboard? I have a UK keyboard. However, it mostly went ok. The most hilarious point was when someone found the wifi off button. Which of course was pretty fatal. Not been able to repeat this random key press locally yet either!

We’re nearly at a point where the site will have fulfilled it’s initial promise in a basic way, having started adding the email functionality this week-14th July, 2020. Perhaps after a pause, we can look into how to add listings in surrounding technology.

General Issues

  • Some internet connections are not great. For many years, I had great cable internet in the UK, but in Spain and Germany the internet is not generally as good. In ‘these times’ home internet connections are highly stressed. This makes video utilities harder to use well. Zoom defaults to 720kbs which is higher than say Google Hangouts, but does allow for easy screen sharing and importantly control.
  • Zoom feels like the default good tool, but it’s not perfect. The UI is greedy, as in it jumps above everything else. Some people have privacy concerns, which is fair, though I’m unsure there’s a different way to solve this problem. I would love them to suggest an alternative video chat+ screen sharing setup. We need simplicity i.e. one tool ideally, and screen sharing with remote keyboard & mouse control.
  • Video Not everyone is comfortable with their face appearing on video. And you know what, in March 2020, I was VERY uncomfortable with this. But with the current reality, where it is likely that _some_ people will be remote and isolated in your team, I think it important we bring the humanity back. This is as close to face-to-face connection as we have got right now. Sure, some UI’s/UX’s are not perfect. But we’re in an age where mass video conferencing are happening a lot. GoToMeeting is being used by the EU. Hop.in is being used by TOA and Silicon Allee in Berlin for networking. Family and agency meetups are happening via Whereby. These tools are evolving, and people should keep giving feedback on them. But we shouldn’t let these thoughts stop us from connecting, and progressing with what we have right now.
  • Rotating Keeping track of the time, so that you rotate is necessary, but whilst a phone has a timer, it can be distracting for that one person. A phone also doesn’t keep track of who is the next Driver/Navigator. It is worth having a seperate timer, but maybe the evolution of this is that it is integrated with PM tools such as trello. Unsure. See the timer we used in the references.
  • Research phase When you have a high momentum going, it feels hard to stop. Almost a worry, as you’ve finally got everyone in the same place, same time. Especially when you’ve reach a point where it isn’t clear about the requirement or a more in-depth look at the architecture is needed. The team is great at answering syntax, and the navigator is taking you along the road-map, but sometimes you may need 30 minutes or an hour for research to happen, and then regroup. Easier in longer sessions. I feel like I’ve much to learn in how to do this aspect effectively.
  • Duration This is highly interactive work, and as such is tiring for most humans. You can adapt a little, each time. But in the workshops I found 6 hours was enough. In our practical project, I find 2 hours is good, but it has proved hard to arrange even these regularly. It has felt that more than 2 hours is possible mentally — though a good break is needed if the 2 hours is of solid duration. Time flies, it is a great feeling of productivity/team/family, but it is still tiring.
  • Requirements If a Product Owner is in the mob, then I should imagine you would never run out of requirements. However, this maybe only possible for a period of a session. So the team, should probably need means of making assumptions, and recorded them. They shouldn’t be too great a leap, or make vast assumptions about what the end customer needs.
  • Diversity. Everyone is friendly. But generally I find it’s mostly white and male. There’s a few exceptions of course. But I think this approach comes from experience. And the experienced folks are less diverse. There’s lots of efforts in the ruby world with Rails Girls — Code Curious in Berlin, to increase diversity. I hope we can include many of those with less experience, even if it is to just try it out. I hope we can also try more 24 hour experiments that allow for regions of the world often forgot in software development to be included.
  • Community The number of people experimenting with mob programming is increasing every week. But it is still quite small. Joining a mob is not so easy to do. Often for commercial reasons. These could be made easier. Perhaps a generic NDA for a mob member is needed? It has been hard to keep intouch or track those interested in it. Woody Zuil has been volunteering to speak all over the world, and there’s always increasing interest after this. A couple of Slack channels are around — but I find these hard to track. I find tweeting with #mobprogramming gets some interest, and those from the Mob Mentality show are prolific on twitter.
  • Commercially niche. Whilst some companies experiment with mobs it’s far from the norm. Equally it is also quite hard for consultants to take part in them at the moment. Something I was keen to counter with the Meetups Live mob. So, as the demand grows, perhaps we will see an uptick in commercial demand for people to work as a mob. I find it quite hard to find teams to join generally in Berlin, and this approach requires at least 3 people. I hope to be able to try it commercially at some point though here.
  • That Question About It Being 3 Times The Cost. I don’t feel I have a good response to it. I would love to chat to people who do have a good answer.
  • Keeping connected with other Mob Programmers. The workshops are well attended with some interesting people. I’ve not found a great way of keeping in-touch with everyone yet.

Potential

Whole Team or Mob Programming has got a lot of potential to bring teams together. Perhaps just for a day a week, maybe for all of the week.

It feels like it is a great way for a mix of skills to be productive on one task. Even if some of the team isn’t recently experienced in a current technology. This helps overcome the over-concentration in recruitment on “Do you know this API?” “This framework” etc. As software engineers we move forward on problem solving whatever the technology, and the mob programming approach allows this thinking to come to fruition easier. It almost feels like any person with the right collaborative mindset, could find a way to contribute to a mob. And I’m not just talking about Java developers if it’s a ruby project. I mean Product Managers/Owners, and UI/UX developers too. It does take a little iteration, and learning about the approach, but I believe it is possible for a much greater range of skills to contribute. And of course, everyone is a junior in some skill within tech, so helping people get up-to-speed is also useful, but I don’t believe it should be sold as the main benefit.

It feels like the barriers to entry for an extra person in the mob are minimal, if a mob is open. This could really dramatically increase the number of people included in the tech industry.

I had a crazy thought about doing a 24 hour mob around the whole globe. 4 hours commitment. Rotate new people in every 2 hours into the next time zone going east to west. This would allow 24 hour production on a project. So potentially 3x as much productivity. Or just you go to sleep with a problem, and wake up to find it solved?

A 24 hour mob could further increase inclusivity in regions of the world where there is less software development accessible. I’m not an authority on this, and watch with interest the upcoming experiments by Bob in August. These look to be quite scientific in nature, and also aim to emulate a normal working day, all-be-it at the weekend.

References

Cyber Dojo This provides an browser based environment for running tests, and editing Kata code exercises. https://cyber-dojo.org

Mob Timer This handles rotation too, as well as a variable rotation time. https://mobti.me

Mob Mentality Show — A regular show, covering lots of different aspects of modern software development & mob programming. https://www.youtube.com/channel/UCgt1lVMrdwlZKBaerxxp2iQ/videos
They also suggest:

Woody Zuill / Hunter Industries. A pioneer. And in a movement dedicated to no heroes, he is actually the super star hero. Anyone ever heard a presenter ask if people need to have a break? https://twitter.com/WoodyZuill

Remote Mob Programming. Pretty comprehensive website, with a list of good practises. https://www.remotemobprogramming.org (I should add the trello board here too).

Software Crafters Slack http://slack.softwarecraftsmanship.org

Remote Mobbers Slack … lost in the either of slack for now.

Thaaaaat’s All Folks. Thanks for reading. Hope I can inspire you to give Mob Programming a try. Just give me a shout, and I’m happy to schedule joining your zoom.

Many thanks,
Ian
(and the alter.is crew).

Published v1: 15th July, 2020.
v2: Will include pictures, and feedback, sometime around 22nd July.

http://alter.is

--

--

Ian Moss

alter.is : Creative innovator & technologist. Product Manager, Innovation Process, Project Manager, Ruby On Rails development. #European