PRが肥大化する本当の理由

以前、習慣的に巨大なプルリクエスト(PR)を投げてしまう会社で働いていました。一つのPRが数週間も放置されることもありました。それをレビューするには、サブシステム全体を頭に叩き込む必要がありました。バグは積み重なり、締め切りは遅れ、最終的には誰も安全に変更できなくなったため、システムのかなりの部分を再構築せざるを得なくなりました。

エンジニアが悪かったわけではありません。彼らは優秀で、懸命に働いていました。PRが大きくなったのは、退屈な理由によるものでした。

誰も、仕事を細分化する方法を教えていなかったのです。

私たちはよく、巨大なPRを規律の問題として扱います。「もっと小さなPRに分けて」と言います。1,500行の変更と150行の変更の差が、単なる意志の強さの違いであるかのように振る舞います。

それは意志の問題ではありません。大きな仕事を小さく独立した塊に分けることは「スキル」です。ほとんどの人はそれを教わることがありません。「決済機能を追加する」というチケットがあったとき、それは一つの単一のタスクのように感じられます。どこで一つのPRが終わり、どこから次が始まるのかを見極めることこそが、難しい部分なのです。

私もかつては大きなPRを出していました。「完了」とは、問題を一度にすべて解決してレビューに回すことだと思っていました。小さければ小さいほど良いと学ぶのに、何年もかかりました。

小さなPRは、私にとってすべてを変えてくれました:

私はシステムをレゴブロックのように捉えるようになりました。それらはカチッとはめ込める小さなパーツです。ブロックの存在が見えてくると、仕事を切り分けることが自然に感じられるようになります。

現在のチームは小さなPRを出しています。その結果は明らかです:

仕事を細分化することは、コーチングすべきスキルです。ルールだけで巨大なPRを解決することはできません。ブロックの捉え方を教えることで、解決できるのです。

AIの登場により、このスキルはさらに不可欠なものとなっています。

かつて、2,000行のコードを書くには多大な労力が必要でした。その摩擦(ハードル)があったからこそ、PRは小さく保たれていました。AIはその摩擦を取り除いてしまいました。プロンプト一つで、膨大な変更を生成できてしまいます。

労力が消えたわけではありません。それはレビュアーへと移動しただけです。作成者は何の負担も負いませんが、レビュアーがその代償をすべて支払うことになるのです。

もしコードのサイズが著者の作業量を表さなくなったのであれば、サイズからリスクを判断することはほとんどできません。どの部分に最も細心の注意を払うべきかを、自ら見極める必要があります。

チームに「レンガ」を見ることを教えましょう。それはエンジニアリングにおいて、最もレバレッジの効く習慣です。

あなたのチームでは、どのPRに深いレビューが必要で、どのPRを素早く承認できるかをどのように判断していますか?

出典: https://dev.to/pixel-wraith/the-real-reason-your-prs-get-big-5cm3

オプションの学習コミュニティ: https://t.me/GyaanSetuAi