😇

最高のペアプロを受けた話

2021/12/20に公開

この記事はスターフェスティバル Advent Calendar 2021の 20 日目です。


ここ数ヶ月、バックエンド開発に業務で関わるようになりました!
私はデザイナー出身で、エンジニア職としては弊社スターフェスティバルがファーストキャリアになります。そのため、入社してしばらくはフロントエンド系業務の方をメインで行っていました。

バックエンド開発に関われることになりましたが、実務経験ほぼゼロ。個人開発では、フレームワークの機能にかなり頼りつつの開発スタイルしか体験したことがありません。

そんな私が実務で開発できるようになった最高のペアプロ体験について紹介します。

ペアプロしてくれたのはこの人

アドベントカレンダー19日目のこの記事を書いたy_ahiruです。

ペアプロの役割はこうです。
ナビゲーター(設計、説明、ドライバーの説明に答える人): y_ahiru
ドライバー(実装する人): 私

ペアプロの流れ

ペアプロにも色々な方法が存在すると思いますが、こんな流れで進行しました。

まず何か1つの機能を手を動かしながら実装させてもらった

まず良かったポイントは、自分で書いて実装したこと。

何もかもわからない状態で、まず簡単な1機能を自分で書いて作ってみることで、その後の開発のモデルケースになるような体験をさせてくれたのがとてもよかったです。
わからないことが出てきたら、つど質問と回答を繰り返したのでここではかなり時間を使いました。

実際はすべてナビゲーターが指示してくれることを書いているだけです。
が、ここで人が書いているのをただ見ているだけだった場合、いざ実装!となった時、初めから「あれ、これってどうやるんだっけ..?」ということになっていた気がします。(もちろん質問は後からでもたくさん出てくるんですが..)

見て指示してもらいながら実際に書いて実装したということで、「次の機能は自分ひとりで実装するぞ!」とモチベーションが爆上がりしました。

準拠してほしい実装ルールを交えながら説明してもらった

MVC以外の実装方法の経験がないため、準拠して欲しいアーキテクチャ(今回はADRやDDD)について、このフローを通して説明してもらっていました。

MVCのような手続き型の実装しか知らなかったため、ここで初めて既存のコードがなんとなく読めるようになってきた気がします。

次に自分だけで開発を進めてみる

教わった実装方法を使って、新しい機能を自分だけで開発していきます。
もちろんいろいろなところで詰まるので、進めなくなったりある程度時間をかけて解決できなかったら、都度ペアプロをお願いしていました。

こんなことに詰まってよく相談していました。
開発に必要なことほぼ全部ですね!

  • 設計について
  • 配列の整形がうまくできない
  • テストの書き方がわからない
  • phpStanやphp-cs-fixerなどで出るエラーが解決できない
  • phpdocの書き方がわからないところがある

ペアプロを体験してよかったこと

開発が楽しくなった

自分でコードが書けるようになってくると開発が楽しい!という気持ちが高まって仕方なかったです。

それまではひたすら難しいと思っていたアーキテクチャのルールですが、コードを書くことで理解できてくると、そこまで複雑ではないところもたくさんあると気づきました。

コードが読めるようになってきたことが自身にもつながりました。

テストの大切さがわかってきた

テスト自体の大切さと、テストのしやすさがコードの品質維持にとても大事だということがわかってきました。

DBと疎結合になっているとコードがテストが書きにくく、書きにくいということはテストを書く機会がスケジュールの中で失われてしまうことが多いことを意味すると思いました。

ペアプロ成功の鍵だと思ったこと

ナビゲーターがきちんと時間を割いてくれた

自分の作業もあるなか、ペアプロ期間中(ある機能の開発期間中)は、かなり時間を割いてくれていました。

話しかけたタイミングで、「今は都合悪いので後で」ということも少なかったので、ペアプロを優先してくれていたと思います。スムーズに問題解決できましたし、この対応に頑張る気持ちも上がりまくるというものです。

拙い質問に対しても快く回答してくれた

ガンガン開発できる人にとっては、初学者の質問に「なんでそこで詰まるんだろう」とか思うことも少なくないと思います。
そう何度も思わせてしまうほど拙いドライバーの質問に対しても、色々と視点を変えて分かるまで説明してくれるという神対応。

また「わからないところがわからない」といった状態で詰まることもあったのですが、そういう時はなぜ進められないかを一緒に考えながら解決に向かう道筋を作ってくれたのでとてもありがたかったです。

30分詰まったら相談することを推奨してくれた

自分自身の心がけとして、長時間詰まって何も進まない場合は相談する、というのは多くの人が実践していることかもしれません。
詰まったらすぐ相談してくださいねー!ということを、ナビゲーター側が推奨してくれたことが大きかったです。

何か聞くとき、「忙しそうだな」とか「聞きまくって恥ずかしい..」とかつい最初に思いがちですが、このことで話しかける際の心理的障壁が少なくなり、何か詰まった時にすぐに相談できました。

大体の場合、一人でしばらく悩んでいたことが一瞬で解決することがほとんどでした..。

解決できなくて長時間悩み、多くの時間を失ったり、必要以上にストレスを溜めるといったことが少なく済みました。

その他役立ったこと:輪読会による読書

アドベントカレンダー3日目で紹介の輪読会に参加しています。

こちらに参加してDDDの知識を少しでも入れていたことで、実装の助けになりました。
輪読会、難しくて1人では絶対に読み切る自信がない本を読む強制力が生まれて非常に良いです。

終わりに

この経験によって実装のポイントが掴めてきたので、かなり成長につながったと実感しています。
ペアプロにも、ナビゲーターとドライバーの熟練度や、チームの体勢によって色々なやり方があると思うので、目的に応じて色々なやり方を試してみるのも良さそうですね!

Discussion