web-dev-qa-db-ja.com

コードレビュープロセス後にフィードバックを提供する方法

私は現在、私のチームに参加したばかりのジュニア開発者のコ​​ードのいくつかをレビューしています。このレビューの出力をどのように提供すればよいのでしょうか。

  1. 自分でコードを修正する必要がありますか?

  2. レビュープロセスについてフィードバックを提供し、私の指示に従って修正を行わせますか?もしそうなら、このフィードバックをどのように提供しますか、特定のテンプレートドキュメントに記入して送信しますか、それとも後で確認できるようにコードファイル内の問題をマークするのに役立つソフトウェアがありますか? (私はVisual Studioを使用しています)。

コードのレビューを完了して修正が完了した後、時間が経過し、過去にレビューしたコードの一部が変更された場合、再レビュープロセスを行うにはどうすればよいですか?すべてのコードをもう一度再確認する必要がありますか?または、変更されたパーツを確認するだけですか?また、変更された部分を追跡して、コードの二重レビューを回避するにはどうすればよいですか?

10
Sisyphus

短い答え

自分でコードを修正する必要がありますか?

番号。

レビュープロセスについてフィードバックを提供し、私の指示に従って修正を行わせますか?

はい。 提案ではなく、指示に従ってください。指示は権威的すぎるようです。

もしそうなら、このフィードバックをどのように提供しますか、特定のテンプレートドキュメントに記入して送信しますか、それとも後で確認できるようにコードファイル内の問題をマークするのに役立つソフトウェアがありますか? (私はVisual Studioを使用しています)。

ツールを使用してフィードバックを提供します。 Visual Studioを使用できます。

長い答え

以前はVisual Studioを使用していましたが、他の開発者に「仕事を送ってレビューできるように送ってくれませんか?」気に入らなかったし、うまくいかなかった。現在、チェックインを確認することでレビューを開始できるため、 レビューアシスタント を使用しています。レビューのために作品を送ってくれる別の開発者に頼る必要はありません。また、アイテムを欠陥としてマークしたり、作成者が確認するアイテムにマークを付けたりするのにも役立ちます。これは私たちのチームにとって有効です。レビューを開始すると、レビューボード上にそのまま残り、翻訳が失われることはありません。これはVisual Studioと統合されています。先ほど触れたように、Visual Studioにもネイティブのレビュープロセスがありますが、制限があり、プロセスは自然ではありません。したがって、私はレビューアシスタントを使用します。

このツールは、前後のプロセス、ディスカッションなどにも役立ちます。

プロセスは、多かれ少なかれ、次のとおりです。

私は何かをレビューし、それを著者(あなたの場合はジュニア開発者)に送ります。彼らは変更を加え、それを送り返します。私は変更を確認し、フィードバックを提供します。変更に問題がなければ、レビューを閉じます。それ以外の場合は、行き来します。時々、前後が多すぎる場合は、私は彼らの机に向かい、ホワイトボードを使用するだけです-これは本当にプロセスを促進します。

コードレビューはデリケートな領域なので、表現の選択には十分注意してください。誰にも言わない

言い回しの選択肢が少ない

コードを確認しましたが、変更が必要な項目がいくつかあります。

代わりに私はこれを言います:

表現のより良い選択

私はあなたのコードを見て、助けが必要です。送付したアイテムを確認して、私の質問のいくつかを明確にできるかどうか確認していただけませんか?

これは著者に考えさせます:

  1. 彼らが防御モードに入らないように私は助けが必要です。
  2. 彼らは私ではなくレビュアーのようです。技術的に言えば、私は彼らに別の見た目を与えて、いくつかを変えるように頼んでいるので、彼らは一種のレビュアーのようなものです。

これらの単純なWordの選択は、非常に役立ちました。

私はジュニア開発者を過小評価することはありません。私は何人かの上級開発者(10年以上の経験)と協力してきましたが、コードはジュニア生協の学生よりも悪かったです。だから彼らが年長か後輩であるからといってそれほど重要ではありません。彼らの仕事は、長年の経験よりも雄弁です。

ジュニア開発者を励ましてレビューへの参加を促すために、私は彼らにレビューのための何かを送ります。私はそれを以下のように言うかもしれません:

わかりませんので、コードを確認してください。

これはまた私に大いに役立ちます。これは、レビューを行うのは私だけではないことを明確に示しているだけでなく、レビューも行っており、プロセスの一部でもあるため、役立ちます。それは全体のアイデアが良い、クリーンなコードを生成し、必要に応じて助けを求めることであることを示しています。レビュープロセスは文化なので、本当に取り組む必要があります。

今や、一部の人々は、彼らが上記を行うと、あなたができないことをしただけで、ジュニア開発者が敬意を失うことを心配するかもしれません。しかし、それは真実とはかけ離れています。助けを求めることは謙虚さを示します。さらに、あなたが輝くことができる状況はたくさんあります。最後に、それがあなたの恐れである場合、あなたは自尊心の問題を抱えています。最後に、私は本当にそれを知らないかもしれません:これらの開発者の一部は、1か月前にそれらを研究したばかりなので、頭に新鮮なアルゴリズムを持っているということです。

とにかく、ジュニアとレビューに戻ります。彼らがそれを理解し、私に返信を送るとき、あなたは彼らの顔の様子を見るはずです。次に、「OK、変更させてください。問題がなければ、問題を閉じてください。」

彼らは私の仕事を見て、「はい、あなたの変更は良かったです。私は問題を閉じました」と言う力を持っていることは素晴らしいと感じています。

ただし、自分でコードを修正することはありません。

  1. 著者はそれから学ばないでしょう。
  2. それは私が言っているようなものです:「脇に置いて、それがどのように行われるかを見せましょう。私のコードはあなたのものより優れています。」
  3. なぜ私は?これは私にとってより多くの仕事です。

しかし、私は私の作者を助けるために私のコメントでアイデアとコードスニペットを提案します。時には私のレビューが著者に自分のコードを理解していないことを単に尋ねていることに注意してください。コードに問題はないかもしれません。変数名を変更したり、コメントを追加したりする必要があるかもしれません。そのため、その場合、何を変更すればよいかさえわかりません。彼らだけです。

レビューを続ければ、遅かれ早かれ、チームの各開発者の知識レベルを本当に理解することができるでしょう。これを知ることは本当に便利であり、あなたはそれを利用して解き放つ必要があります。方法は次のとおりです。コードをレビューして明らかな改善領域があり、別の開発者もそれを理解できる場合は、代わりにコードをレビューしてもらいます。 「ねえ、改善できる領域がいくつかあります。詳細を確認して、作者にコメントを送っていただけませんか?」他の2人の開発者が互いに作業しているので、これもうまく機能します。

いくつかの作業をレビューしていて、チーム全体が恩恵を受けることができることに気付いた場合は、架空のシナリオを作成し、会議で問題を説明します。まずはシナリオの説明から始めて、問題を見つけたり、問題を見たり、関与させたりできるかどうかを全員に尋ねます。みんなに質問してもらいましょう。次に、より良いアプローチを提示します。他の誰かがより良いアプローチを持っている場合、私は彼らに感謝し、チームの前で彼らのアプローチがより良いことを認めます。これは私が「私の道または高速道路」タイプの個性ではないことを示しています。さらに、私は決して誰かの仕事を開かず、会議で問題を指摘し始めます。著者は、私がどれほど素敵で無害であるかに関係なく、それを評価しません。

レビューをするとき、私はきれいなコードを探すだけでなく、コードが何をしているかを探します。ビジネス要件がの場合:従業員が10年以上会社に勤務している場合は、5%増加します。それ以外の場合、2.5%。私が最初にチェックするのは、それが実際にそれを行っているかどうかです。次に、クリーンで一貫性のあるパフォーマンスの高い方法でそれが行われているかどうかを確認します。

レビューを行う場合は、必ずフォローアップを行います。そうしないと、誰もレビューを真剣に受け止めません。

私は何年も前にレビューを行い、開発マネージャーとQAマネージャーにCCを送る誰かと一緒に働いていましたが、どちらのマネージャーもビジネスのバックグラウンドであるか、開発経験がほとんどありませんでした。彼はそれらを印象づけるためにこれをしました。誰もそれが好きではなかったし、そのとき私は自分がその間違いを犯すことはないと自分に言った。

彼が以前使用していたもう1つのことは、プログラミングスタイルを選択することであり、彼のスタイルが最高であると確信していました(「私のカンフーはサルスタイルよりもはるかに優れています...」)。それは私にとってもう1つの教訓でした。問題を解決する方法は常に1つ以上あります。

いくつかの番号の付いた質問への回答

1-自分でコードを修正する必要がありますか?

いいえ、上記の理由をご覧ください。

2-私は彼らにレビュープロセスについてフィードバックを与え、私の指示に従って修正を彼らに任せるべきですか?

はい。文章と口調は使いやすいが注意が必要な口調を使うようにしてください。できるだけ明確にしてください。コードの問題とその改善方法を説明します。単にそれを変更するよう依頼しないでください。しかし、理由を説明してください。

このフィードバックを提供するには、特定のテンプレートドキュメントに記入して送信しますか、それとも後で確認できるようにコードファイル内の問題をマークするのに役立つソフトウェアがありますか? (私はVisual Studioを使用しています)。

私が言ったように、私が使用するツールまたは別のツールを使用できます。電子メールやWord文書は紛失して追跡が困難になるため、使用しないでください。

コードのレビューを完了し、修正が完了した後、しばらくして過去にレビューしたコードの一部が変更された場合、再レビュープロセスを実行するにはどうすればよいですか?すべてのコードをもう一度再確認する必要がありますか?

主に私がすることは、デルタをチェックすることです(変更のみ)。ただし、何も壊れておらず、アーキテクチャーに従っていることを確認するには、全体像を念頭に置く必要があります。

最終的な考え

私は個人的には、「コードレビュー」という言葉は不適切な選択であり、それがどのように始まったのかわかりません。彼らははるかに優れた権威のない言葉を選んだかもしれない。

14
CodingYoshi

多くは、会社でのコードレビューの理解方法に依存します。コードレビューが非常に形式化されたプロセスであり、めったに行われないが大きな問題である企業があります。他では、コードレビューは実装される各タスクの必須の部分であり、形式主義がほとんどない、非常に平凡で迅速なものです。個人的には後者の方法を選択しますが、それを使用できるかどうかはあなたの決定かもしれませんし、そうでないかもしれません。

コードレビューは時間に見合う価値がありますか? というタイトルのブログ投稿を書いて、私のチームが使用したプロセスをまとめました。彼らがあなたの質問に関連しているように、持ち帰りは次のようになります:

  1. 開発者にコードを修正させます。これにより、彼らはあなたのコメントをよりよく理解することができ(または、彼らがコメントを完全に理解していないことを理解し、質問する)、タスクを実行することは、それについて読むだけではなく、より良い学習方法です。
  2. コードレビューのためのソフトウェアは行く方法です。オープンソースとプロプライエタリの両方で利用可能な多くのオプションがあります。そのほとんどはgitで動作します。私のチームはBitBucket(以前はStashと呼ばれていました)を使用しています。GitLabとGitHub、Gerrit(私は個人的にはファンではありません)、および他にもたくさんあります。これらのアプリのほとんどはWebベースであるため、どのIDE=を使用してもかまいませんが、多くのIDE用のプラグインもあるので、Visual Studio用のプラグインもいくつかあると思います。このようなソフトウェアを使用すると、コードをメインブランチにマージする前に(通常はプルリクエストを介して)コードを確認でき、変更された部分と各変更の前後にいくつかのコンテキスト行が表示されます。これにより、コードの確認がスムーズになり、面倒がなくなります。

Review-fix-check-the-fixサイクルについては、開発者の成熟度と発見した問題の重大さに応じて、どちらを選択するかを決める必要があります。チームがコードレビューを毎日行うと、クラスの名前の変更などの簡単な変更が適用されることが予想され、おそらくそれらを再確認する必要はありません。チームがまだコードレビューで販売されていない場合や、人々が本当に経験の浅い場合は、関係なくそのようなことを確認することをお勧めします。一方、レビューで、ジュニア開発者が指摘しても複雑ではない並行処理の問題が見つかった場合は、修正を確認し、実際に修正されたことを確認する前に変更を承認しないでください。

プルリクエストを使用する場合は、ソフトウェアを簡単に設定して、あらかじめ決められた数の開発者の承認が得られるまで変更をマージできないようにすることができます。通常、変更の個々のコミットでの変更を表示できます。これにより、最後のコメント以降に追加された変更のみを簡単に確認できます。

3

2番目のオプションに投票します。ジュニアは、自分で変更を行うとき、より良い「許容曲線」を持っているかもしれません。

また、コードをレビューするのは1人だけではありません。
チームの一部の経験豊富なメンバーもコードを確認して、定期的にスケジュールを立てますレビューミーティングここで、レビュアーが調査結果を発表します(彼らが行った会議!)著者に。これは、ジュニアの両方のモチベーションを高めますandエクスペリエンスチームメンバー。

1
Timothy Truckle