知識差−スキル差を埋めるためのペアプロ+αのコツ(2)

ペアプロを始めてみたものの、熟練者と初心者の間で知識差-スキル差が大きくうまくいかない時のコツ

前回から熟練者-初心者間の知識差-スキル差を埋めるためのペアプロのコツをテーマにしています。ペアプロを始めてみたものの、熟練者と初心者の間で知識差-スキル差が大きいあまり、ペアのやりとりが噛み合わなかったり熟練者に依存し続けて初心者のままで成長しない、といったことを耳にすることがあります。では、どうすればその差を埋め、コラボレートできるペアプロになっていくのでしょうか?。

前回は、指導役がリードドライバーするまでを紹介しました。今回はその続きです。

リードナビゲーター

【リードナビゲーター】は、指導役が立てた作戦をもとに、ドライバーの学習役を言葉でうまく導きながら実際に体を動かしてもらうことで伝達します。「やってみせ、言って聞かせて…」の「言って聞かせて」に相当します。指導役がナビゲーターのときにリード役を引き受けます。指導役にとっては、自分の手を使わず言葉で伝えようとすることで、プログラミング中に実に多様なことを考えて行動していることに改めて気づくでしょう。説明が抽象的すぎてアクション不能であったり、逆に細かすぎて何を何故やろうとしているのか学習役に伝わらなかったりします。また、一度に多数を伝えると学習役が混乱するので、順を追って1つづつ説明する必要があります。

学習役にとっては、実際に体を動かしアウトプットを出すことで学ぶことが期待できます。また、指導役が普段どのようなことを考えながらプログラミングしているのかを知ることができます。

説明したものの学習役の指が止まって困っている状況が観察できた場合は、指導役はリファクタリングやTDDの本に記載されたパターンを使ってステップ幅を小さくしてナビゲートするか、キーボードを取って一時的にドライバーでやってみせにスイッチします。最後までやり切りず、切りが良いところでまたキーボードを指導役は学習役に渡します。キーボードのやりとりを使って、ペアのリズムをつくるのもペアプロのコツの一つです。ペアプロ中、指導役は、テスト実行結果やソースコードやエラーメッセージやドキュメントを読んで次の一手を打つだけなく、パートナーの学習者のステータスを言動や表情から読んで次の一手を打つ必要があります

ただこの段階のままでは、学習役がリード役できないままです。この状態にとどまるは望ましくないです。学習役が主導でリードする度合いを増やして、経験を積む必要があります。

サポートドライバー

【サポートドライバー】は、「やってみせ、言って聞かせて、させてみて、。。」でリードして仕事を進めるを「させてみて」に相当します。学習役に習得してほしいのは、タスクを終わらせる段取りや設計判断や意図しない動作時のトライ&エラーの進め方などです。

指導役がドライバーのときにサポート役を引き受けます。指導役は、自分の考えていることを言葉にしてコードにする割合を意図的に減らします。かわりに学習役の良き聞き手になり、学習役の頭の中で考えていることを質問を通じて引き出しコードにしていきます。質問の仕方が圧迫面接のような場にならないように、HRT原則を思い出してください。質問の仕方も学習役がリード役として活発になるように、指導役側が試行錯誤します。

学習役は、リード役を引き受け、考えていることを声に出すを繰り返すことで典型的なプログラミングの活動のハンドリングの判断のコツを獲得していきます。

指導役−学習役が共に、慣れないサポート役とリード役でうまくペアが噛み合わないこともありますが、心配しないで下さい。慣れないうちはそういうものです。ペアプロのセッションの終わりのミニふりかえりの場を使って、できるようになったこと、改善したいことを話し合い、ペアのリズムを整えていきます。既存コードや設計指針やテスト設計技法やSOLID原則やデザインパターンや言語やフレームワーク等の知識不足が学習役がリードの振る舞いをうまくできない理由だと分かればスキルラーニングセションの学習テーマにするのも良いでしょう。

ただし、この状態も、理想のペアのダブルリード状態ではなく、留まり続けてるは望ましくないです。

サポートナビゲーター

目指しているダブルリードに入るためにあえてペアプロを解除して、明示的に学習役が主導で動ける機会を用意するのはオススメです。【サポートナビゲーター】はその、前段階に相当します。学習者主導で、考えていることを声に出しながらコードを記述する過程を指導役がフォローします。ペアプロが解除されること解除を予告して、指導役やフィードバックの関わりの度合いは前後しながらも段階的に少なくなるようにコントロールします。フォローの際は「やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ」のほめてやらねばも忘れないでください。うまくできていない点をフォローするだけでなく、よかった点もキチンと伝えて学習役がスキル獲得を積極的に継続できるようにサポートします。指導役は、ほめ方も試行錯誤して学ぶ必要があります。

サイドバイサイドプログラミング

教育目的としてペアプロの選択が常に良いというわけではなく、ペアプロした後、意図的にペアを解除するもおすすめです。1人で作れるサイズのタスクは、指導役のサポート頻度が少なくても、学習役は自力で終わらせられる力をつける必要があります。とは言っても任せきりは難しい。そのときは、ペアとソロの中間の【サイドバイサイドプログラミング】はオススメです。サイドバイサイドプログラミングは、タスク自体は1人1人が個別にサインアップしますが、2人がディスプレイを直ぐに見やすい座席配置に変えて、必要なタイミングで適宜相談しながら進めるプログラミングスタイルです。後でまとめて相談で大きな手戻りや、エラー解析ができずに長時間の手詰まりなどを防ぐことができます。

サイドバイサイドプログラミングは昔からあるアプローチですが、名前にインパクトがなく、ペアやモブの影に隠れています。が、私が好きな開発スタイルの1つで以前「CoolなソロとHotなペアプロのあいだ」として記事を書かせてもらいました。サイドバイサイドではないですが、チームによっては席が離れていても、チャットで実況しながら作業を進め、障害物で先に進めないのを察したら、指導役だけでなくチームメンバーがチャットか直接フォローするような動きもあるでしょう。

ソロ&ペア、ソロ&プルリク

教育目的としてペアプロの選択が常に良いというわけではなく、ペアプロを意図的に解除するもおすすめです。ペアやサイドバイサイドのフェースツーフェースのサポート頻度を更に減らしつつ、初心者が手頃なサイズのタスク(長くても2日程度)をオンライン上のサポート中心に自力で終わらせられるようにします。難しい問題をダブルリードで取り組むはその後に目指します。(オンラインを中心とした共同プログラミングはフェースツーフェースのプログラミングとは異なった大事な作法がいくつかありますが、この記事のスコープ外です。)

学習役に手頃なタスクを取ってもらい、作ってもらって、できたものに対してフィードバックして学びます。指導役はプルリクに対してコメントでフィードバックします。プルリクのコメントでサポートの代わりに、ペアプロに移行し、プルリクの書き方やテスト漏れを追記やリファクタリングステップを蜜に指導するのも選択の1つです。学習役は、プルリクのほか途中段階でうまく前に進めなかったらそのタイミングでうまく相談事項を口頭で伝えてHelpを要請します。例えば次のようなセリフです。「〇〇のタスクをやっていて、期待する振る舞いは〇〇だが、〇〇のエラーメッセージが出た。〇〇が怪しいのではと、〇〇を調べて〇〇時間ほど試行錯誤したが解消に至っていない。〇〇分ほどペアプロで一緒にエラー解消を手伝って欲しい。」

ダブルリードによる共創関係のペアプロ

ある程度力をつけてきたら、2人とも未知である領域に踏み込む【ダブルリード】のペアプロにトライする準備が整いました。不確実性の高いタスクを2人で選択してトライ&エラーで取り組みます。成熟したペアがダブルリードでフロー状態に入れば、ソロでは問題設定から難しいテーマ、ソロでは解くのが難しい・時間がかかる問題もペアなら解決にたどり着く率が高くなります。またプログラミングをより楽しんで取り組むことができます。ダブルリードのペアプロは、1人の頭の中のアイデアをリードして説得によって前に進むではなく、2人ともリード役で2人ともサポート役です。2人の互いが知っている事実情報や不確かな見解を持ち寄って対話し、もっともらしい案を調査して評価し新たな知見を得るを繰り返し、未知の領域に勇気を持ってペアで踏み込んでいきます。

2人の間で段取りや設計案の選択で意見が分かれることも発生しますが、心配しないで下さい。ソフトウェア開発のものづくりは、選択肢が多くそういうものです。むしろ、複数案からもっともらしい案を選択できるは歓迎すべきでしょう。ペアで対話の際はHRT原則を思い出し、思いやりと率直さをもって粘り強く対話して選択を続けます。必要があれば他のチームメンバーも議論に参加してもらうと良いでしょう。議論をやめて、A,B,C案3つとも小さく試してつくってから評価し選択するもよくある手です。また、調査系であれば一時的にペアを解除して個別に調べ、改めてペアを組んで調査結果を持ち寄るなど工夫します。うまく行かず進展がなければ、TDDパターンでも紹介された【休憩】を挟み、グリーン状態から【やり直す】もオススメです。

まとめ

知識差−スキル差を埋めるにフォーカスしたペアプロについて前回と今回の2回に分けて記述しました。エンジニアの育成のテーマは、どの現場でも出てくるテーマではないでしょうか?解消方法の1つとしてペアプロがよく上げられますが、単に2人ならぶだけでは効果は小さく、ペアプロのコラボレーションの仕方に工夫が必要です。本記事がその参考の一つになれば幸いです。

--

--