コードレビューは良いことだと上司を説得するためのヒント[非公開]


20

たとえば、プロジェクトでほとんど一緒に働いていない開発者が数人いる架空の会社で働いていて、上司がコードレビューに時間と費用の価値があるとは考えていなかったとします。

コードレビューの利点を描写するこのシナリオで提示できるさまざまな議論は何ですか?さらに、ここでのコードレビューに対する潜在的な議論は何であり、これらにどのように対抗できますか?

回答:


25

このような基本的なことを正当化する必要がある場合、より大きな問題があります。

あなたはエキスパートであり、あなたのチームはあなたがどのプラクティスを使用するかを決めるべきです。たぶん、あなたは上司にその非常に重要な原則を納得させるべきでしょう。

あなたの上司が決めることになっているWHATさらに重要なことやるとするなぜそれをやって。あなたはの世話をする必要がありますどのようにビルドそれ

(それはもちろん、あなたの会社で何を、なぜ行うのかを提案できないという意味ではありません)。優秀な上司は、従業員に企業戦略への参加を奨励する必要があります)

ただし、ここにピアコードレビューを表示する方法を示します。

プログラミングは非常に集中的な知的作業であるため、一人がすべてが完璧であることを保証することはできません。そのため、コードレビューでは次のことを確認します。

  • アプリが出荷される前に脆弱性またはバグが発見された
  • 開発者間の絶え間ない相互教育(ほぼ無料)が達成される
  • アプリのメンテナンスを容易にするためのコード尊重標準
  • コードが要件に一致

誰もが直接利益を享受しています:

  • 自分の知識を増やし、自分のチームメイトに自分自身を渡すことができる開発者
  • バグが少なく、メンテナンス費用が少ない顧客/ユーザー
  • より幸せな顧客/ユーザーを持ち、トレーニングに費やす費用が少ない上司

1
それは平均65%の欠陥をキャッチすることに言及できますが、それだけでなく、単体テストでは一般的に検出されない多くの欠陥もキャッチします。
Spudd86

共有する研究へのリンクはありますか、今後使用できますか?

2
「証拠のビット」と呼ばれるグレッグウィルソンのプレゼンテーションのスライド21から、彼は「厳密な検査により、最初のテストを実行する前にエラーの60〜90%を除去できる」と主張しています。:)
スコットホイットロック

7

コードレビューにより、複数の開発者が同じコードに精通することができます。これは良いことです。原作者が辞職するか、さらに悪いことに決めた場合、彼に何か悪いことが起こります。コードレビューが定期的に行われると、他の人がすぐに引き継ぐことができます。

ピアは、コードレビュー中に潜在的なバグやパフォーマンスの問題を発見できる可能性があります。これにより、QAと開発の労力が削減されます。これにより、コードレビューに伴う追加コストを補うことができます。

コードレビューは知識の共有を促進します。仲間は、より良い方法や、物事を行う別の方法を知ることができます。私自身もコードレビューを通じて仲間から多くを学びました。

コードレビューは、チームが従うコーディングガイドラインの強化に役立ちます。チームに1つもなければ、それを修正する必要があります。コードは、一度書くだけで何度も読むことを意図しています。コーディングのガイドラインは、読み取り可能なコードへの一歩です。コードは、ピアが読めるようになっています。読みやすさを確保するためにコードレビューを行うよりも良い方法はありますか?


4

ここにはたくさんの素晴らしい答えがあります。私が追加するもの:

コードを他の誰かに説明しなければならないとき、多くの場合、説明の過程で開発者は突然バグがあることに気付くかもしれません。レビュー担当者がバグを理解するのに十分なことを理解する前に、開発者が彼のトラックで死んで停止し、「間違っているのを待ってください」と言うことが何度も起こります。

自分のコードが他の誰かによって検査されることを知っていると、コーディング標準を使用する(メンテナンスを容易にする)インセンティブが得られます。コードを他の人に見せたときに恥ずかしい思いをしたくないので、そもそもより良い仕事をします。恥ずかしい要素のため、「これがなぜ機能するのかはわかりませんが、それを台無しにしないでください」とコメントされるコードは少なくなります。コードベースで。

より広範な監督やトレーニングが必要な開発者は簡単に特定できます。まったく無能な人もいます。パフォーマンスの問題をより早く見つけて対処できるほど、チーム全体のパフォーマンスが向上し、アプリケーションの品質が向上します。トレーニングを必要とする新しい人を連れて、アプリケーションの最も難しい、最も重要な部分に彼を割り当てる前に、この情報を見つけることは良いことです。

他の場所で同じ間違いをするのを防ぐ誤解を修正するだけの場合もあります。たとえば、最近、いくつかのSQLで複雑なレポートを確認しましたが、新しい開発者の中には、データベース内の特定の情報をどこで見つけるかについて同じ誤解を抱いていることがわかりました(確かに、選択した場所は論理的であり、データベース設計の問題でしたまた、修正する必要があります)、すべてのレポートを正しく作成するために重要です。彼らが書いた最初のレポートで問題を見つけて修正することで、残りのレポートで同じエラーが発生するのを防ぎました。そして、(年齢ではなくここで働いている)年配の開発者が慣れていたので、説明する必要がないと思いました。

ジュニアは(たとえばエラートラップやエッジケースをよりよく理解する傾向がある)シニアが書いたより洗練されたコードから学ぶことができ、シニアはまだ経験していないジュニアが使用する新しいテクニックから学ぶことができます。

アプリケーションの異なるが関連する部分で作業する人々は、2つの異なる相互排他的な方向に進んでいることに気付くことがあります。簡単に修正できるようになりました。

現在動作するようにするためだけに時間とともに変化するハードコードされた値を盗み出すことはそれほど簡単ではありません。これにより、各会計年度の初めに変化するものなど、将来の多くのバグを防ぎます。

私は時々、何かをする方法にこだわって、他の人のものをレビューするコードからちょうど望んでいた新しいテクニックを学びました。

チームの他のメンバーの考え方に精通している場合(どのコードレビューがその理解に役立つか)、ジョーがその種のアプローチにどのようにアプローチするかを理解することから始めるため、後で問題をトラブルシューティングするのが簡単になります。問題。


2

他の人が言及した知識の共有と同様に、コードのレビュー中に発見されたバグの例を見つけ、修正にかかった時間を測定します。これには、問題の調査とパッチを当てたバージョンのリリース、バグを修正する実際の時間。

このコストはおそらく数日かかりますが、コードのレビューに費やして結果に基づいて行動する時間とは対照的です。

これにより、上司にコードレビューに費用をかけるだけの価値があることがわかります。


2

コードレビューの可能性:

  • 共有できるコードライブラリの開発につながる
  • 変数、定数、データベーステーブルに統一された命名規則を提供する
  • プロセスの合理化を支援
  • また、発見プロセスと要件収集のレビューにつながる可能性があります
  • アプリケーションのアドオンとして販売できるウィジェットの開発につながります。(実装するたびに支払いを受けてビルドする
  • 新製品につながる

短所

  • 時間がありません

それが本当なら、どうして同じ顧客のために2、3回物事をする時間がいつもあるように見えますが、最初にそれをするのに十分な時間がありません。


0

ドキュメントを参照する必要がある場合は、尊敬されている「コードの完成」を参照してください。その中で、この本は、ユニットテストとピアレビューで捕捉されたエラーの数を説明しています。驚くべきことです。ユニットテストでは、メモリが適切に機能する場合、すべてのバグの〜30%のみをキャッチし、正式なピアレビューでは〜70%をキャッチします。

その情報を取り、本で彼を見せ、彼の財政面に訴えましょう。バグを早期に発見するよりもはるかに時間がかかり、バグを許可するのにはるかに費用がかかります。


0

コードレビューを使用するチームと実行しないチームの2つのチームが並行して実行するデモ(1週間の「ミッキーマウス」型プロジェクト)を実行してみてください。

週の終わりに、各チームの仕事の質を評価すると、コードレビュー担当者がより良い結果になると確信しています。


各チームの4人= 8人= 2か月の給与。これには、多くの組織で非常に多くの巧妙な説得が必要です:)
マイケルデュラント14年


0

それを提示するときは、全体像に注目してください。

利点(より良いコード、より少ないバグ、より少ない書き換えなど)をリストし、推奨する手法の1つとしてコードレビューに言及します。

私はそれをソフトウェアの職人技の全体像の一部にしたいと思います

  • コードレビュー
  • テスト
  • 回顧
  • 知識共有
  • 教育
  • 書評
  • ランチタイム講義

これらの原則を促進する上で、多くの作業を自分で行う準備をしてください。
ほとんどの人は、説得が「1回の会議と完了」のようなものであるとは考えていません。
落ち着いて一貫してケースを構築してください。優れた技術によって修正されたバグに最も悩まされているときは、過度に感情的で合理的ではない可能性が高いため、ケースを作るのに最悪の場合がよくあります。これはやや反直感的なように思えるかもしれませんが、30年以上のプログラミングで学んだことです。明らかにymmv。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.