algonote

There's More Than One Way To Do It

リモートワーク時代こそOJTでペアプロをしよう

新人含めてリモートワーク体制にする方法

前口上

内定式のシーズンですね。本記事執筆時点で日本はまた感染者数が谷に入り、ちょうど入国規制が緩和されました。とは言え、リモートワークを部分的にしろ全部にしろ実施しているIT企業がまだ多いです。おそらく元に戻ることはないと思います。

実際、一つの統計では年収800万円以上のITエンジニアの8割がフルリモート勤務となっており、シニアエンジニアになるほどフルリモートワークを選択しています。

一方で新人はリモートワークはつらいという声もちらほら聞きます。メンターはリモート勤務希望なのに、新人は出社の方がいいという声がある、ねじれの構造があるわけです。

今回ねじれ解消の一つの方法論としてペアプロを提案してみます。

ペアプログラミング

最初に簡単にペアプログラミングについて説明します。

ペアプロ、ペアプログラミングは一つのプログラムを二人で同時に共同開発する手法です。出社時なら同じディスプレイを見ながら横に並んで、リモートワークなら画面をZoomなどで共有しながらコードを書きます。

二人の場合ペアプロと呼ばれますが、三人以上でやる場合はモブプロ、モブプログラミングと呼ばれます

通常プログラミングは一人で行うことが多いと思います。プログラミングを覚えた際に一人だった、自分のペースでコードを書きたい、せっかくプログラマーを雇ったのに二人で一つのコードを書いていたらコスパが悪いように見えるなど意見は様々です。

個人的にはコンパイル待ちがあるような言語の方が不利に感じています。アイドルタイムが2倍になってしまうのでスクリプト言語の方が向いているのではないか。

ユタ大学の研究

ペアプロについての論文もあって、例えばユタ大学のThe Costs and Benefits of Pair Programmingが有名です。

論文では

  • 経済性
  • 満足度
  • 設計品質
  • 継続的レビュー
  • 問題解決
  • 学習
  • チームビルディングとコミュニケーション
  • メンバーとプロジェクトマネジメント

の観点について論じています。

経済性で言えば、ペアプログラミングにかかる時間は2倍にはならず高々15%増で、バグを15%減らすことが語られています。コスパが思ったほど悪くないですよね。

他にもコードが綺麗になったりするのですが、今回大事なのは学習の部分ですね。7~8割の人がペアプロの方が理解度が上がったと答えています。

マネジメントのレベル感

以上を踏まえつつ、マネジメントのレベル感を整理するとこんな感じでしょうか。

  • Lv. 0: メンターなし
  • Lv. 1: メンターがいつでも聞いていいよと言っている
  • Lv. 2: 定期的に聞ける場がある
  • Lv. 3: 定期的にペアプログラミングを行なっている。

Lv. 0はメンターがない状態です。ベンチャーで各担当ひとりかもしれません。会社に余力がないので自力で育ってと言いたいところですが、例えばフルスタックなCTOがレビューだけやったりで一定の受け皿を作ることができます。

Lv. 1はメンター指名性にした状態、Lv. 2はプラスで定例も設けたもの。単に聞いていいよと言っているのと定期的に聞ける場があるのとではマネジメントのレベルが違います。

ここまではよくある話。今回提案したいのはLv. 3: 定期的にペアプログラミングを行なうです。

前述の通り、ペアプロはベテランエンジニアでも効果があるのですが、よりジュニアなケースの方がいきる感覚があります。質問をするには一定の知識や理解が必要なんですよね。いつでも聞いていいに対して聞けるのは2年目以降かなと。

オフィスで新人が気軽にメンターに声をかけたり、メンターが新人のはまり具合を横目で見るのをリモートワークで再現するならペアプロが近い

むしろOJTで出社前提でうまくいっていた部分はマネジメントが稚拙な部分を善意でカバーしているともとれて、善意がなくても回るような仕組みを作るのがマネージャーの仕事とすれば、ペアプロの仕組み化がよいのではないかと。

ドキュメントがない企業ほどリモート勤務が苦手という話もありますが、リモートで成立する手法は多くの場合、仮に出社時でも生産性を改善するやり方です。

所感

他にも例えば傾向としてジュニアの方が独身で、シニアエンジニアの方が結婚率上がるので、出社には話す相手がいる効果もあったかもしれないですね。

それには雑談時間を設けるなども大事になってくるのですが、長くなってきたのでまた次回