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


10

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

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

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

コードのレビューと修正が完了した後、時間が経ち、過去にレビューしたコードの一部が変更されました。再レビュープロセスを実行するにはどうすればよいですか?すべてのコードをもう一度確認する必要がありますか?または、変更された部分だけをチェックしますか?そして、もしそうなら、コードの二重レビューを避けるために、変更された部分をどのように追跡するのですか?


回答:


14

短い答え

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

番号。

レビュープロセスに関するフィードバックを提供し、指示に従って修正を行わせる必要がありますか?

はい。指示ではなく、あなたの提案によると。指示は信頼できすぎます。

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

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

ロングアンサー

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

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

プロセスは、大体以下のとおりです。

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

コードレビューはデリケートな領域ですので、言葉遣いの選択には非常に注意してください。誰にも言わない

言葉遣いの選択が悪い

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

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

言葉遣いのより良い選択

私はあなたのコードを見て、助けが必要です。私が送ったアイテムをレビューして、私の質問のいくつかを明確にすることができるかどうか見てください。

これにより、著者は次のことを考えるようになります。

  1. 彼らが守備モードにならないように助けが必要です。
  2. 彼らはレビュアーであり、私ではないようです。技術的に言えば、私は彼らに別の見方をしていくつかのことを変えるように頼んでいるので、彼らはある種のレビュアーのようなものです。

これらの単純な単語の選択は、私を非常に助けました。

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

多くの場合、ジュニア開発者を励まし、レビューに参加させるために、レビュー用の何かを送信します。私はそれを以下のように言うかもしれません:

私が理解できないので、いくつかのコードをレビューしてください。

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

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

とにかく、ジュニアとレビューに戻ります。彼らがそれを理解し、私に返事を送るとき、あなたは彼らの顔の表情を見るべきです。「OK、変更を加えさせてください。問題がなければ、問題を解決してください。」

彼らは、私の作品を見て、「はい、あなたの変更は良いです。私は問題を解決しました」と言う力を持っていることをすごいと感じています。

コードを自分で修正することはありませんが、理由は次のとおりです。

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

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

レビューを続ければ、遅かれ早かれ、チームの各開発者の知識レベルについて本当に良いアイデアを持つことになります。これを知ることは本当に便利であり、あなたはそれを利用してそれを解き放つ必要があります。方法は次のとおりです。一部のコードを確認し、改善すべき明らかな領域を確認し、別の開発者もそれらをキャッチする可能性があることを知っている場合は、代わりにそれらを確認するようにします。「ねえ、改善できる分野がいくつかあります。詳細を確認して、著者にコメントを送っていただけますか?」これは、他の2人の開発者が互いに協力し合っているため、非常に効果的です。

いくつかの作業をレビューしていて、チーム全体が利益を得ることができることに気付いたら、仮想シナリオを作成し、会議で問題を説明します。シナリオを説明することから始めて、すべての人に問題を見つけられるか、問題を見つけて参加できるかどうかを尋ねます。みんなに質問してもらいましょう。最後に、より良いアプローチを提示します。他の誰かがより良いアプローチを持っている場合、私は彼らに感謝し、チームの前で彼らのアプローチがより良いことを認めます。これは、私が「私の道や高速道路」タイプの人格ではないことを示しています。さらに、私は決して誰かの作品を開いて会議で問題を指摘し始めることは決してありません。

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

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

私は数年前にレビューを行い、開発マネージャーとQAマネージャーを担当する人と仕事をしていましたが、両方のマネージャーはビジネスの経験があり、開発経験がほとんどありませんでした。彼は彼らを感動させるためにこれをしました。誰もそれを気に入りませんでした。

彼が他にしたことは、プログラミングスタイルを選ぶことであり、彼のスタイルが最高だと確信していました(「私のカンフーはあなたの猿のスタイルよりもはるかに優れています...」)。それは私にとって別の教訓でした。問題を解決する方法は常に複数あります。

番号付きの質問のいくつかに答えてください

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

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

2-レビュープロセスに関するフィードバックを提供し、指示に従って修正を行わせる必要がありますか?

はい、わかりやすいが注意が必要な文章と口調を使用してみてください。できる限り明確にしてください。コードの問題点、改善方法を明記してください。単に変更するように依頼しないでください。しかし、理由を提供します。

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

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

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

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

最終的な考え

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


これは、変数名のような小さなものに対してのみ機能します。ただし、アーキテクチャが間違っている場合、役立つツールはありません。すべてを破棄して書き換えるだけです。
t3chb0t

@ t3chb0tなぜ小さなことですか?ことでmaking sense architecturally、私はデータアクセス層のコードは、データアクセス層内にあることを確認することを意味し、UIの検証は必ず懸念は他の領域に出血していない作る、つまりUIなどです。アーキテクチャの維持に役立つツールがあります。実際、VSは現在、これをすぐに使用できます。それも使用します。
-CodingYoshi

ツールに関して、私が使用する完全に有効なツールは、何をする必要があるかを追跡するためにおそらくすでに使用しているチケット/作業追跡ソフトウェアの形式であると思います。たとえば、Githubを使用している場合、変更がすべて問題に関連付けられている場合、そのディスカッションスレッドでレビューが行われます。JiraとTracはこのようなツールです。これにより、作業に関連するすべての情報が一元化され、チケットが閉じられる前にはっきりと見えるようになります。
キャット

@Katここでは、チケットツールが適切なツールであるかどうかはわかりません。コードレビューツールは、変更点と相違点の違いを示し、問題はチケットシステムの問題とは異なります。意味が異なります。しかし、私は間違っている可能性があります。
-CodingYoshi

3

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

コードレビューはあなたの時間の価値がありますか?というタイトルのブログ投稿を書きました 私のチームが使用するプロセスを要約します。テイクアウトは、あなたの質問に関連するものです。

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

レビュー、修正、チェック、修正のサイクルについては、開発者の成熟度と発見した問題の重要性に応じて選択する必要があります。チームがコードレビューを毎日のプロセスで行うと、クラスの名前を変更するなどの些細な変更が簡単に適用され、再確認する必要はおそらくないでしょう。チームがまだコードレビューで販売されていない場合、または人々が本当に経験の浅い場合は、関係なくそのようなことを確認することをお勧めします。一方、レビューで、ジュニア開発者が指摘した後でも完全に理解できない複雑な並行性の問題を発見した場合は、修正を確認し、実際に修正されたことを確認する前に変更を承認しないでください。

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


1

2番目のオプションに投票します。ジュニアは、自分で変更を行うときに、より良い「学習曲線」を持っている場合があります。

また、コードをレビューするのは1人だけではありません。
チームの経験豊富なメンバーの一部にもコードを見 てもらい、レビュアーが調査結果(会議のに行われた!)を著者に提示する定期的なレビュー会議をスケジュールします。これにより、ジュニアチームエクスペリエンスチームの両方のモチベーションが上がります。


4
素晴らしい点。また、ジュニアはOPのコードと互いのコードも「レビュー」する必要があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.