見出し画像

ペアプログラミングで意識している5つのポイント

エンジニアとしてキャリアを積んでいくと、新人エンジニアを育成する機会も増えてくるかと存じます。
ペアプログラミングはソフトウェア開発の手法で導入するメリットは非常に多く、メンバの育成手段の1つとして実施されている方も多いのではないでしょうか。

そこでこの記事では、ペアプログラミングについて筆者が意識している5つのポイントを紹介致します。

ペアプログラミングで意識している5つのポイント

1. 作業時間の上限を決める
2. 抱えている課題をヒアリングし、ペアプログラミングのゴールを決定する
3. 答えを教えない
4. 議事録を作る
5. 認める

今後ペアプログラミングを導入したい、実施しているがあまり効果がなさそう、そういった方々に考えるきっかけとなれば幸甚に存じます。

作業時間の上限を決める

人間の集中力には限界があり、朝から晩まで全力疾走することはできません。
そのため、最初に何時までペアプログラミングを行うか、作業時間の上限を決定します。

ここでの時間についてですが、短すぎて消化不良になっても良くないですし、長すぎて途中でだれてしまうことも良くありません。
私は、概ね30分から60分の間の作業時間を提案し、仮に時間内に問題を解決できなかったとしても終了するようにしています。

抱えている課題をヒアリングし、ペアプログラミングのゴールを決定する

例え課題がチケットに記載されていたとしても、または Slack で事前に解決したい問題点を共有してもらっていたとしても、ペアプログラミング開始時にドライバーから現状を直接聞きます。
というのも、課題に対する本人の認識と抱えている本質的な問題が別にあるケースが多いためです(実際、起きている問題を本人が正しく認識していれば、自己解決できる可能性が高いです)。

インプットが適切でないと、それに伴うプロセスおよびアウトプットに影響が出てしまうため、腰を据えて会話します。
会話内容について、私は下記についてまず問いかけることが多いです。

- 課題
- 詰まっていること
- 試してみたこと
- 現状の成果物 (実装したソースコードや出力されているログなど)

答えを教えない

私は、課題や詰まっていることについて質問します。
また、今まで試したことやそれに対する成果物に対してフィードバックを行います。
時にはロジックや関数の紹介も行います。

しかし、具体的な実装を教えることはできる限り行わないように意識しています。
本人が考え、コードを書き、出力結果を考察する。
このプロセスの経験を積まないと、ドライバーは自らアウトプットを作り出すスキルが身につかない
ためです。

確かに私が代わりに実装をした方が、結果的に2人の時間を抑えられることになるかもしれません。
しかし、それは「ペアプログラミング」ではなく「巻き取り」です
もしかしたら期日に大幅に遅れていて悠長なことを言っていられないケースがあるかもしれませんが、それはまた別の問題をはらんでいるかと存じます。

なぜペアプログラミングを行っているか、その目的や本質は常に忘れないように心がけています。

議事録を作る

問題解決の手法は「アルゴリズム」と「ヒューリスティック」の2種類があります
アルゴリズムは定式化された手順で答えを出す問題解決の手法で、例えば「二次方程式の解の公式」などがあります。
一方、ヒューリスティックは経験則や直感により答えを導き出す問題解決の手法で、例えば「図を描く」「補助線を引く」などがあります。

どちらがより優れた手法、というわけではありません。
例えば、アルゴリズムは確実にその問題を解決することができますが、異なる分野では利用できないことがあります。
一方で、ヒューリスティックは汎用的ですが、確実に解決できるとは限りません。
両方の手法をバランス良く身に着けていくことが、問題解決能力を向上させるために有効であると考えられます

そこで、私が取り組んでいることの1つに「議事録の作成」があります。
課題を解決するためにどのような調査を行ったか、具体的にどのような関数を用いて実装したかなどをドライバーの作業中に記録し、ペアプログラミング後に共有します。
言語化しフィードバックを返すことで、作業を通じてどういった解決方法を身に着けたか、今後どのように応用を利かせていくかの気づきを得るきっかけとなることが狙いです。

認める

ヒアリングしている際、課題は正しく認識している、試したことへの筋も良い、しかしアウトプットまでたどり着けず途方にくれているといったケースにあたることが少なくありません。
やり取りを続けていると「本当にあっているかわからない」「他に良い方法があるのではないか」といった回答をいただくことが多く、ドライバーは概ね進め方に不安を抱いていることに気付かされます

そのため、褒められるところを探すアンテナは常に貼るようにしています。
フィードバックを返す際、改善点を指摘することは簡単ですが、正しくできていることについてはコメントしないことが多いため、意識的に返すように心がけています。
この調子でうまく行けている、そのまま進めば自力でゴールにたどり着ける、そういった後押しが一番の特効薬になることもあります。

まとめ

この記事では、ペアプログラミングについて筆者が意識している5つのポイントを紹介致しました。

ペアプログラミングで意識している5つのポイント

1. 作業時間の上限を決める
2. 抱えている課題をヒアリングし、ペアプログラミングのゴールを決定する
3. 答えを教えない
4. 議事録を作る
5. 認める

今後ペアプログラミングを導入したい、実施しているがあまり効果がなさそう、そういった方々に考えるきっかけとなれば幸甚に存じます。


もしよかったら投げ銭をお願い致します。

ここから先は

0字

¥ 100

この記事が気に入ったらチップで応援してみませんか?