ペアプログラミングで個々の力を高める。

皆さんこんにちは! 和希です。
新年あけましておめでとうございます。2022年になりました。
年末年始はのんびりとお酒をたしなんでいて、いつしか飲み助のような生活を送ってました… 
2021年は充実した1年となり、仕事も技術も向上する1年となりました。

さて、今回はペアプログラミングについて実際に私がやってみて、どんな効果が得れたか。
またやってみた感想など、実際に行ったシチュエーションも交えてお話したいと思います。
ペアプログラミングをやってみたい方へ参考になれば幸いです。

ペアプログラミングとは

ペアプログラミングとは1つのプログラムに対して、2人で同時に開発することをいいます。
ドライバー(コーディング担当)とナビゲーター(ドライバーのコードを評価したり指示を出したりする人)にわかれて、役割を交代しながら行います。

ペアプログラミングをやる目的は色々あるかと思いますが、考えられるものとして以下があげられます。

  • 一緒に作業することで新人の技術レベルを知りたい 。
  • コードレビューを完成したコードでやるより、一緒に作業して都度指摘するほうが細かいことに気づけるため 。
  • 作業中のショートカットや便利ツールなど、完成品から学べないところを共有したい。
  • 作業に入る前にmixinなど、レベルが高いまたは複雑になるのを防ぐ方法を事前に共有したい時。

実際、私がやった時は私の技術レベルを先輩エンジニアが知るというのが目的でした。

また、私と先輩エンジニアとで定めたルールは以下です。

  • HTMLのマークアップ作成時にその構造にした理由。デザインを見てどのCSSを使ってどの数値にするかなど、
    何故そう思ったのか先輩エンジニアに説明する。
  • ドライバーの時に分からないものはナビゲーターに相談。
  • ナビゲーターに指摘されたものはすぐに実行。
  • ペアプログラミングする時間を事前に決めておき、時間終了時に振り返りを行い、次の作業に備える。
  • ドライバー・ナビゲーターは15分ごとに交代。
  • 1時間経過後10分休憩。

では、私がペアプログラミングをやってみてどのような効果が出たのか。
感じたものや得られたものをメリット・デメリットに分けて紹介します。

メリット

常に何がしたいか考えて伝える自立心

ペアプログラミングはドライバーとナビゲーターとのコミュニケーションが重要です。

作業する時に「何をしているのか」また「どこの作業をしているのか」を伝えることが必要です。
ドライバーがやっていることが分からなければ、作業の共有ができなくなり作業ミスに繋がります。

例えば、ドライバー が「今からこの文章のCSSをデザイン見てサイズとか設定します。」など、
1つのマークアップごとに細かく伝えていけば、ナビゲーターの人にも理解しやすいです。

また後輩も意見を発信できる場なので、自立できる機会にもなります。
特に普段指示待ち人間の人とか、自信ない人とかに改善できるチャンスかなと思います。

どうやってナビゲーターに説明すればいいのか。コーディングにおいて段取りを自分でできるようになるか。
考える力や伝える力が鍛えれる機会になります。

ペアとの知識・技術の向上

ペアプログラミング をやってみて1番感じたものは、
ナビゲーターに指摘されたことをすぐに実践できて、勉強に対する吸収がしやすいことでした。

例えば1人でやっている時に、分からないところはネットで調べて適切なものを入れるという作業をしているかと思いますが、
経験と知識の量によっては結局これが正解なのかその場で分からないことが多いと思います。

後輩は分からないところを聞こうとしても後回しにされたり、先輩が作業を巻き取ったりして、
完成後の内容を少し説明されただけでは後輩は実際理解している割合としてかなり低いかと思います。

ペアプログラミングはナビゲーターに指示を仰ぎ、ドライバーは指示された内容をすぐに実践できるので、
再現性が高くドライバーにとっては勉強で分からなかったところを次に活かしやすいです。

特に先輩後輩との関係では、困っているところが見つけやすいので教育の機会にもなります。

先輩も指示出す時に、どういう説明すれば分かりやすいのか。
また今回のペアプログラミングで後輩がどこまで向上して欲しいか目標も出せるので、先輩後輩共に学べる機会でもあります。

作業内容の共有での効率化

大きなサイトになると作業分担の数が多いと思います。
あるあるなのが、修正作業において担当者は誰なのか分からなくなってしまうことがあるかと思います。

ペアプログラミングは数人で1プログラムを作業するので、
例え誰か1人が不在でもペアプログラミングしていた他の人がすぐに対応できます。

ただ、注意点として後輩が理解できる範囲で作業後の修正作業担当は分担しておくことをお勧めします。

デメリット

スケジュール調整の難しさ

ペアプログラミングは数人で行う必要があるため、
メンバーが多くなるほどそれぞれメンバーのスケジュールを合わすことが難しいです。

特に先輩社員は時間を取れない機会が多く、1日の目標が大きいほどペアプログラミングの時間を割く必要があるので調整が難しいと思います。

ペアプログラミングをするにあたって、ゴールまでに対する段階的な目標が明確でない限り時間を押してしまうことが多々起こるので、
1ページ作るとかよりもパーツごとに目標のセクションを切ってもいいかもしれません。

またペアプログラミングは1人で作業やるときよりも疲労がたまりやすく、休憩の時間が必須になります。
長時間のペアプログラミングはできるだけ避けた方がいいかもしれません。

ペアとの作業スピードの相違

先ほどのスケジュール調整の話題の原因の1つになるのが、メンバー別の作業スピードの違いによって目標の想定との相違が生まれることです。

これは仕方がない話ですがスケジュールも折半詰まるので、ペアプログラミングの管理者は目標の調整も必要です。

例えば、ルールで15分ごとに交代とありますがこのルールを
「後輩は20分、先輩は10分」と後輩のスピードと質問等の時間を想定してルールを変えるのもありです。

先輩は作業に対する時間の想定を見積もることが重要です。

まとめ

今回はペアプログラミングについて実際に行った例を交えて紹介しました。

  • チーム内での全体のレベルを知りたい。
  • チーム内でコミュニケーションの機会が欲しい。
  • 先輩から技術を吸収したい。

以上に当てはまる人はペアプログラミングはオススメです! 
関係性にもよりますが、私はペアプログラミングを経て一緒に作業した先輩とはコミュニケーションかなり取れていて、ペアプログラミングをやってよかったと思います。

それではまた今度。