Skip to content

Instantly share code, notes, and snippets.

@bjorn-einar-bjartnes-4ss
Created April 14, 2022 09:32
Show Gist options
  • Save bjorn-einar-bjartnes-4ss/2b198574bd7ca21d20552edb964566ed to your computer and use it in GitHub Desktop.
Save bjorn-einar-bjartnes-4ss/2b198574bd7ca21d20552edb964566ed to your computer and use it in GitHub Desktop.
Team workshop

For testing out a team/mobprogramming session internally. One instructor will introduce some principles and facilitate the process. What you take out of it and what you choose to take out of it will be up to you, there is little "curriculum" except what is on these pages.

Introduction

This is mostly a session about learning how to learn more about programming based on what I have learned the last years.

I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.

Alan J. Perlis (April 1, 1922-February 7, 1990) https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-3.html

Prerequisites

We will start with the repository almost blank, with just some sample code, a sample test and the setup of the virtual environment and installing of pytest. We will use Python and pytest, but this learning session would work for all programming languages.

Learning goals

We will follow these principles strictly in this assignment. In real life do what you like, but this is a kata/dojo/training session and to learn the principles we will follow them.

Mob-programming

Teamprogramm, ensemble... Mobprogramming. Working as a team when coding. Does require some rules, I suggest starting out with a timer 5-10 minutes and a driver/navigator. That means the navigator takes initiative, can ask the rest of the group.

It is important for the Navigators to speak at the highest level of abstraction that the Driver (and the rest of the team) is able to digest at the moment. Sometimes this can be at a very high level when the Driver understands the concept to be coded and can proceed without detailed instructions. It can also be at a very detailed level if necessary, even at the level of keystroke instructions when needed. This will change from person to person, and will also change for the same person throughout the day depending on the idea being worked on, and the ability of the Driver to understand the instructions. https://www.agilealliance.org/resources/experience-reports/mob-programming-agile2014

For mob-programming to work, we must keep and open mind, listen more than we talk, train our empathy and be patient. We must allow silence for people to think. Do not stress. We must be respectful and create a safe learning environment for the group. Let people have their time to think, practicing shutting up even if you have the answer. Sit on your hands if you have to. The navigator will ask for help, and it will become your turn and you can take notes and fix issues later.

Test-driven development

We will write tests first, and only as much code required to get the test to pass. We will write smarter and better test and refactor.

Setting things up

We all need to learn how to set up things from the beginning, but looking for these commands can be tedious. On Windows: (cut out some details from here)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment