TDD + モブプロワイワイ会

Share on:

プログラミング周りの実践演習向けに勉強しようということで、TDD+モブプログラミングでワイワイする会 その20に少しだけ覗いてきました。実際に見てきたのは冒頭1時間と後半20分ぐらい。

モブプログラミングそのものについてはMob Programming Startup Manualか、TDDワイワイ会inXP祭り2018あたりを眺めると、全体像が掴みやすいです。

ざっくりと手順をまとめると、こんな流れ。

・モブプロの時間(開始〜終了時間)を決める。
cyber-dojoなり、実行環境を用意する。
 *cyber-dojoは言語&問題別にコード&テスト例も用意されてて便利。
・モブ(グループ)を決める。
・開発言語と仕事(開発対象)を決める。
・ドライバー1人とそれ以外のナビゲーター、交代タイミングを決める。
・ToDoリストで「開発し終えるための全タスク」を管理しつつ、テスト駆動開発で「今やること」に集中する。
・まずテストを書き(red)、それを通すコードを目指し(green)、その後でリファクタリング(green)を目指すのが理想。ただし理想であって、TPO考慮。
・考えてることは一通り言葉にする努力を。「わからない」と表明するのも貢献の一つ。
・何か達成したら喜ぶ。
・モブプロ時間を終えたら感想等を通した振り返り。できればここで十分に時間取って形式知化できると良さそう。

覗いてみて気づいた&感じた点は、、

  • TDD x ToDoリスト x ペアプロみたいに、TDD x ToDoリストを組み合わせることで、単に「複数人でやれ」よりも、過程を可視化しやすそう=体験や学びを促進しやすそう。
  • テスト駆動を教える場合、最初から「とりあえず動くコード&テスト」を用意してやるととっつきやすそう。
  • テスト駆動だからこそ「どういう風に作り込もうとするか(≒設計過程)」を見せやすいかも。設計と実装を明示的に区別できるのが良い? 一方で、本当のプログラミング初学者からすると、「テスト」や「関数」とかの概念自体がわからないので、対象言語について1〜数時間のチュートリアルしてから、TDDxモブプロし始めるぐらいが良い?
  • 1仕事終えるまで1モブで固定した方が良さそう。途中でモブ間のメンバ入れ替え発生すると、そこに辿り着くまでの流れを把握していないメンバが発生し、それを解消する情報共有コストが大きすぎるという意味で。
  • 研究室でやるのも良さそうなんだけど、その場合は「今回はAさんのタスク」とか、タスク単位でモブるのが良いのかな。似たような取り組みを試験的に導入したことはあるけど、ゼミ外でやったからか定着しなかなかったので、ゼミ時間なりある程度強制的に集合する時間でやった方が良さそう。論文書けとかでも一緒で、初めてのタスクを一度皆でやるというのをやってみるかなぁ。

TA指導含めて、授業にも取り入れられると面白そうです。TA人数やスペース、環境とか工夫しないと現実的じゃないのが辛いところですが。