こんにちは。ノバセルでエンジニアをしている新開です。 新卒エンジニアとしてノバセルに入社してから数ヶ月。 ペアプログラミング(以下、ペアプロ)を通じて得られた学びや発見は非常に内容が濃いと感じています。 本記事では、ノバセルで行っている具体的なプラクティスやペアプロを実践する中で感じた恩恵について共有します。
この記事は ノバセル Advent Calendar 22日目です。
ペアプロとは?
アジャイルソフトウェア開発において広く採用されている手法の一つで、2人のプログラマーが1台のコンピュータを共有して共同でプログラムを作成します。 この手法は、ケント・ベック氏らが提唱した「エクストリーム・プログラミング(XP)」のコアプラクティスの一つとして知られています。
XPは改善と学習を繰り返しながら進化し続けることを目指しています。XPは柔軟で迅速な対応を重視しつつ、継続的な技術成長に主眼をおいたアジャイル開発手法の一つです。
引用: アジャイル開発におけるエクストリームプログラミング(XP)とは? | - Qiita Team 社内向け情報共有サービス
ペアプロでは次の2つの役割を持つことが一般的です。
- ドライバー (Driver): キーボードとマウスを操作し、コードを実際に書きます。
- ナビゲーター (Navigator): コードの設計やロジックを確認し、問題点や改善案を提案します。
これらの役割を一定の間隔で交代することで、双方が全体像を把握しつつ、実装とレビューを同時に進めることが可能になります。 このリアルタイムの協働作業により、コードの品質向上やスキル共有、チームの一体感の向上といった多くのメリットが得られるとされています。
プラクティス
1. コミュニケーション
ペアプロ中は常にコミュニケーションを取り続けます。 ペア内でいま考えていることなどの情報共有をリアルタイムに行うことで、誤解やミスが減り効率的に作業を進めることができます。
2. シンプリシティ
常にシンプルさを追求し、議論することは本当に重要な問題だけにします。 設計・議論をできるだけシンプルにすることで問題の本質に集中できます。
3. フィードバック
常に実装に対してリアルタイムにフィードバックを与え合うことで、より良いコードを作り上げることができます。 実装の過程においてその場で指摘や修正を行うため、バグなどの問題を早期に発見しコードの品質を高めることができます。
4. 勇気
ペアプログラミング中には、意見を述べる・ミスを認める・新しいアイデアを試すなど、いたるところで勇気を発揮する必要があります。 勇気を持って新しいアイデアを提案することで、斬新なアイデアや改善案が採用されるチャンスの創出に繋がります。
5. リスペクト
ペアのアイデアや、今まさに書かれたコードをリスペクトし続けることが基本です。 リスペクトの姿勢を持つことは自分とは異なる考え方やアイデアを受け入れることにつながります。 多様な視点を活用したより良いソリューションが生まれやすくなります。
6. 役割を一定の間隔で交代
ポモドーロテクニック (ポモドーロ) とは、25 分間の作業セッションに 5 分間の休憩をはさんだ時間管理戦略。 生産性アップだけでなく、作業を分割し 1 つずつ処理していけるため、精神的な疲れも減らせます。
引用: ポモドーロとは?仕事の生産性を上げる時間管理術 [2024] • Asana asana.com
ポモドーロ・テクニックに倣い25分の作業時間・5分の休憩時間を1セッションとして、セッションごとにペアの役割を交代しています。 役割を一定間隔で交代することにより両者の解像度を均等に保て、かつ集中力を持続させることが可能になります。 ペアプロは想像以上に体力を消費します。時間で区切りしっかりと休憩を取ることがポイントだと感じています。
7. ペアプロ後に反省会
マインドセットが意識できていたかを確認します。 できていなかった場合は次回できるようになるためのすべきアクションを明確にし、できていた場合は今後も再現性高く実施するために何が良かったのかを明確化します。
新卒1年目が感じた恩恵
1. コードレビューがリアルタイムに行える
通常のコードレビューではPull Requestを出した後にコメント/Approveを受け取る形式が一般的ですが、ペアプロではその場で即座にフィードバックを得ることができます。 これによりミスの早期発見ができ差し戻しで発生するタイムロスが減少しました。
2. スキルアップ
リアルタイムのフィードバックを通じて自身のコードスタイルの改善点に気づける機会が増えます。 また相手の視点や知識を吸収することでエンジニアとしてのスキルアップに限らず思考プロセスの幅が広くなります。
3. チーム内の信頼関係の構築
ミスを認めたり不明点を尋ねる姿勢は、チームメンバーからの信頼を得るきっかけになると考えています。 このような態度はオープンで協力的なチーム文化を育みます。
さいごに
最後にエンジニア歴10年以上の先輩に新卒1年目とのペアプロでどのようなことに意識しているかを聞いてみました。
私は経験が少なめのエンジニアとペアプロするときに2つのことを意識するようにしています。 1つ目は、自分の役割がナビゲーターの時は改善点を指示しすぎないようにすることです。問いを投げかけることで自発的に思考をして問題に気づくことができると考えています。 2つ目は、自分の役割がドライバーの時に1人で進めすぎないようにすることです。相手を置いていかないことで両者が持続的に生産性を発揮できるようになります。
ペアプロは新卒1年目のエンジニアにとって、学びと成長の機会を大きく広げてくれる手法だと感じました。 最初は緊張や戸惑いもありましたが、実践を重ねるごとにスムーズに進められるようになり、その恩恵を強く実感しました。 これからもチームでの学びを大切にしながら、開発効率を最大にできるように尽力していきます。