この記事は、コドモン Advent Calendar 2022 25日目の記事です。 qiita.com
プロダクト開発部の千田です。
コドモンではアジャイルな組織になるためにXP(Extreme Programming)を取り入れています。今回はXPのプラクティスの1つでもあるペアプロに、どのように取り組んでいるのかご紹介します。
ペアプログラミングとは何か
ペアプログラミング(以下、ペアプロ)とは、2人で1台のコンピュータを用いて開発に関する作業をすることです。
ペアの役割の分け方はドライバー(コードを書く人)と、ナビゲーター(より俯瞰的な視点で考える人)に分かれてプログラミングを行います。
リモートワークでどのようにペアプロを行っているのか
現状は開発メンバーはリモートワークの割合が多く、Gatherというバーチャルオフィスのサービスを利用しています。 tech.codmon.com
Gather上で画面を共有しながら手を動かします。
ほぼ出社しているのと同じような感覚で話せるので近い距離感でコミュニケーションが取れますし、ペアプロ中にわからないことがあっても近くにいるメンバーにすぐ聞けるのも大きなメリットです。
コドモンではVSCodeやIntelliJなどのエディタを開いてプログラミングを行うだけでなく、問題調査やテスト仕様書の作成、運用フローの改善等、開発に関する作業は基本的にペアで行っています。
なぜペアプロをするのか
ペアプロをする理由はプロダクトの品質を高めながら、成長し続けるチームを作るためです。
コドモンは2015年に正式リリースを行い、約7年が経ちました。保育・教育施設の先生の業務を省力化すべく、多くのサービスをリリースしました。
コドモンを利用するユーザーが増え、開発メンバーも増える中でプロダクトの機能も多様化してきました。
その中で特定のサービスの仕様をひとりだけが把握している状態(属人化)が起こると、その人に業務が集中したり周りからのフィードバックを受けづらくなったりなどの問題が発生し、開発速度だけでなくプロダクトの品質も低下する可能性が出てきます。
そのため、コードを書いた特定の人がコードに対して責任を負うのではなく、チームがそのコードに責任を負うようにしています。
ペアプロにより「このコードは〇〇さんが書いたので私は知らないです」という発言をなくしたり、何かトラブルが起きたときに個人に任せっぱなしではなくチームで解決しようという行動が生まれます。
リスクの防止だけでなく、知識の循環や迅速なフィードバックを受けられるメリットもあります。具体的には次のとおりです。
ペアプロのメリット
属人化を無くせる
- 一定期間でペアを頻繁にチェンジするため、その人しか知らないという状況が生まれなくなる(その人がいないと作業が止まるという状況を防げる)
- 急な休みや、長期的な休みにも強いチームになる
知識の循環を促せる
- 「ペアの相手がどのように考え、判断しながらそのコードを作成したか」の過程をリアルタイムで知ることができる
- その人特有のショートカットやツール、コマンドなども知ることができる
フィードバックを迅速に得られる
- ひとりで進めていると、その方針や対応が好ましいとわかるまでに時間がかかる
- コードを書いた直後に指摘を受けることができるため、フィードバックサイクルを迅速に回せる
すべての業務をペアプロで行うのか
どのチームでもペアプロは毎日行っています。 ただしすべての業務をペアプロで行っている訳ではなく、ソロで行う業務もあります。
例えばお問い合わせによる調査業務や、システムの設計をひとりで考えたいときなど、レビューが不要な業務は時間を決めてソロで行うこともあります。
また、ペアを組んでいる相手が途中で抜ける場合は、その間にソロで進めておいて戻ったら情報共有し、ペアプロを再開します。
最後に
今回記事に取り上げた他にも
- 毎日ペアは変えるのか
- ペアプロで解決できないことが起きたらどうするか
- モブプロとペアプロの使い分け
など、ペアプロのコツや取り組む際の姿勢など細かい話しはありますが、また別の機会とさせていただきます。
気になる方はカジュアル面談で詳しく話せますので、お気軽にご応募ください。 www.wantedly.com
以上、コドモン開発チームのペアプロの取り組みについてでした。