1. はじめに
これは新規にアジャイル開発に参画し、ペアプログラミングとモブプログラミングを通して参画1ヶ月半で開発メンバーとして開発できるようになった話です。
参画時(4月)のチームの背景は以下の通り
-
6人の開発メンバーがおり、2人が新規着任のプログラム初心者
-
5月末には既存メンバーの1人が離任する予定
-
6月にリリースが控えておりチームとしてリビルドが急がれる中、教育しながら開発を行う状況
2. 実施期間
4月下旬〜5月頭まで
-
ペアプロ約3週間
-
モブプロ約2週間
3. ドライバーとナビゲーターについて
ペアプロは新規着任者1名(ドライバー)に対し、タスク毎に都度既存メンバー1名(ナビゲーター)でそれぞれペアを作り実施。
モブプロは新規着任者2名と既存メンバ1名で実施。
コーディングはナビゲーターの指示に従うものの、自走できるよう実装方法は自身で検索・検討しながら進めた。
ナビゲーターコメント
教育観点でペア・モブプロを行ってみたので、「理解してもらうこと」「質問をしてもらうこと」が狙いでした。
スクラムチームに参加してもらうにあたって「わからないことは調べてから聞く」→「聞いてわかることはさっさと聞いちゃう」くらいにマインドを変えて欲しかったのです。
4. 感じた効果
-
ソースコードへの理解
ナビゲーターが答えを教えるのではなく考え方を示したり質問を通して考える機会を与えてくれたため考える力がつき、ソースコードへの理解を深めることができた。
実装の中では、考え方はわかるがコードが書けないという場面が多くあったが、コメントコーディングで何をしたいのか一旦日本語で書き出すことで、実現したいことが理解できているか等意識合わせしながら進めることができ、個人的にはソースコードを理解する力や実装する力が付いたと実感を持てた方法としてかなり有効だったため、今後ペアプロを行う機会があるナビゲーターの方にもぜひ試していただきたい。 -
暗黙知の共有
実装にあたってどこから考えたらいいか、どの資産から修正するのがいいすらもわからなかったが、ペアプロでは実装の際の思考過程やググり方、VScodeのコマンド等互いの作業が見えるため、知識の共有がスムーズだった。 -
コミュニケーション量の増加
会話ベースでコーディングを進めることが多かったため、純粋にコミュニケーションが増え雑談もしやすくなった。 -
自身の得手不得手への気づき
複数の人とコーディングを行うことで自分に合った進め方や得手不得手に気づくことができた。ペアプロはナビゲーターの考えに依存するため、実施する際は複数人のもとで経験することで各ナビゲーターのいいところを吸収し、自分に合った進め方を見つけられるように感じる。
5.より効果を出すには
-
ある程度の道標は必要
修正資産・修正箇所が複数ある場合は、まずはどこから修正するのがいいか等道標があるとより理解が深まったと感じる。
複数の修正資産がある場合、作業の中で複数の資産を行ったり来たりするため、どの資産をどのように修正しているのかがわからず、混乱することがあった。ソースコードだけでなくプロダクトの全体像も分からない状態でまるっきり考えて進めるのは理解の深耕には繋がらないように感じた。
→ナビゲーターには進め方の方針は決めてほしい -
振り返りが大事
コーディングが完成したら終わりではなく、振り返って不明点や理解しづらかった点を質問する時間があるとより理解の深耕に繋がると感じた。
6. どんなタスクがペアプロ・モブプロに適しているか
新規資産、修正資産それぞれ実施した上で、ペアプロ・モブプロではディスカッションが必要なタスクについて取り組むのが適していると感じた。
実装方針が未確定もしくは実装方法が複数ある場合等、参考になる資産がある場合も都度ナビゲーターとコミュニケーションを取りながら、また必要に応じてチームで意識合わせをして進めるため、検索方法やソースコードだけでなくプロダクトの全体像に対する理解を深めることができた。
一方で修正箇所が明確な資産については考える必要はないため、資産の役割を理解することはできたが、ソースコードに対する理解や技術的底上げには繋がらないように感じた。
ナビゲーターコメント
検索方法などの「どのように問題を解決するか」のスキルを伝えることができる事が最も大事な成果の一つと考えています。効果が出て良かった!
しかし「定型作業・簡易なコードでは効果なし」という感想については、確かにスキルアップには繋がらなかったかもですね。
コードレビュ負荷の軽減だったり、タイポや軽微なミスによる手戻りなどを防げるので、生産性を上げるための目線でもみてみたいですね。
7. 生産性について
当チームでは教育を行いながら開発を行う必要があったが、教育期間の生産性について大きな変化はあるのか参画前のチームのベロシティと比較してみる。
着任前の平均ベロシティは20前後(1Sprint2週間、開発メンバー6人体制)であったのに対し、ペアプロ・モブプロ実施期間の平均ベロシティは8.3(1Sprintは1週間)。 体制やSprint周期に変化があるものの、大きな生産性の低下はないと感じる。
ナビゲーターコメント
むしろメンバー2人が初心者に変わる+ペアプロで1人アサインしている状態なので、開発に影響をほとんど与えずに教育もできてハッピーでした。
8. 感想レベルのペアプロとモブプロのメリデメ
ペアプロとモブプロを実施して感じたメリデメについて表にまとめてみた
ペアプロ | モブプロ | |
---|---|---|
メリット | ・迷ったら即質問、分かるまで質問ができる ・ナビゲータ毎に考え方が異なるため様々な視点を得ることができる(複数人とペアプロを実施した場合) ・ペアワークとなるのでチームメンバーとのコミュニケーションの頻度が向上する |
・人の実装方法を見ることができる ・実装内容を客観的に見れるため自分の理解度を確認できる ・チームとして意見を出し合える |
デメリット | ・質問力がないと解決しない ・ナビゲータの知識や説明に左右される |
・ペアプロと比較して都度質問し辛い ・コーディングしない時間があるためやや退屈に感じる ・作業の見積もりと実績に乖離が起きやすい |
9. 使い分けて活用することが必要
初心者がペアプロ・モブプロを行ったことでチームへの参画の速度は格段に早かったように感じる。何よりも開発の中で雑談が増えたことで、業務の中での困り事や気づきも言いやすくなった。業務の中でコミュニケーション不足に感じている場合にはペアプロなどを取り入れてみると良いかも知れない。
今回はペアプロを実施した後にモブプロを実施したが、モブプロはある程度ドライバーの知識に土台がある方がスムーズに進められるように感た。また、モブプロはチームで意見を出し合える利点があるが、チームビルドがされていない状態で実施した場合は活発な意見出しは難しく、コミュニケーションコストが大きくなると感じた。
ナビゲーターコメント
ペアの方がドライバーからの話しかけやすさがあった感じですね。
モブプロはコミュニケーションがオープンにできるくらい新規メンバーがチームに馴染んでからの方が効果があったかも??