View on GitHub

google-eng-practices-ja

Google's Engineering Practices documentation 日本語訳

緊急事態

緊急の CL というものがときどきあります。緊急の CL は可能な限りすみやかにコードレビューの全プロセスを通過させる必要があります。

緊急事態とは何か?

緊急の CL は小さな変更になるでしょう。たとえば、ローンチ済みの主要機能をロールバックするのではなく継続するための変更、本番環境のユーザーに重大な影響を与えるバグの修正、切迫した法的問題の対応、深刻なセキュリティホールの修正等です。

緊急事態で私達が尽力するのはレビューの応答の速さだけでなくコードレビューのプロセス全体の速度です。この場合に限り、レビュアーはすみやかにレビューすることとコードの正確さ (緊急事態を本当に解決しているだろうか?) に何よりも集中してください。また、(当然かもしれませんが) このレビュー依頼が来たら他のレビューよりも最優先で取り組んでください。

しかしながら、緊急事態が解決したあとは緊急の CL をもう一度見て、全体的なレビューを再度行ってください。

緊急事態でないものは何か?

はっきりさせるために、緊急事態でないものを以下に挙げます。

ハードな納期とは何か?

ハードな納期とはそれを逃すと大きな損害が発生する納期のことです。たとえば以下のようなものです。

リリースが一週間遅れても大きな損害にはなりません。重要なカンファレンスを逃すと損害が大きくなるかもしれませんが、とはいえ頻繁に起こるケースではありません。

ほとんどの納期はソフトな納期であって、ハードな納期ではありません。ある機能が期日までに実装されてほしいという願望を述べているだけです。それは重要ではありますが、そのためにコードの健康状態を犠牲にすべきではありません。

リリースサイクルが数週間にわたる長い期間だったりすると、次のサイクルに入る前にコードレビューの品質を犠牲にしてまである機能を取り入れてしまいたいという誘惑があることがあります。けれども、このパターンが繰り返されると、プロジェクト技術的負債があるとき噴出することになります。開発者が CL をリリースサイクルの終盤に提出し、表面をなぞるだけのレビューで CL を「取り入れなければならない」といったことが習慣的に行われているなら、チームは開発プロセスを見直すべきです。大きな機能変更はリリースサイクルの初期に提出し、きちんとレビューするための時間を十分に確保できるようにしてください。