├── .gitignore ├── Mob Gallery.pdf ├── README.md ├── _config.yml ├── jp ├── README.md ├── [ロールシート]タイピスト(Driver).pdf ├── [ロールシート]ナビゲーター(Navigator).pdf ├── [ロールシート]モブ(Mobber).pdf ├── [ロールシート]交通警察(TrafficCop).pdf ├── [ロールシート]司書(Archivist).pdf ├── [ロールシート]後援者(Sponsor).pdf ├── [ロールシート]提督(RearAdmiral).pdf ├── [ロールシート]研究者(Researcher).pdf ├── [ロールシート]自動化担当(Automationist).pdf ├── [ロールシート]鼻担当(Nose).pdf └── ロール一覧.md ├── rpg_roles_plain_text.md ├── theArchivist.pdf ├── theAutomationist.pdf ├── theDriver.pdf ├── theMobber.pdf ├── theNavigator.pdf ├── theNose.pdf ├── theRearAdmiral.pdf ├── theResearcher.pdf ├── theSponsor.pdf └── theTrafficCop.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio. 3 | ################################################################################ 4 | 5 | /.vs 6 | -------------------------------------------------------------------------------- /Mob Gallery.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/Mob Gallery.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MOB PROGRAMMING: THE ROLE PLAYING GAME 2 | ## by Willem Larsen CC-BY-SA-NC 2016 3 | ## [Powered by the Apocalypse](https://en.wikipedia.org/wiki/Powered_by_the_Apocalypse) - thanks to BigBadCon 2016 for inspiration 4 | 5 | # To the Game Master 6 | 7 | First of all, thanks for helping playtest this game! 8 | 9 | Your primary duty is that everyone playing treats each other with Kindness, Consideration and Respect. 10 | 11 | Your first time running this game will be awkward. Embrace it! But don’t budge on the fundamental rules - treating each other with Kindness, Consideration, and Respect at all times. 12 | 13 | # Game Requirements 14 | 15 | Gather at least three players to make a mob, upper limit unknown... You facilitate. I (the designer) have played with up to 15 players in the mob. 16 | 17 | NOTE: No prior mobbing experience is necessary. 18 | * Verify that at least one person in this mob must have some minimum fluency in Test Driven Development; i.e., ability to move fluently through the Red, Green, Refactor stages with minimal code necessary. 19 | * Get a shared screen big enough for all players to see comfortably - you might consider using a projector. Large screen TVs work great. 20 | * Get one shared keyboard - consider having some hand sanitizer available to avoid sharing cooties. 21 | * Get one or two pairs of scissors and tape - scotch, masking, poster tape will all work. 22 | * Print out all 3 Level 1 rolesheets for each player in your game, and at least one set of Level 2 rolesheets. 23 | 24 | # Before players sit down to play 25 | 26 | * Set up an IDE with a test file in a coding language that at least one person in your session will be fluent in. 27 | Create one test failing successfully in a test file in the coding language of choice. 28 | Decide on some way to time rotations for three roles - Driver, Navigator and Mobber. 29 | 30 | * Plan to solve the FizzBuzz kata - creating a solution that generates output matching the pattern of “1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16....” up to a given number. 31 | 32 | * If you complete that kata too quickly, here are some ideas for extending the exercise. 33 | 1. Pass divisor arguments: `FizzBuzzExtended(100, {fizz: 3, buzz: 4})` 34 | 2. Pass any number of divisor arguments: `FizzBuzzExtended(100, {fizz: 3, buzz: 4, foo: 8, bar: 9})` 35 | 3. Create a FizzBuzz cuckoo clock that accepts a time in 24-hour format (`FizzBuzzCuckoo("16:15")`) and returns "Fizz," "Buzz," or "FizzBuzz" if the minute portion is evenly divisible, "Cuckoo" if the time is on a half hour, or as many "Cuckoos" as needed for the top of the hour (e.g. 6 if given `"06:00"` or `"18:00"`. 36 | 37 | * You will lead the rotation of Driver/Navigator positions every 3 minutes. The Driver moves to the right and becomes the new Navigator, the Navigator becomes a generic Mobber. Rotate consistently in a fixed order. 38 | 39 | * Install and Use the Mob Timer to guide mob role rotations (optional). 40 | 41 | * Create and label a Mob Squad zone, a mob badge parking lot, by setting aside a piece of blank wall or whiteboard that will be covered in mob badges that individuals players complete. This becomes the group’s achievement, the total number of rolesheets the members have completed. 42 | 43 | # Starting the game 44 | 45 | Read aloud: 46 | 47 | “Hello everyone. We are here to play Mob Programming: the Role-Playing Game. The first most important rule is this: that we treat each other with Kindness, Consideration, and Respect at all times. Can you help me with making sure we remember this when things get tough?... [wait for reply]... Mob Programming is a development practice used for raising code quality and removing obstacles. In practice it usually feels like a bulldozer rather than a racecar - unstoppable and thorough. That’s mobbing! 48 | 49 | "A rolesheet is what we call the sheets with icons and descriptions of roles on them. Now, there are currently three levels of rolesheet and counting. We're only going to worry about level 1 right now. Depending on where you are in the rotation, you will be using the appropriate rolesheet. 50 | 51 | "If you are at the keyboard, you are a driver and will be filling out the Driver rolesheet. If you are sitting to the right of the driver, you are the navigator and will be filling out the Navigator rolesheet. Otherwise you will be working on the Mobber rolesheet. 52 | 53 | “The goal of this game is twofold - the first is to become a great mob by ‘embodying” the role outlined in your rolesheet as accurately as possible. The second one is to ‘build your group mob’ by helping each other complete as many rolesheets you can in this session. If you do this with Kindness, Consideration, and Respect, congratulations! You may join the annals of the great mobs of history.” 54 | 55 | # After each player has chosen a rolesheet: 56 | 57 | “Now look at your rolesheets. You’ll note that there are specific actions you take that give you ‘XP’s, also known as “experience points”. It’s up to you to decide when you have taken one of those actions and then check the box. Every time you decide you have exhibited a behavior that gets you XP, announce what it is out loud to the group and check a box.” 58 | 59 | “When you check all the boxes you can switch rolesheets, but we’ll talk more about that once it happens.” 60 | 61 | Decide the order of rotation, have the players get in their positions as decided by the rotation order, Driver/Navigator/Mob. 62 | # Before you start the timer tell the players: 63 | 64 | “As you can tell by looking at your roles, the Driver’s job is to type what the Navigator instructs them to type. The Navigator’s job is to sift the ideas of the mob and instruct the Driver what to type. 65 | 66 | "Now this game can get crazy and the coding challenge can make you forget that you have roles to complete. Therefore, the person directly to the right of the Navigator, your job is to help the Navigator remember to check boxes when they complete the XP behaviors. The person directly to the left of the Driver has the same job, to remind the Driver when they have completed a behavior and can check a box." 67 | 68 | "Remember, our goal is to finish as many roles as possible in an hour and beat previous records (as of May 2018 the record is 39 badges in an hour). Any questions?” 69 | 70 | Barring unanswerable questions, now start the 3 minute timer. Rotate positions when the timer goes off - Driver becomes Navigator, Navigator becomes mob member, and the next mob member becomes Driver. 71 | 72 | Once play has begun, please monitor the presence of Kindness, Consideration and Respect. If at any time you notice one of these qualities not being present, simply speak up and say to the mob, “Kindness please!” or “Consideration please!” or “Respect please”, depending on which is missing. 73 | 74 | Every rotation, stop the rotation and ask the players the following questions (please take notes on their answers): 75 | 76 | “What stands out for you? What did you notice about the coding challenge, or the overall gameplay? Is there anything you're struggling with?” 77 | 78 | Don’t spend more than 5 minutes on this discussion. Make it brief and take notes, restart the timer and have another Q&A at the end of the next rotation. Rinse and repeat. 79 | 80 | All roles except Driver and Navigator travel with the player. Driver and Navigator role sheets are pulled out and used, *and can score XP*, only when at those positions in rotation, not in the general mob. Keep any previous role sheet available to resume for when you are done with Driver/Navigator rotation (and therefore can no longer get XP for those roles until you rotate back into them). 81 | 82 | # When a player finishes a rolesheet 83 | 84 | Ask them to cut out the icon badge on the dotted line, put tape on the back and stick it up in the mob badge parking lot. This zone is the group Mob Squad and will fill up with the various badges as they finish rolesheets. 85 | 86 | They can keep the rolesheet they have cut up - the moves can still net them XP, per the instructions on the rolesheet. 87 | 88 | # After 1 hour of rotations (or less depending on time available) 89 | 90 | Stop the game. Count badges and total. This is the mob’s score for the game. 91 | 92 | Have a more expansive discussion, 10-15 minutes. What was a high point for you? What was a low point you experienced? For any rolesheets you completed, what did you like? How would you play it differently next time? 93 | 94 | # FIN 95 | 96 | That’s it! That’s the game. Hope you had fun, get your notes to me, and try running it as often as you like. 97 | 98 | Thanks for playing - Sincerely, Willem Larsen 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /jp/README.md: -------------------------------------------------------------------------------- 1 | # モブプログラミング:ロールプレイングゲーム 2 | 3 | ## 本資料について 4 | MOB PROGRAMMING: THE ROLE PLAYING GAME を日本語にしつつ、適宜リモートワークでも使えるように修正しました。 5 | 6 | ## 序文 7 | by Willem Larsen CC-BY-SA-NC 2016 8 | 9 | Powered by the Apocalypse - BigBadCon 2016にインスパイアされたことに感謝します。 10 | 11 | ## このゲームは 12 | モブプログラミングがどういうものなのかを知り、ゲームを通して疑似経験を積むことで、現場に楽しくモブプログラミングを導入できるようにするきっかけになります。 13 | 14 | ゲームを行うに当たって、モブの経験は必要ありません。 15 | 初めてのモブワークを楽しんでください。 16 | 17 | ## ゲームマスターへ 18 | まず最初に、このゲームのテストプレイにご協力いただき、ありがとうございます。 19 | あなたの第一の義務は、プレイしている全員が「優しさ」「思いやり」「尊敬」の気持ちを持って接することです。 20 | 21 | このゲームを初めて運営するときは、ぎこちないでしょう。それを受け入れてください。 22 | しかし、基本的なルールである、常に「親切」「思いやり」「尊敬」の気持ちを持って接することは譲らないでください。 23 | 24 | ## ゲームの要件 25 | 3人以上集めてモブを作ります(上限は不明)。 26 | ゲームマスターがファシリテートします。 27 | 28 | ※ゲームを作った人は最大15人のモブでプレイしたことがあるそうです。 29 | ※モブの経験は必要ありません。 30 | 31 | - このモブの中の少なくとも1人は、テスト駆動開発にある程度慣れている必要があります。 32 | - すべてのプレイヤーが快適に見ることができるような大きな共有スクリーンを用意します。大画面のテレビはとても効果的です 33 | - 共有キーボードを1つ用意する (風邪をうつさないように、消毒液を用意することも検討してください。) 34 | - ハサミとテープ(スコッチ、マスキング、ポスターテープなど)を1、2組用意する。 35 | - レベル1のロールシートは各プレイヤーに3枚ずつ、レベル2のロールシートは最低1枚プリントアウトしてください 36 | 37 | ## リモートでやる場合 38 | - リモートメンバーでやる場合はエディタの切り替えが発生しないように、VSCodeのLiveShareなどを使うことをおすすめします 39 | - コンポーネント用にJambordやMiro等で事前準備しておくと良いでしょう 40 | 41 | ## プレイヤーがプレイする前に 42 | - IDEに、セッションに参加する少なくとも1人が使えるプログラミング言語のテストファイルをセットアップしてください 43 | - その後、IDE上で1つのテストが正常に失敗している状態を作ってください 44 | - ドライバー、ナビゲーター、モバーの3つの役割のローテーションの方法をいくつか決めてください 45 | - あなたは3分ごとにドライバーとナビゲーターのポジションのローテーションをリードします。ドライバーは右側に移動して新しいナビゲーターになり、ナビゲーターは一般的なモバーになります。一定の順序で一貫してローテーションを行います 46 | 47 | - ローテーションを忘れないようにMob Timerをインストールし、使用してください(任意) 48 | 49 | - モブバッジの駐車場であるモブスクワッドゾーンを作り、ラベルを貼ります。白紙の壁やホワイトボードに、プレイヤー個人が完成させたモブバッジを貼ります。これはグループの業績となり、メンバーが完成させたロールシートの総数となります 50 | 51 | ## 題材 52 | まずは非常に簡単なFizzBuzzをやってみると良いでしょう。 53 | ただし、モブワークのメリットを実感するには難易度が足りないかもしれません。 54 | その場合は[CodeKata](http://codekata.com/) や自分が開発しているプロダクトに新しい機能 55 | を付けるなどで題材を用意するのが良いでしょう。 56 | 57 | 58 | 59 | 60 | ## ゲームの流れ 61 | ### 最初の説明 62 | ゲームマスターは以下を音読してください。 63 | ``` 64 | 皆さんこんにちは。 65 | 私たちは「モブプログラミング:ロールプレイングゲーム」をプレイするためにここに来ました。 66 | 67 | まず、最も重要なルールを説明します。 68 | 69 | 「私たちは常に「親切」「思いやり」「尊敬」の気持ちを持ってお互いに接すること」 70 | 71 | 困難な状況に陥ったとき、このことを忘れないようにするために、力を貸していただけないでしょうか?[返信を待つ)... 72 | 73 | モブプログラミングは、コードの品質を上げ、障害を取り除くために使われる開発手法です。 74 | 実際には、レースカーというよりブルドーザーのように、止められない、徹底的なものである。 75 | それがモブプログラミングです! 76 | 77 | 「ロールシート」とは、役割のアイコンと説明が書かれたシートのことで、私たちはこう呼んでいます。 78 | 79 | 現在、ロールシートは3段階あり、数えるほどしかありません。 80 | 今回はレベル1についてだけ説明します。 81 | 82 | ローテーションのどこにいるかによって、適切なロールシートを使用することになります。 83 | 84 | キーボードの前にいる人はドライバーなので、ドライバーのロールシートを記入することになります。 85 | もしあなたがドライバーの右側に座っているなら、あなたはナビゲーターです。 86 | ナビゲーターはナビゲーターのロールシートを記入することになります。 87 | 88 | それ以外の人はMobberロールシートに取り組むことになります。 89 | 90 | このゲームの目的は2つあります。 91 | 92 | 1.ロールシートに書かれた役割をできるだけ正確に「体現」することで、立派なモブになることです。 93 | 94 | 2.このセッションでできる限り多くのロールシートを完成させるために、お互いに助け合いながら「グループのモブを作る」ことです。 95 | 96 | 親切、思いやり、尊敬の念を持ってゲームに取り組みましょう! 97 | ゲームが終わる頃には、あなたは歴史に残る偉大なモブの仲間入りをすることができます。 98 | 99 | ``` 100 | 101 | ### 各プレイヤーがロールシートを選択した後 102 | ``` 103 | さあ、自分のロールシートを見てください。 104 | どのような行動をとったかを判断し、チェックボックスにチェックを入れるのはあなた次第です。XP(Experience Points)がもらえる行動をしたと決めたら、その内容をグループ内で大声で発表し、ボックスにチェックを入れてください。 105 | すべてのボックスにチェックを入れたら、ロールシートを交換することができますが、それについては、その時に詳しく説明します。 106 | ローテーションの順番を決め、ドライバー/ナビゲーター/モブというように決めたポジションに就いてもらう。 107 | ``` 108 | 109 | ### タイマーを始める前にプレイヤーに伝る 110 | ``` 111 | 役割を見ればわかるように、ドライバーの仕事はナビゲーターが指示したものをタイプすることです。 112 | ナビゲーターの仕事は、モブのアイデアを選別し、ドライバーに何をタイプすればよいかを指示することです。 113 | 114 | このゲームでは、コーディングに夢中になると、自分の役割を忘れてしまうことがあります。 115 | そこで、ナビゲーターの右隣にいる人は、ナビゲーターがXPの行動を完了したときに、チェックボックスにチェックを入れることを忘れないようにサポートすることが仕事です。 116 | ドライバーの左の人も同じように、ドライバーが行動を完了し、ボックスにチェックを入れることができたときに、ドライバーに思い出させるのが仕事です。 117 | 私たちの目標は、「1時間でできるだけ多くの役割を終え、過去の記録を破ることです(2018年5月現在の記録は1時間で39バッジです)」と覚えておいてください。 118 | 何か質問はありますか? 119 | ``` 120 | 121 | ### モブ開始 122 | 3分タイマーをスタートさせます。 123 | タイマーが鳴ったらドライバーはナビゲーター、ナビゲーターはモブメンバー、次のモブメンバーはドライバーと、ポジションを交代してください。 124 | プレイが始まったら、「優しさ」「思いやり」「尊敬」があるかどうかをメンバーゲーム参加者同士で確認してください。 125 | 126 | もし、「優しさ」「思いやり」「尊敬」が欠けていることに気づいたら、モブに向かって「優しさをお願いします!」「思いやりをお願いします!」「尊敬をお願いします!」と声をかけてください。 127 | 128 | ローテーションごとに、作業を停止し、プレイヤーに以下の質問をします(回答はメモしておいてください)。 129 | 130 | ``` 131 | 何が印象に残りましたか?コーディングの課題、または全体的なゲームプレイについて何か気づきましたか?何か苦労していることはありますか? 132 | ``` 133 | 134 | このディスカッションに5分以上かけてはいけません。 135 | 簡潔にしてメモを取り、タイマーを再スタートして、次のローテーションが終わったらこれを繰り返します。 136 | 137 | 138 | すべての役割はプレーヤーに付属するものです。ローテーションによって所有者が変わることはありません。 139 | ドライバーとナビゲーターのロールシートはプレーヤーがその役割になっている時だけ取り出して使用し、XPを獲得することができます。ドライバーやナビゲーターの役割になっている時はモブのロールシートはしまってください。(したがって、ローテーションを再開するまで、これらのロールに対してXPを得ることができなくなります) 140 | 逆に、モブになっている時はドライバーとナビゲーターのロールシートはしまい、モブのロールシートを出して、XPを付けてください。 141 | 142 | ### プレイヤーがロールシートを完成させたとき 143 | アイコンバッジを点線で切り取り、裏にテープを貼って、モブバッジ駐車場に貼ってもらいましょう。 144 | このゾーンはグループのモブ隊で、ロールシートを仕上げると様々なバッジで埋め尽くされます。 145 | 切り取ったロールシートはそのままにしておいてもかまいません。 146 | ロールシートに書かれている指示に従い、その動きによってXPを獲得することができます。 147 | 148 | ### 集計 149 | 1時間のローテーションの後(時間によってはそれ以下でも可) 150 | 1時間くらいローテーションを回したら、ゲーム終了です。 151 | 手元にあるバッジを数えましょう。 152 | これがモブのゲームの得点になります。 153 | 154 | ### レトロスペクティブ 155 | 10~15分程度、このゲームをやってみた振り返りをしてみましょう。 156 | - 良かったこと、楽しかったことは何ですか? 157 | - 逆に悪かった点、楽しくなかったことは何ですか? 158 | - ロールシートを完成させた人は、どんな点が良かったのでしょうか? 159 | - 次回はどのようにプレイしますか? 160 | 161 | おしまい! 162 | 163 | はい!これでゲーム終了です。 164 | 165 | 楽しんでもらえたら幸いです。 166 | 167 | 好きなときに何回でもプレイしてみてくださいね。 168 | 169 | Thanks for playing - Sincerely, Willem Larsen 170 | 171 | -------------------------------------------------------------------------------- /jp/[ロールシート]タイピスト(Driver).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]タイピスト(Driver).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]ナビゲーター(Navigator).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]ナビゲーター(Navigator).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]モブ(Mobber).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]モブ(Mobber).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]交通警察(TrafficCop).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]交通警察(TrafficCop).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]司書(Archivist).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]司書(Archivist).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]後援者(Sponsor).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]後援者(Sponsor).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]提督(RearAdmiral).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]提督(RearAdmiral).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]研究者(Researcher).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]研究者(Researcher).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]自動化担当(Automationist).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]自動化担当(Automationist).pdf -------------------------------------------------------------------------------- /jp/[ロールシート]鼻担当(Nose).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/jp/[ロールシート]鼻担当(Nose).pdf -------------------------------------------------------------------------------- /jp/ロール一覧.md: -------------------------------------------------------------------------------- 1 | # ロール一覧 2 | モブワークで出てくるロール一覧をの解説です。 3 | 4 | ## タイピスト 5 | - 画面に打ち込む内容をモブに聞く 6 | - 自分が反対だと思ってもモブの意見を優先して打ち込む 7 | - 自分が知っているショートカットはバンバン使う 8 | - 自分の知らないことは学ぶ 9 | - ナビゲーターじゃない人から直接指示があっても従わない 10 | 11 | ## モブたち 12 | モブたちには数多くの役割がありますが、一人一役である必要はありません。 13 | 14 | まずはゲームの中で今回紹介するロールをなるべく多く取得してみてください。 15 | 16 | 得意なロールがあればどんどんそのロールを演じましょう。たまに自分の手元のロールを見て、やったことのないロールがあれば新しいロールの獲得にチャレンジしてみましょう。 17 | 18 | ### ナビゲーター(進行役) 19 | - モブにアイデアを募る 20 | - モブのアイデアをまとめ、タイピストに何を打ち込むのかを正確に伝える 21 | - タイピストには意図と方針を伝え、細かい実装は任せる 22 | - まずはテストを作るように指示をし、定義し、その後テストをパスするように指示します。最後にリファクタリングを指示する 23 | 24 | ### モブ 25 | - 意見の弱い人に耳を傾ける 26 | - アイデアを出す 27 | - 自分が理解できるまで周囲に質問する 28 | - メンバーのはなしには好奇心を持って傾聴する 29 | 30 | ### 研究者 31 | - 取り組んでいる問題に関係のありそうな情報を探す 32 | - 具体的には以下のようなところから探せるだろう 33 | - 公式ドキュメント 34 | - ブログ 35 | - Stack Overflowなど 36 | 37 | ### 後援者 38 | - 聞かれていない意見を拾う 39 | - モブに特権的な立場にない人も(ジェンダー、人種、地位、年次など)含め、彼らの貢献をサポートする 40 | - いいことが起こったら祝う 41 | 42 | ### 提督 43 | - ナビゲーターの耳元で静かに語りかける 44 | - ナビゲーターが問題を解決するために必要な最小限の合図をする。 45 | - ナビゲーターが最も高い抽象度でうまく実装できるように、案内する 46 | 47 | ### 自動化担当 48 | - 以下のような反復箇所を指摘して自動化の提案をする 49 | - ツールで繰り返し行われる作業 50 | - チームプロセスで繰り返されているところ 51 | - 定型的なコード 52 | 53 | ### 鼻担当 54 | 以下のような不吉な匂いを検知し、消臭のためのアクションを提案する 55 | - 大きな関数 56 | - 複雑な条件式 57 | - 重複 58 | - 情報が増えない名前を持つ変数やメソッド 59 | 60 | ### ノスタルジスト 61 | - 短時間の振り返りを提案する 62 | - 短い振り返りが良い結果をもたらすことを発見する 63 | 64 | ### 司書 65 | - 複数ある解決策を忘れないように、みんなが見える場所(ホワイトボードなど)に記録する 66 | - 形になりつつあるアイデアをみんなが見える場所(ホワイトボードなど)に記録する 67 | - 現在のタスクを明瞭化し、チーム全体に見えるようにする 68 | - 決まった設計やその他の技術的な詳細をチームに伝える*。 69 | 70 | ### 交通警察 71 | - モブワークをする際の新しい手順や作業をする上での合意事項を提案する 72 | - 手順や合意したことに違反した場合は指摘する 73 | - 合意内容を忘れないようにする方法を提案する 74 | - 過去に決めた手順や合意内容が不要になった場合は指摘する 75 | 76 | ### 人類学者 77 | - チームの歴史を簡単にアクセスできる成果物に記録する 78 | - モブの新しい習慣を成果物に反映する 79 | - 新しいモブメンバーの追加や教育をサポートするためコンテンツを作る 80 | - Mob Programming RPG に新しい役割のプルリクを投げる 81 | 82 | ### 委員長 83 | - テストが通っているかどうかを確認するようにグループに促す 84 | - コードを書く前にテストを書くようにグループに言い聞かせる 85 | - テストがレッドの場合はリファクタリングしないようにグループに言い聞かせる 86 | - テストがグリーンの場合はリファクタリングをするようにグループに促す 87 | 88 | ### 案内人(ナビゲーターの代わり) 89 | - モブ内の他の人から2つ以上のアイデアをもらい、最初のアイデアを捨てる 90 | - モブの中で黙っている人に聞いて、アイデアをもらう 91 | - 非常に馬鹿(極端な)げた提案をして、モブに他の選択肢を募る 92 | - 次の行動についての提案は、後輩や最も権限のない人に委ねる 93 | 94 | ### 痛み担当 95 | - プロセス、ツール、対人関係で感じたつらみをモブに対して言語化する 96 | - モブの他の人が感じているつらみに気づく。それについて尋ね、共感を示す 97 | - モブが無視しているつらみを増幅させる(例:問題を繰り返す) 98 | - つらさを感じたら振り返りを要求し、つらみの原因を分析し対応する 99 | 100 | ### 快楽先生 101 | - 他のモバーやステークホルダーに感謝の意を示す(例:SBIモデル等を使う) 102 | - モビングや仕事について、喜びを感じられることを言葉にする 103 | - モブが楽しそうにしているかに注意を払い、楽しそうな理由を聞く 104 | - 最近起こった良いことをメンバーで振り返る機会を設け、どうしたら良いことが起こせるのかを考える 105 | 106 | ※[痛み担当 と 快楽先生](https://www.agilealliance.org/resources/experience-reports/harvesting-mob-programming-patterns-observing-how-we-work/) 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /rpg_roles_plain_text.md: -------------------------------------------------------------------------------- 1 | ## Level 1 2 | 3 | ### Driver 4 | - Ask a clarifying question about what to type 5 | - Type something you disagree with 6 | - Use a new keyboard shortcut 7 | - Learn something new about tooling 8 | - Ignore a direct instruction from someone who isn't the Navigator 9 | 10 | ### Navigator 11 | - Ask for ideas 12 | - Filter the mob's ideas then tell the Driver exactly what to type 13 | - Tell the Driver only your high-level intent and have them implement the details 14 | - Create a failing test. Make it pass. Refactor. 15 | 16 | ### Mobber 17 | - Yield to the less-privileged voice 18 | - Contribute an idea 19 | - Ask questions till you understand 20 | - Listen on the edge of your seat 21 | 22 | ## Level 2 23 | 24 | ### Researcher 25 | - Find and share relevant information from documentation 26 | - Find and share relevant information from a blog 27 | - Find and share relevant information from a coding forum 28 | 29 | ### Sponsor 30 | - Amplify the unheard voice 31 | - Pick the mobber with the least privilege (gender/race/class/seniority/etc) and support their contributions 32 | - Celebrate moments of excellence 33 | 34 | ### Rear Admiral 35 | - Quietly speak into the navigators ear 36 | - Give the smallest cue necessary to move the Navigator forward through the problem 37 | - Navigate the navigator at the highest level of abstraction they can successfully implement 38 | 39 | ## Level 3 40 | 41 | ### Automationist 42 | - Point out a repeated task in a tool 43 | - Point out a repeated aspect of team process 44 | - Point out possible boiler plate code 45 | - Propose an automation for a repeated task 46 | 47 | ### Nose 48 | - Point out a long line of code 49 | - Point out a complex conditional 50 | - Point out duplication 51 | - Point out an unnamed variable or method 52 | - Propose an action for deodorizing the code 53 | 54 | ### Nostalgist 55 | 56 | - propose a quick retrospective 57 | - the quick retro turns up the good 58 | 59 | ### Archivist (AKA Recorder*) 60 | - Record solution alternatives on a big visible chart or whiteboard so they’re not forgotten 61 | - Express an idea as it is taking shape on a big visible chart or whiteboard 62 | - Articulate the current task at hand and make it visible to the entire mob 63 | - Capture design decisions and other technical details for the team* 64 | 65 | ## Level 4 66 | 67 | ### Traffic Cop 68 | - Suggest a relevant new process or working agreement 69 | - Point out when the team violates a process or working agreement 70 | - Suggest a way to help the team remember to follow a process or working agreement 71 | - Point out when a process or working agreement is no longer needed 72 | 73 | ### Anthropologist 74 | - Record history of the team in an easily accessible artifact 75 | - Facilitate reflection on a new mob habit 76 | - Make an artifact to support addition and education of new mob members 77 | - Submit a pull request for a new role to the Mob Programming RPG 78 | 79 | ### Disciplinarian 80 | - Remind the group to check if the tests pass. 81 | - Remind the group to write a test before writing code. 82 | - Remind the group to not refactor if the tests are red. 83 | - Remind the group to refactor when the bar is green. 84 | 85 | ### Conductor - [Alternative to Navigator -- playbook under construction] 86 | - Take 2 or more ideas from other people in the mob and discard the first. 87 | - Ask and get an idea from someone in the mob who has been quiet. 88 | - Make a totally ridiculous suggestion and ask for people’s options. 89 | - Defer to junior or least privileged voice for suggestion on next move. 90 | 91 | ### Major Pain 92 | - Verbalize to the mob pain felt in the process, tools, interpersonal interactions 93 | - Notice pain being felt by others in the mob. Ask about it and show empathy. 94 | - Amplify pain that is being ignored by the mob (e.g. repeating issues) 95 | - Call for a retrospective on a pain point to inspect and adapt on 96 | 97 | ### Dr. Feel Good 98 | - Show appreciation to another mobber or to a stakeholder (e.g. using the SBI model) 99 | - Verbalize something about mobbing or the work that gives you joy 100 | - Notice happiness expressed by others in the mob and ask about it 101 | - Call for a retrospective on a something good that occurred recently to see how it can be turned up 102 | 103 | *Major Pain and Dr. Feel Good from 104 | https://www.agilealliance.org/resources/experience-reports/harvesting-mob-programming-patterns-observing-how-we-work/ 105 | 106 | -------------------------------------------------------------------------------- /theArchivist.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theArchivist.pdf -------------------------------------------------------------------------------- /theAutomationist.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theAutomationist.pdf -------------------------------------------------------------------------------- /theDriver.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theDriver.pdf -------------------------------------------------------------------------------- /theMobber.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theMobber.pdf -------------------------------------------------------------------------------- /theNavigator.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theNavigator.pdf -------------------------------------------------------------------------------- /theNose.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theNose.pdf -------------------------------------------------------------------------------- /theRearAdmiral.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theRearAdmiral.pdf -------------------------------------------------------------------------------- /theResearcher.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theResearcher.pdf -------------------------------------------------------------------------------- /theSponsor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theSponsor.pdf -------------------------------------------------------------------------------- /theTrafficCop.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willemlarsen/mobprogrammingrpg/98bdafaa249f75ee922d69d50b2e9d0429de7683/theTrafficCop.pdf --------------------------------------------------------------------------------