このブログをご覧のみなさん、こんにちは。

昨日開催された以下のイベントに参加しました。

主催者から「blogを書くまでが勉強会への参加なんですからね!」という締めの言葉をいただきましたので、別のイベント記事がストックされている最中ですが、 LIFO(Last In, First Out, 後入れ先出し) で。

TL;DR

  • ファシリテーターがいない >> 越えられない壁 >> 似非ファシリテーターがいる
  • 13:00開始なので、12:30に会場に行ったら真暗闇でワロタ(ワロエナイ)
  • モブプログラミングは太るのではないか疑惑
    • モブプログラミング中はカロリーの消費が激しいため、いつも以上に甘いお菓子を食べてしまうから

13:00 – 13:30 開場&インストラクション&チーム分け

参加者が集まらないゆるい状況で、雑談

13:30 – 16:30 ゆるゆるとモブプログラミング

13:45からチーム分けして、ゆるゆるとモブプログラミング開始

1セッション目

  • 言語: Python
  • テーマ: FizzBuzz
    • ほぼ全員 Python 初心者だったので
  • 交代: ToDo 1個+リファクタリング+次の人へのテストを書いたら交代
  • 時間: 13:45 – 14:45
  • Learning Session is IMPORTANT!!
    • と以前知ったので、 FizzBuzz という誰でも知っているテーマにも関わらず、TODO 出しを最初に
    • これが予想以上にうまくいき、TDD もばっちり
  • 出力のテストに関しては、出力そのものをテストするのではなく、出力時に printCount という変数をインクリメントし、その値を確認することで代用

2セッション目

休憩を挟んでからの2セッションは、隣のチームが 100 doors というのテーマを Java でやっており、 Door オブジェクトを使う設計だったので、こちらは配列でやってみようという話に。

  • 言語: Python
  • テーマ: 100 doors
  • 交代: ToDo1個+リファクタリング+次の人へのテストを書いたら交代
  • Learning Session is IMPORTANT!!
  • 休憩時に隣のチームから Python 経験者が移動してこちらに参加してくれたおかげで色々知識を共有してもらえた
    • Python はキャメルケースではなくスネークケースで変数やメソッドを定義する
    • Python で使える List の特徴
    • Python で使える配列の定義の仕方
    • 仮実装で使える Pass
    • etc…
  • 休憩時に隣のチームから移動した人から色々比較した学びを得られた
    • Learning Session がないチームだと実装中に設計方針で喧々諤々してしまう
    • Learning Session で大枠の ToDo(マイルストーン) を決めるとモブプログラミング中にそういうことが起こらないので良いのかも

総括

TDD を必須、一足飛びで実装しないという縛り(養成ギプス)を設けてモブプログラミングを実施した結果、 Learning Session の大事さや TDD の大事さがよりいっそう際立ったように感じた。

特に Learning Session はとても良いものだと実感。