ペア・プログラミングのやり方
概要
- ペアプログラミングとは、二人が一つのキーボードでプログラミングをすること。
- driverはキーボードを叩き、observer(あるいはnavigator)はdriverの書くコードを眺め、エラーや設計を吟味する。
- driver = 車の運転者。問題解決の中心。
- observer = 助手席に乗る人。運転を眺めながら取り組み方全般について吟味する。
7つのステップ
1. 作業を決める
- 座る前に、1~2時間程度で終わると確信できるはっきりした仕事を決める。
- e.g., 「演習1に取り組もう。タイトルを眺める限りではシェルとPythonインタプリタを使うみたいだね。」「シェルって何だっけ?」
2. 最初の目標を決める。
- 数分で出来るようなことを考える。問題を言葉でパートナーに説明すると考えやすい。何をやるかお互いがわかっていることを確認できる。
- e.g., 「まず演習1.1の問題を読んでみようか。
ターミナルを起動し、今回演習を作業するためのディレクトリとして「prog1/week2」を作成し、そこに移動せよ
。まずはターミナル起動してみようか。」
3. パートナーを頼りにし、支えてやる
- driver側
- プログラム全体の問題はobserverが考えてくれる。仕事を終わらせることに専念すること。
- observer側
- driverの作業を横から観察し、疑問・改善・簡潔化など大局的な問題について考える。
- driverに指摘をするタイミングには気をつける練習をしよう。
- 読みづらいコードや文法ミスは、その行を書き終わった後に指摘する
- 大局的な問題やデザインのアイデアは、メモだけしておき、一段落した後で話す (メモ重要。人は忘れてしまう。思ったことを即書き出せるようにタイピング練習しよう)
4. 喋る
- 今なにをしようとしているか、変数名、関数名、別の短くすむやり方、今のコードが想定していない入力、observerが知っていてdriverの知らないAPIの事情・・・など。
- ペアプログラミングがうまくいっているときは大抵お互いぶっつづけで話している。
- 悩むのも悪く無いが「一人で悩む」のは十秒程度に留めよう。じっくり腰を据えて悩むのは自習の時に一人でやれば良い。ペアプログラミングの時には一緒に相談しながら考える練習をしよう。
- 例えば:
- 「ここの条件これでいい?」
- 「これで正しいと思う?」
- 「あとなんだっけ」
- 「ちょっと貸して」(口で言うより書いた方が早い時)
- たまに代わりに書くことは良いが、書くだけで説明しないのはNG。どうしてそう書くのか理由を説明できるようになろう。
5. お互い何をやっているか把握する
- パートナーが今なにをやってるかわからなくなったり、今なにをするべきか見失ったりすることはよく起こる。
- 認識がズレだしたら1分以内に話し合って頭の中の同期を取ること。5分もおいてけぼりにしてしまうと、一人でプログラムを書くのと同じことになる。頻繁に同期をとることがペアプログラミングのミソだからだ。
- 例えば:
- driverは何かする前にobserverにやろうとしていることを説明するか、もしくは尋ねること。
- 書いてみないと説明しづらい場合も「ちょっと書いてみる」と口で言うこと。この類の試し書きは1分以内ですませたほうがいい。
- パートナーの質問にはイエス・ノーですぐに答えること。「このコード消していいよね」
- キーボード(PC)の貸し借りは悪いことではない。口で言うより書いた方が早い時もある。
6. 喜ぶ
- 一仕事すんで次の問題が見えたらお祝いをする。
- 例えば演習課題を終えたときなどにハイファイブする。
7. 交代する
- 一般には
- 最低30分ごとに交代すること。これによってお互いの集中力を保つことができ、大局的な視点と細かい事情を二人ともが把握できる。driverはずっと全力でいると疲れてしまうし、observerは観察力を30分以上も保つのは不可能だ。休憩して交代しよう。
- 今回は
- 演習1 (1.1〜1.3)は、机の右に座ってる人がまずdriverを担当し、1.3まで終えたら左の人がdriverを担当してもう一度やり直そう。(同じことを2回繰り返すことになります)
- 演習2 (2.1〜2.5)のdriver担当は、机の左に座ってる人。
- 演習3 (3.1〜3.3)のdriver担当については、机の右に座ってる人。
- 演習4 (4.1〜4.3)のdriver担当については、二人で話し合って、より苦手な人に練習させてあげよう。