#はじめに
11月に、ユリシーズ株式会社に3人目のエンジニアとしてもう一人と入社しました。
3言語を使いこなす一人目のエンジニアに対し、素人同然のふたり。
そこで、「まず一言語を…」と、iOS (Swift)担当とAPI (Golang) /Web (React.js) 担当に分かれて作業していました。
〜〜〜〜〜〜〜〜
時は流れて入社から5ヶ月。
一人目のエンジニア氏がPMにステップアップしようかというそのとき、ハッと気づきました。
相手の書いたコードが読めないからレビューができない…!!
つまり、
相手がいなくなったらコードが保守できない……!!!
これはマズい…!という訳で、我々11月入社二人は立ち上がりました。
ペアプロで暗黙知を共有するのだ!!
という状態から早1ヶ月が経ちましたので、ペアプロしている時に大事にしていることをご紹介します。
##TODOリストをディスプレイする
どんなに小さなissueでも、細分化してこの順番でやる、というのがあると思います。
最初の方は雰囲気で実装側がごにょごにょ言いながら進めていると、見ている側から「今何してんの…???」という遠慮がちなツッコミが入ることがままありました。
- 今ここまで終わっている
- 残りの課題はこれ
- 今からはこれをやっていく
この三つを自分の実装ターン開始前に明示して相手に共有することで、お互い同じ目標を持ってディスプレイと向き合うことができるのでとてもオススメです。
好きな音楽をかける
音楽は全てを癒してくれます。
言いすぎたかもしれません。しかし、我々ふたりは一人で実装しているときも曲を聴きながら仕事をしていたため、音楽があると非常に捗りました。
午後の眠たい時にはアップテンポな曲を流してみるとか、ハワイアンな音楽を流して豊かな気分になってみるとか、
音楽で気持ちを保ったまま仕事ができることはとても重要です。
それだけです。No Music, No Life.
##CubeTimerを買う (休憩を多めにとる)
ペアプロを開始する前にペアプロの心得を読んで、一人30分と決めていたものの、
普段はお昼以外は意識して休憩をとっていなかったので、気づいたら一人が1時間くらいコーディングしてしまっていたこともありました。
ペアプロしたことない方は是非知っておいてほしいんですが、
ペアプロってめっちゃ疲れます。
普段は自分のペースで進められるものを、相手がいるので実装側も見ている側もひくにひけない
、みたいな状況に簡単に陥ってしまいます。
しかも疲れると、イライラしてしまうという協働作業実施中にあらざる事態に…!
Webタイマー
を導入したのですが、今度はタイマーを開始するのを忘れる、時間がすぎたのに気づかない、などの問題点が発生しました。
そこで我々が購入したのがこちらのCubeTimer。
とてもかわいいですね。物理的なものがソフトに勝った瞬間です。
25分実装→5分休憩、というのも一動作で実現できますし、常に目に入ることで忘れにくくなりました!
ちょっと疲れたな…という時のために休憩10分にも対応してます!素晴らしい!!
また、タイマーに付箋を貼り付けてひとつのissueに何ターンかかったか、を記録することで近似的に開発のベロシティを計測することもできます!!
##役割にこだわらない
一般的にペアプロは、ドライバ
とナビゲータ
に別れてやっていくようですが、我々はその役割にこだわりません。
はじめは、暗黙知の共有ということで、自分が不慣れな言語を実装しつつ、相手が口出すスタイルでしたが、
今は上記のTODOリストに従って行くスタイルなので、しゃべりたい方がしゃべって合意がとれたらコーディングして行く
という感じです。
TODOリストがあるので、お互いで違うことを考えることはほとんどありません。
見ている側は暇なのでは…と思うかもしれませんが、相手が書いているコードに集中していないと、「置換忘れてるやん!」とか「今の魔法 (ショートカット) 何!?」とかツッコミそこねてしまうので結構忙しいです。
##しゃべり続ける
一定時間しゃべらないと、不思議なことに人って話し出しづらくなります。(なりませんか?)
なので、「そだねー」とか「おけー」とかだけでもいいのでしゃべり続けておくと、ここぞというときにツッコミそこねることがなくなります。
#終わりに
1ヶ月終えて、続けていきたいと思っているところを書いてみました。
これからペアプロを始める方、ペアプロやってみたけどイマイチだったな、と思っている方に参考になれば嬉しいです!
最後になりましたが、他の人とともペアプロしてみたいので、よろしくお願いします!!