初めまして。2018年新卒の佐土原です。
10月で僕たち2018年新卒も入社半年となります。長かったような短かったような複雑な心境です…。
ちょうどいい節目にブログのお話がきたのでこの半年間を振り返ってみました。本日のブログではその中でも特に貴重な経験ができたと感じている、ペアプロ・モブプロについて書こうと思います。
ペアプロ・モブプロとは
僕の所属しているチームでは、春先から積極的にペアプロやモブプロを取り入れています。配属が決定した4月の半ばからは僕もそこに参加しながら業務を行なっていました。
ペアプロ・モブプロはそれぞれペアプログラミング、モブプログラミングの略称で、ペアでは2人1組、モブでは3〜5人1組でひとつのコードを記述していきます。いずれの方法でもドライバー(実際にコードを記述する人)を1人決め、それ以外の人は随時意見やアドバイスを投げかけ話し合いながらコーディングを行います。
複数人でひとつのコードを書く、と聞くと効率が悪そうに思えますが、ペアプロ・モブプロには以下のようなメリットがあると言われています。
メリット
- 一人で悩む時間が解消される
- 属人化している知見を共有できる
- コードレビューの時間を設けずにすむ
- チームメンバーのわからないことがわかる
確かにひとつのプログラム作成にかかる工数は増えますが、コードレビューや情報共有にかかる時間は削減できチーム全体のレベルも底上げしやすいという恩恵もあるようです。
また僕の所属するチームでは前述のペアプロ・モブプロの恩恵を最大限受けるために、以下のようなルールを設けて実施していました。
ルール
- 15〜30分程度を1タームとする
- タイマーで時間を計る
- 1タームごとにドライバーを交代する
- そのタームで何をするのか事前にゴールを決める
- ドライバーはいま何を考えているか随時口に出す
- わからないことがあればわからないと言う
- その他思ったことはその場で発言する
なにやらハイレベルそうな感じですが、そんな現場で入社半月の新人が感じたことを書いてみようと思います。
入社当時のレベル感
入社当時の僕のエンジニアとしてのレベル感です。
プログラム経験 ... C, Pythonでコードを書いた経験あり。大学の研究で必要となる統計処理系のプログラムがメイン。RubyやJavaScriptなどは触ったことがない。
Webサービスの知識 ... ほぼ皆無。サーバー側、フロント側どちらの知識もない状態。
やる気 ... あり。ここだけが取り柄。
ほぼ丸腰です。よろしくお願いします。
実際にやってみて
4月半ばから7月半ばまでの約3ヶ月間、いろいろな形のペアやモブを組ませていただきました。その感想です。
圧倒的インプット量
とにかくインプット量が多いです。新人がペアプロやモブプロから学べることは、
- 言語仕様
- フレームワーク仕様
- コードを書く上での慣習
- アーキテクチャの考え方
- HTTPプロトコル
- サーバーの知識
- サービスの仕様・知識
- ...etc
など上げればキリがないほどです。
先輩方と一緒に同じ作業をするので、実際に先輩方がどのようなことを考えながらコードを書いているのかをかなり網羅的に把握できるように思います。
情報過多になりやすい
一方で上手に時間を使わなければ情報過多になってしまう環境でもありました。
当時は現状把握や場の会話についていくことに必死で深く考えられていませんでしたが、いま思うと整理とアウトプットにあまり時間を割けていなかったように思います。
整理とアウトプットの時間が取れない結果、僕は以下のような悪循環にハマってしまいました。
- インプットによりたくさんの情報を入手する
- 入手した情報を整理する時間が取れない
- 情報と情報の繋がりを把握できず浅い理解に留まってしまう
- ドライバーでもアウトプットができず新たなインプットが増える
- 以下繰り返し...
自分がドライバーの時も、「自分の頭で考えアウトプットする時間」より「コーディングで考えるべきことを教わるインプットの時間」が多くなっていました。
一度立ち止まって、
- 知っている単語/知らない単語
- 自分が理解できていること/理解できていないこと
- 今の自分にできること/できないこと
- 新規の情報と既存の情報の関係性
などについてゆっくり考え整理することも重要だと感じました。
とにかく焦る
タイマーとプロジェクトは常に進み続けるため、置いていかれまいとひたすらに焦っていました。結果として上記のような悪循環にハマっていきます。
また焦る原因のひとつとして、周囲の先輩方の時間を奪っている感覚が強かったこともあります。素人同然の新人がペアプロ・モブプロに参加する以上、どうしても作業を止めて基礎知識を教わる時間の方が長くなってしまいます。「新人をペアプロ・モブプロに参加させるか?」という議論はチーム内で必要かと思いますが、参加した以上多少は仕方のないことだと割り切った方が良いかもしれません。
「他人の時間を奪わない」というのも大切な感覚ではありますが、最近では下手に意地を張らずに「できないこと/わからないこと」は先に伝えてしまった方が結果的に自分も周りも時間が奪われないように感じています。
コミュニケーション量が増える
これはチームに入りたての新人にはかなりありがたい要素でした。
ペアプロやモブプロではとにかく思っていることをその場で口にすることを求められるため、必然的にメンバー間での会話が増えます。
ペアプロ・モブプロに参加させてもらえたおかげでとてもスムーズにチームに馴染めたように思います。
まとめ
【新人がペアプロ・モブプロに参加すると】
- 学びだらけでとても刺激になる
- どんなことを意識して作業すべきなのか間近で学べる
- インプットを整理する時間を設けないと情報過多になりやすい
- 下手な意地やプライドは邪魔
- チームに馴染みやすくなる
僕の経験からはこのようなことが言えそうです。当然といえば当然なのですが、知識量や技術レベルに差がありすぎると議論というより講義に近い側面が強くなりやすいので、レベルの近い人同士だとより質の高いペアプロやモブプロが体験できるかもしれません。
入社後もう半年ですが、まだ半年でもあります。少しでも早くエンジニアとして戦力化するためにも、今後も張り切って業務に取り組んでいこうと思います!