こんにちは。
ジムに通えてないけど解約したらいよいよ痩せられなくなるのでは…のフロントエンドエンジニアの小松です。
先日何の前触れもなくエンジニアチームの中で『ペアプログラミングやってみない?』という話になり、最低限の予備知識でとりあえず実践してみました。
というわけで今回は「ペアプログラミングを導入する際の極意・コツ・成功談」といった内容ではなく、きちんと計画した上で実践しないとペアプロの恩恵が受けられませんよーという記事になっております。
ぜひ僕らの失敗体験を反面教師として、これからペアプロ導入を検討されている方々のお役に立つことができれば幸いです笑
目次
ペアプロ予備知識
ペアプログラミング(英: pair programming)は、2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法である。一方が単体テストを打ち込んでいるときに、もう一方がそのテストを通るクラスについて考えるといったように、相補的な作業をする。 実際にキーボードを操作してコードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。30分ごとか、単体テストを1つ完成させる度に役割を交替するのがよいとされる。また、1日に一度の頻度でパートナーを変えるのがよいともされている。 wikipediaより引用)
細かいルールは会社によってそれぞれだと思いますが、ナビゲータがドライバを導く(=レビューしながら最適な方向へ誘導する)といった感じでしょうか。
逆にドライバはコーディング自体に集中できそうですね、程度の理解で早速やってみました。
ペアプロ1回目
担当1
ナビゲータ: 小松
ドライバ: 山本
開発内容1
Railsで開発中の出欠管理ツール内で、ユーザーと出欠状況をセットで表示する
(僕が勉強のため作っている非常に質素なやつです)
作業としては下記のような感じでした
- controllerから必要な情報を配列形式で変数に格納
- 変数をviewで回してユーザー情報と出欠状況を表示
- 出欠状況をI18で日本語表示する
結果1
結論から言うと、ペアプロが成立しませんでした
言うまでもなく下記の構図が原因ですね…
ナビゲータ: 小松(Rails学習中)
ドライバ: 山本(Rails経験者)
ナビゲータである僕が『へぇ〜』『なるほど、そうなんだ〜』といった感じでドライバである山本からRailsのあれこれを教えてもらうだけの1時間になりました。
ドライバに導かれまま、さながらタクシーにでも乗っているかのような快適さでした。
指南の時間を取らせることでドライバの作業効率を落とし、ナビゲータは何もしないという状態になり
ペアプロの恩恵は何も得られなかった結果となりました(勉強にはなりましたが…笑)
ペアプロ2回目
担当2
ナビゲータ: 山本
ドライバ: 小松
開発内容2
Railsで開発中の出欠管理ツール内で、グループへの新規メンバー招待機能実装
作業としては下記のような感じでした
- 招待機能の設計をホワイトボードに書く
- 招待リンクの生成とDB保存処理を追加
- 生成した招待リンクをグループページに表示してみる(ここで終了)
結果2
1回目の反省から担当を交代して実践してみた結果、ドライバにとっては有意義なペアプロとなりました!
例えば機能設計の場面では、僕が設計をしながら山本がリアルタイムでレビューをしてくれるので非常にスムーズに進みましたし、俯瞰した視点での指摘がもらえるのはとても勉強になります。
手を動かす(実装する)前段階でレビューがもらえるのはまさにペアプロの恩恵ですね。
また、普段の開発でもよくあるのですが「調べながら書く」という部分が、ナビゲーターが調べ・ドライバが書くという分業が成り立つのもメリットとして感じました。
ナビゲータに導かれまま、さながらGoogleMapで最短のルートを案内されるような快適さでした。
感想
2度のペアプロを通して感じたことをとりあえず箇条書きにしてみます。
- そもそもペアプロを実施する目的を明確にしてから取り組むべき
- 効率化を重視するのか?
- スキル向上を重視するのか?
- 開発内容次第で役割は変えるべき
- ナビゲータはドライバをレビューできるスキル・経験が必要
- ドライバからナビゲータに対して何か提供できないのか?
- 間違いなくドライバのためにはなるが、ナビゲータにとっても有意義な時間にするには何が必要?
- ある程度まとまっった時間が必要なのでは
- ペアプロはコミュニケーションしながら進めるので、純粋な開発の時間は意外と少ない
- 成果物が仕上がるまで進めないと総評的な振り返り・レビューができない
今後の動き
記事にするのもおこがましいレベルで手前味噌な取り組みでしたが、ペアプロを有意義な時間にするために必要なことや工夫すべき点が見えてきました。
この記事を執筆している本日、エンジニアチームmtgにて今後のペアプロ体制が暫定で整い、しかも派生した新たな取り組みもアイデアとして上がってきたので早速来週から運用開始します!
(その詳細や様子はまた別の記事で…)
それでは乞うご期待ください!