ばったログ

3回に1回くらいはやったことをアウトプットしていく

TDD+モブプログラミングでワイワイする会 その16に参加してきました

TDD+モブプログラミングでワイワイする会 その16 - connpass

Agile Japan 2018の基調講演(沖繩サテライトに参加していました)を聴いてモブプログラミングに興味を持ったので、参加した時のメモ。

外では琉大祭でガヤガヤの中、こちらのイベントには14人も集まってワイワイしてました。
ちなみに近くでポケモンGO研究会?の出し物をやっていました。

(↓当日のスライドではないが、内容はほぼ同じようだったのでなので引用)

このサイクルでドライバーを交代するルール
テンポよく交代できるし、TDDのお作法に乗っ取って"筋トレ"してほしいとのこと。

モブプログラミング1回目

  • 言語はRuby/RSPec お題はFizzBuzz
  • いきなり実装ではなくFizzBuzzに必要なことをTODOリストにまとめる(これがテストケースの元となる)
  • だいたい以下の流れでドライバーを交代して、ワイワイとモブプログラミングを行った
    • ①Red→Green:テストが通った!と皆で拍手して称え合う
    • ②Green→リファクタリング:ナビゲーター同士で相談。テストを通るためだけに書かれたコードからイケてる感じになるようにコードをリファクタリング
    • ③テスト追加→Red:皆で(大げさに)がっかりする。急いでGreenにしなきゃとドライバー交代。①に戻る
  • 実装はだいたいわかっているだけに、なかなかテストケースを書けなかったのがもどかしかった
  • テストのコメント部分についてはどんなことを書けばいいのかナビゲーター役の時に色々検索した
  • 参考:【Ruby on Rails】RSpecのdescribe/context/itの意味を理解した件

1回目終了後はコードレビューしたり、RSpecのテストコメントには何を書くべきかというプチ講座が開催されていました。

モブプログラミング2回目

  • 人生初のHaskell お題はFizzBuzzPlus(31 など 3が含まれている場合にも Fizz になる)
  • Haskelが使える方がいたので、途中からHaskell講座が始まり、関数型プログラミングがちょっとわかった(ような気がした)

2回目も、知っているお題 x 知らない言語 だといい感じに盛り上がりました。

わかったこと

  • モブプログラミング面白い
    • ドライバーは「有機キーボード」
    • ナビゲーターは「司令塔」。意見を出し合ったり、手が空いてる人が先回りして文法を調べたりしながらコードをより良いものにしていく
  • テスト駆動 は テスト手法 じゃない 開発手法 だ!
    • 分析技法であり、設計技法であり、実際には開発のすべてのアクティビティを構造化する技法
  • ボブおじさん(Robert C Martin)ってすげー!
  • TDDでテストを書く筋トレしよう
    • まずはテストファースト書きで習慣を身につける
    • 業務に取り入れる場合はまずは、コード実装後で良いのでテスト書くようにする
      • テストの無いコードはレガシーコード

次にやること

  • テスト駆動開発』(新訳)を読む
    • スライドにも登場しており、お勧めされていた
    • 「付録C」にはTDDをとりまくここ 20 年の動きについてよくまとまっている(らしい)

でもまずはIPAの試験が控えてるので、そっちを頑張る。