新人の頃、なぜコードレビューが怖かったのか
新人エンジニアの頃、
開発の中で一番緊張するイベントがありました。
コードレビュー
Pull Request を出した後、
レビュー依頼のメッセージを送る瞬間です。
レビューお願いします。
この一言を送ったあと、
私は毎回こう思っていました。
絶対どこか指摘される…
そしてしばらくするとレビューコメントが付きます。
この処理Nullの可能性あります
このロジック少し分かりづらいです
この処理Serviceに移した方が良いと思います
当時の私は正直こう感じていました。
怒られている気がする
でも数年実務を続けて、
コードレビューを「する側」になってみて思ったのは
新人の頃にコードレビューが怖かったのは
かなり自然なことだった
ということでした。
今回は
新人の頃、なぜコードレビューが怖かったのか
を振り返って整理してみます。
理由① 「コードレビュー=評価」だと思っていた
新人の頃の私は
コードレビュー = 能力評価
だと思っていました。
例えばこういうコメント。
この処理バグになる可能性があります
これを見たときの私の頭の中はこうです。
自分はダメなエンジニアなのかもしれない
今思うとかなり極端ですが
当時は本気でそう思っていました。
でもレビューする側になって気づいたのは
レビューしている人は
そこまで深く考えていない
ということです。
例えばレビューを書く側の思考は
実際にはこんな感じです。
あ、このNullチェック入れておいた方が安全だな
コメントしとこう
それだけです。
能力評価
というより
コードを良くする作業
に近いです。
新人の頃は
レビュー = 自分の評価
と思い込んでいたので
怖く感じていました。
理由② 「正しいコード」が分からなかった
新人の頃はとにかく不安でした。
例えばこういうコードを書いたとします。
if(user != null){
if(user.getEmail() != null){
sendMail(user.getEmail());
}
}
このとき頭の中ではこう考えています。
これでいいのかな…
もっと良い書き方あるのかな…
レビューが来ると
Optional使うとスッキリします
と言われます。
Optionalって何…
という状態です。
つまり
自分のコードが正しいのか分からない
という状態でした。
この状態でレビューを出すと
どこを指摘されるのか分からない
ので怖く感じます。
逆に経験を積むと
この書き方はレビューされそうだな
という予測ができるようになります。
そうなるとレビューは
そこまで怖くなくなります。
理由③ 他人にコードを見られる経験がなかった
これも大きかったと思います。
学生の頃のコードは
自分しか見ない
ことが多いです。
しかし実務では
自分のコード
↓
チーム全員が見る
という状況になります。
例えばこういうコード。
int a = 0;
int b = 10;
新人の頃は
変数名これでいいのかな…
と思いながら書いていました。
レビューで
変数名が分かりづらいです
と言われると
やっぱりダメだった…
と落ち込みます。
でも今思うと
コードは他人が読むもの
なので
レビューされるのは当たり前でした。
むしろレビューがない方が危険です。
理由④ 設計を理解していなかった
新人の頃に一番困ったレビューコメントがこれです。
Serviceに移した方が良いと思います
当時の私はこう思っていました。
なぜ?
コードは動いています。
例えばこういうコード。
@PostMapping("/users")
public void register(UserDto dto){
User user = new User(dto.getName(), dto.getEmail());
userRepository.save(user);
}
これに対してレビューが来ます。
ビジネスロジックはServiceに移してください
新人の頃は
どこが問題なのか
正直よく分かりませんでした。
しかし後から分かるのですが
これは
レイヤー設計
の話です。
Controller
↓
Service
↓
Repository
の役割があるため
Controllerにロジックを書かない
というルールがあります。
新人の頃は
設計の意図
を知らなかったので
レビューコメントの意味が理解できませんでした。
理由⑤ 「自分のコード」という意識が強すぎた
新人の頃は
頑張って書いたコード
にかなり愛着がありました。
例えば
1時間悩んで書いた処理
があります。
それに対してレビューが来ます。
この処理はこう書いた方がシンプルです
例えば
if(list.size() > 0)
を
if(!list.isEmpty())
にしましょうと言われる。
新人の頃はこう思っていました。
せっかく書いたのに…
でも実務では
コードは個人のものではない
です。
チームの資産
です。
この考え方に変わってから
レビューがかなり楽になりました。
個人的な考察
振り返って思うのは
コードレビューは新人にとって心理的ハードルが高い
ということです。
理由はシンプルで
自分の作ったものを評価される
ように感じるからです。
しかし実際には
コードをより良くする作業
です。
むしろレビューは
他のエンジニアの思考を学べる場所
でもあります。
例えばレビューコメントには
読みやすい書き方
設計の意図
実務経験
などが詰まっています。
新人の頃は
怖いイベント
でしたが
今ではむしろ
一番学べるタイミング
だと思っています。
まとめ
新人の頃、コードレビューが怖かった理由は
レビューを能力評価だと思っていた
正しいコードが分からなかった
他人にコードを見られる経験が少なかった
設計を理解していなかった
自分のコードという意識が強かった
からでした。
今振り返ると
怖く感じるのは自然
だったと思います。
もし新人の頃の自分に
一言アドバイスするならこう言います。
コードレビューは怒られる場所ではない!
学ぶ場所だから安心してほしい!