教育目的のモブプログラミングを行う際に気を付けること
UI開発者 古川新年度をひかえ新卒研修のシーズンが迫ってきましたが、時期に限らず「効率的な初学者の教育方法」は通年頭を悩ませる課題の1つです。そこで今回はモブプログラミングを中途採用研修に導入した事例を紹介します。
モブプログラミングの概要
モブプログラミング(以下モブプロ)はキーボードを操作する役割(タイピスト)とそれ以外(モブ)に分かれて、1つの画面を共有してプログラミングを行う手法です。タイピストは作業中に自分が何をどう考えているのかを実況しながらコーディングし、モブはタイピストの作業に対してフォローや指摘を行うことで、プログラミングとリファクタリングを同時に行います。 モブプロの環境はパソコンとキーボードが1台ずつあれば始められますが、プログラミング中は会話によるコミュニケーションが重要なので声を出しても他の人に差し支えない場所の選定が必須です。
今回研修で行ったモブプロは「ある企業の採用トップページを制作する」というもので、人数は3名、うち2名は初学者レベルのコーダーでした。 特に初学者の場合は1回の時間が長いと疲れてしまったり情報の整理が追い付かなくなるため、最大1.5時間を2週間毎日実施しました。交代のタイミングは基本的には10分で、切りが悪ければ今やっているタスクが終わるまでなどの調整を行いました。
なぜモブプロを導入したか
これまでの研修ではまず課題を行ってもらい、課題が終わった後にレビューや疑問点の整理を口頭で行っていました。 しかし、従来の方法ではソースコード自体の指摘はできても、Web制作に必要な知識を体系的にインプットできず、ナレッジをできるだけ網羅しようとドキュメント化しても運用のコストがかかりました。
座学形式の研修も行いましたが私が一方的に話し、質問があるかどうかの確認を行う程度だったため、説明した内容を本当に理解しているか、業務を行う上で不足している知識はないかを確認することは困難でした。
「Webページの作り方を教える」と一言でいっても、カバーすべき内容はHTML・CSS・JavaScriptのマークアップだけにとどまらず、技術選定の方法から開発環境の選定、WebアクセシビリティやWebパフォーマンスへの配慮など多岐にわたります。 決められた期間で業務に必要な知識すべてを研修でカバーするのは難しく、その上業務で具体的にどう知識を活用するのか教えるとなると、座学やコードレビューだけでは手が届かないと痛感していました。
そこでこれまでの課題や座学の時間に加え、導入しようと試みたのがモブプロです。
教育を目的としたモブプロで気を付けること
実際にモブプロに参加した研修生に感想を聞いてみると、他人のやり方がわかって勉強になるという声や、複数人でのコーディングが純粋に楽しいといった声が上がりました。うまくいくときに起きる研修生の歓声を聞くと教えている私もうれしい気持ちになります。
また教える側もコーディングに参加できるので、教育しながら新しい技術の研究ができたり、知識が不足している箇所の洗い出しができます。決まりきった手順に関してはドキュメントで、トレンドや要件に併せたベストプラクティスはモブプロで、などインプットの方法を使い分けることで、ドキュメントの運用コストを抑えつつより実践的な研修ができます。
ただし、教育を目的としたモブプロにおいて注意が必要だと感じた点があります。
教える側がずっと話しがちになる
これは仕方がないことですが、初学者とのモブプロの場合は作業の全体像が見えているのが教える側だけになるため「誰かがずっと教えてるだけ」に陥りがちです。
モブプロ時に必要なタスクは教える側が考えるのは割り切るとして、私の場合は教える側の独壇場を避けるために「次は何をどうすればいいと思うか」をこまめに研修生へ問いかけるようにしています。
研修生はタスクを行うための具体的な手法がわからなくても、例えばデザインとコーディングの画面を見比べて「この要素をここに動かしたい」などの要望は出せます。 出てきた要望に対して答えをすぐ述べるのではなく解決策につながるヒントを出したり、そもそも研修生にそのナレッジがなければ一緒に調べてみることで、一方的なインプットを避けることができ不明点の調べ方も見せることができます。
タイピストの手が止まってしまう
研修生がタイピストの番になると、ナレッジ不足が原因で具体的な解決のアクションを取れず、モブプロ自体が停滞しがちです。 そこで研修生の手が止まっていたり悩んでいるそぶりが見えたら、「何で迷っているのか」をすぐに聞き出すと同時に別のモブにアドバイスを求めます。そうすることで、タイピストの手が止まってしまうのを防ぎながらほかのモブ役の人を積極的に参加させることができます。
コーディングに使う環境やツールが難しすぎてタイピストが扱えない
教える側が普段利用している開発環境をそのまま導入する場合は注意が必要です。自分が慣れているからといって熟慮せずそのまま利用してしまうと、ツール自体を扱えずプログラミングをする前段階でつまずいてしまいます。
学習目標を明確にした上で、ここまでは初学者が知っていそうなものを選び、ここからはモブプロで教える、とある程度線引きを行ったほうがよいと思います。あまり学習内容を詰め込みすぎても結局学んでいる側が知識を自分のものにすることができず、モチベーションが下がりかえって効率的ではなくなってしまいます。
まとめ
モブプロが教育手法として万能というわけではありませんが、体系的にインプットしたい場合には有効だと感じました。何より、コーディングが楽しい!という気持ちを実際に体験し、共有できるのが強みだと思います。
私が少し席を外している間、研修生同士で不明点を教え合っていました。モブプロを通して自然と連帯感や助け合いの意識が芽生えているようです。
パソコンが1台あれば気軽に始められるモブプロ、ぜひ試してみてください!