Feedforce Developer Blog

フィードフォース開発者ブログ

「先輩エンジニア×新米エンジニア」でカイゼンしながらペアプログラミングを行った!

f:id:chionyan:20181108115738p:plain

こんにちは!5月にポテンシャル枠でエンジニアとして入社した id:chionyan です🐰
同じくポテンシャル枠で入社したエンジニアの id:daido1976 が公開した記事ががかなりの反響を呼んでいて嬉しい限りです❗️ developer.feedforce.jp

今日は、新人エンジニア研修を終えプロダクトに配属され、『ペアプロ』を体験した話をお伝えしようと思います😎

ペアプロってなんだろう??

弊社に入社する前に様々な会社を調べていると ペアプログラミングを実施している という文言を見受けられました。

私の中のなんとなくふわっとしたペアプロのイメージは「お互いでコードを確認し合うっていいなぁ」くらいで、色んな会社が実施しているということは何かしらメリットがあるのかな?と思ってる程度でした👀

しかし、実際に実践してみると、ペアの組み合わせや理解度などによってやり方の工夫などが必要だと感じたので、そちらの感想を書きたいと思っています!

また、今回はタイトルの通り 「先輩×新米」のペアプログラミング にフォーカスした内容になっています! ネットではベテラン同士のペアプログラミング記事は多いですが、新米エンジニアのペアプログラミングの感想はなかなか見かけないので、この記事から何か伝えられるものがあればいいな、と思います!

用語説明

  • ドライバー :キーボードを操作し、コード記述を担当する
  • ナビゲーター :俯瞰的な視点を持つことで、ドライバーのサポートを行う

初めてのペアプログラミング

新人エンジニア研修を終えdfplus.ioチームに配属された私は、初めて 目の前にする巨大な Rails プロジェクトのコードを前に、先輩エンジニアかつ社内のカイゼンお兄さんである id:pokotyamu と『ペアプロ』で進めよう!という運びになりました。

まずは、先輩が操作しながら説明してくださる巨大なコード軍を同じモニタで追っていくけど…自分とエディタが違ってどこを見ればいいかわからない😇(パニック)

また初日はコードの説明なども含めや先輩がドライバー、新米の私はナビゲーターの役割を果たしていましたが、、、ペアプロがなんたるものか知らずに何もできず、ただ無力感を感じたことを覚えています🙇‍♀️

その他にも、ペアプロを実施することで進捗の遅れなどないかな、と不安な一日でした。。。

初めてのペアプログラミングを振り返って

弊社では毎朝朝会でファイブフィンガーを行なっており、そこで昨日の不安感を伝えると、昨日のペアプログラミングの振り返りを行うこととなりました!

developer.feedforce.jp

今回の 「先輩×新米」 ペアでは 実装レベルの差やコードの理解などに合わせて進め方やコミュニケーションの取り方を工夫する必要がある と考えられるため、

  • ドライバーは「何をするか、しているか」を口頭で随時宣言、説明する
  • ナビゲーターは「コードの移動が早い」や「何をしているかわからない」時はその旨を伝える

というトライを行うことになりました💪
結局はペアプログラミングって対人コミュニケーションなので、相手のことを理解した上でやらないとかなり消耗しますしね💦

また最初に書いた様に私がペアプロをやる目的もふわっとしていたので、そちらも合わせて教えてもらいました!

  • コードの実装時間自体は長くなるが、二人で同じ内容を確認しながら実装するため、コンテキストスイッチは発生しない
  • 今回のペアプロはコードを理解することを主軸としているため、進捗の遅れなどに気を揉む必要はない

などを説明していただき、新米エンジニアの不安を解消しながらペアプロで実装していける環境づくりを整えていきました✨

id:pokotyamu のペアプロ(モブプロ)解説スライド

f:id:chionyan:20181108123520p:plain
振り返りのカンバン

その後のペアプログラミング

その後もペアプロを行いながら実装を行いましたが、ナビゲーター時は見て学び、ドライバー時は学んだ技術を使用しながらコードを書くことで、エディタの使い方や実装速度も速くなったとフィードバックをいただけました🙏✨

それでもずっとペアプロしてると疲れたりもあるので、

  • 20〜25分(体調による)×2セットに10分の休憩タイミングがいい感じだとわかった
  • 自分がペアプロで学んだことをまとめる時間を取る
  • コードをあらかじめ読んでいたところは比較的理解が進む
  • 18時以降はダレてくるのでペアプロはやらない

など、お互いでいい方向に向かえるようにカイゼンを行いながら実装を完了させました👏👏👏

まとめ

今回初めて先輩エンジニアとのペアプログラミングを体験してわかったことは、

  • ペアの思考力、コーディング環境や能力の差について明確にする
  • 相手のことを理解してどの様にコミュニケーションを取るか

などをペアの特性をお互いで理解して歩み寄ることが大切だなと感じました🙏🙏🙏

特に 先輩と新米 でペアプログラミングを行う際には、

  • ペアプロが何を目的として行なっているかを明確にする
  • ペアプロを行うことに対する不安感を拭い去る

ことで心理的安全性を確保できるので、新米でも安心感を持ってペアプログラミングができました❗️
そのような環境を整えてくださった周りの諸先輩方にはとても感謝しております✨✨

今後私がペアプロを行う際も上記のことを意識して行っていきたいと思います💪😀

参考にさせていただいた記事・書籍

上記でもペアプログラミングについて知見がたくさんあったので参考にさせていただきました。
新米エンジニアだけどまだまだ自信ないからペアプログラミングやってみたい…という方は上記の記事なども参考になさると良いと思います😆
私も大変参考にさせていただきましたので、執筆者の方々にはとても感謝しております、ありがとうございます!