3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

開発未経験な私がコードレビューで時間超過しないためにしたこと

Posted at

はじめに

今でもよわよわ開発者な私ですが、現在のチームに配属された時はもちろんもっとよわよわでした。
今ならAIもありますが、数年前の当時はその片鱗もありませんでした。

今のチームでは、コードレビューをリーダーも含め全員参加でやっています。
なので、当時私がレビュイーになれば指摘事項満載で時間超過しますし、レビュワーになればほぼ聞いているだけでした。
この記事では、指摘事項満載なケースを減らせたので、それについて話します。

コードレビューの当時の状況

コードレビュー形式

先述の通り、リーダーも含めた全員参加でコードレビューを実施します。
1対多の状況になるわけです。
なので、私もレビューに参加することは多かったです。
メンバーは大体、

  • 開発リーダー
  • 技術力が高い開発者
  • 元開発の開発者
  • 開発未経験の私

な感じでイメージしてください。

技術力が高い開発者の立ち回り

リーダーが指摘点をいくつも持っているので、そこを起点に始まります。
それが一通り終わると、次に技術力が高い開発者が指摘を重ねていき、概ねそれで出尽くします。
リーダーがレビュイーになると、指摘点もほとんどなく、技術力が高い開発者がぽつぽつと確認して終わり、という感じです。

未経験開発者な私

それに対して私は、レビュイーであれば、先述の通り指摘事項満載で時間超過します。
また明日もう一度、と何度もありました。
レビュワーで参加すると大体言えることはありません。
ギリギリ思いついても、先に他の人が指摘するので、結局無言で終わります。

コードレビューの弱点

当たり前のような法則

しばらくして、2つの法則性を見出しました。
それは

  • 指摘する人は大体偏りがち
  • 何度も同じ指摘が複数のレビューで発生する

というものでした。

1つ目の、指摘する人が偏るのは、至極当たり前のことでしょう。
技術力が高い開発者は、早く、そして多く気付けます。
コードを読む速度も、理解力も、何もかもが早いからです。
私は、レビューの時間内にコードを読み切ることすらままなりません。
指摘数に傾斜が付くのは当然です。

2つ目は、同じ指摘が何度も発生することです。
私がギリギリ思いつく指摘は、過去の指摘事項を覚えているからです。
時々私が過去の指摘事項を最後の手番で発言するのは、技術力が高い開発者たちも時折忘れるからです。

これはつまり「コードレビューは属人的」だということです。

属人的コードレビューの問題点

「属人的」には様々な問題が付きまといます。

  • その人がいないと成り立たない
  • 人はいつかミスをする

この2点が大きいでしょう。

1つ目の、その人がいないと成り立たないとは、ここでは技術力が高い開発者を指します。
開発リーダーが休みだったら、レビューをリスケすればよいでしょう。
でも、休職したり異動したり、いなくなってしまうケースがあります。

2つ目の、人はいつかミスをするとは、私が過去の指摘事項を発言することです。
技術力が高い開発者であっても、見逃しはあります。
私が気付いたのは、私が優秀なのではなく、偶然です。

属人的コードレビューからの脱却

属人化脱却の指標:私が技術力が高い開発者と同じくらい指摘ができればよい

私がレビューできないのはどうしてでしょうか。
それは、コーディングの技量も、製品の知識も足りないからです。
足りない、つまり観点を持っていないから気付くこともできません。

では、私が勉強して、コーディングの技量を上げて、製品知識も身に着けてしまえばいいのでしょうか。
それはNOです。
例え私の技術力が高くなったとしても(なれていないが)、属人化を取り除けていません。
私にも、誰にも依存しない仕組みで解決する必要があります。

そもそも、私がレビューのタイミングで指摘をする必要性はないはずです。
もっと言えば、誰かがレビューで指摘する必要だってないはずです。

人はミスをするのだから、システマチックに対応すべきでしょう。

コードレビュー観点表の実装

そうして、私はコードレビュー観点表を作り上げました。
叩きの段階では、それまでのコーディングと製品知識に関する指摘を集約した一覧を作成し、それを技術力が高い開発者の方々に強化してもらいました。

開発中はその観点表を用いてセルフチェックを行い、レビュー時にも改めて全員でチェックします。

新しい指摘や、不具合の再発防止でチェック項目の追加などを施し、強化も続けました。
おかげ様で「レビュー時にチェックするには長すぎやしないか」という程度には使い倒され、強化され続けました。

観点表を作成して面白かったのは、明文化することで、感覚値を検討できたことです。
「if文かswitch文か、どこから分けるか」など、レビューの都度感覚値で決めていたことも定量的になり、そういった議論の時間が減るという効果もありました。

そうして、技術力が高い開発者の指摘を元に作った観点表を用いて、私が時間超過する回数は減ったのでした。

めでたしめでたし

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?