当社のチームは最近、各チェックインに対してコードレビューの実施を開始しました。
チームのリーダーとして、私はあまりにも多くの提案を提供し、開発者をいらいらさせ、チームの出力を減らし、コードを手放すというバランスを見つけようとしています。
有用なアプローチを示唆する、よく知られた情報源からの証拠、研究、またはガイダンスはありますか?
当社のチームは最近、各チェックインに対してコードレビューの実施を開始しました。
チームのリーダーとして、私はあまりにも多くの提案を提供し、開発者をいらいらさせ、チームの出力を減らし、コードを手放すというバランスを見つけようとしています。
有用なアプローチを示唆する、よく知られた情報源からの証拠、研究、またはガイダンスはありますか?
回答:
包括的な目標に留意してください:最終的には、動作するソフトウェアのみが重要です
ピアレビューとチェックインコードレビューには、品質を改善するという目標があります。しかし、やる気のある開発者ほど品質に劣るものはありません。チームリーダーとしての役割は、コードを自分で書いたものとして承認することではなく、チームワークを促進し、全体的な結果を保証することです。
レビューの明確な範囲を設定します
覚えておいてください:それはあなたのコードではなく、チームのコードです。そのため、間違った結果につながる可能性のあることに注意してください。
動作しないことが確実でない限り、開発者が要件を満たすために選択した方法に挑戦しないでください(ただし、テストに既に失敗しているはずですよね?)
問題の場所を示す指標がない限り、パフォーマンスの低下に挑戦しないでください。早すぎる最適化はすべての悪の根源です;-)
挑戦すべき設計またはソフトウェアの構造を見つけたら、それが前もって捕らえられなかった理由を自問してください!すでに書かれたコードは書き直すのに費用がかかります。これが発生した場合は、少なくともコードと同じくらい、ソフトウェア開発とチームワークのプラクティスを確認してください。
確立されたコーディング標準への準拠に対処する。レビュー担当者とレビュー担当者の両方について議論するのは、最も面倒なトピックです。全員があなたのチームで大文字のクラス名を使用することに同意し、ある人がクラスを持たない場合、それは好みの問題ですか?または、チームワークの有効性とリスクですか?
ところで、コーディング標準について議論する価値がないと感じた場合は、コーディング標準を標準から削除し、時間とエネルギーを無駄にしないでください。
リーダーシップの開発:レビューの人間的側面
チームリーダーとして、品質管理の形式を超えて、自分自身とチームを開発する機会をここで見つけることができます。
他の慣行を活用する
コードレビューで回避できることがいくつかあります。
開発者として、マインドセットは常にオープンで懐疑的なものでなければなりません。
開発者が私たちを驚かせるのはいつかわからないからです。また、ソフトウェアエンジニアにはソリューションを実装する正しい方法が1つもないことを忘れがちなので、自分のアイデアに懐疑的です。私たちのソリューションの背後にある理論的根拠は、私たちにとって意味があり、他の人にとっては意味がありません。コードの匂いの背後には素晴らしいアイデアがあります。たぶん、開発者はそれを適切に表現する方法を見つけられなかったのでしょう。
私たち(人間)はコミュニケーションがひどいため、誤った仮定をしないでください。レビューしているコードについてコード所有者に喜んで尋ねてください。彼/彼女が会社の標準の下でアイデアをコーディングすることに失敗した場合、主任開発者も彼/彼女を案内してくれます。
ここで主観的なアプローチ。客観的なアプローチであるIMOは、この質問で非常によく説明されています。
上記のリンクに加えて、達成すべき一連の目標(保守性、読みやすさ、移植性、高い凝集性、疎結合など)は必ずしも10の戒めではありません。あなた(チーム)は、これらの目標を、品質と生産性のバランスが仕事を快適にし、「開発者にとって居住可能」にするポイントに適応できる必要があります。
これらの目的に応じて品質の進捗を測定するための静的コード分析ツールの使用をお勧めします。SonarQubeなどのツールは、優先度に応じてカスタマイズできる品質ゲートと品質プロファイルを提供します。また、問題追跡ツールも提供します。開発者は、コードのにおい、バグ、疑わしい慣行などに関連する問題をターゲットにすることができます。
これらの種類のツールは良い出発点になる可能性がありますが、私が言ったように自分自身を懐疑的にしてください。Sonarのいくつかのルールはあなたにとって意味がないと思うかもしれませんので、それらを無視したり、品質プロファイルから削除したりしてください。
化粧品の変更のために開発者のコードを調整することは、開発者の意欲をかき立てますが、絶対的な状況では実行する必要があります。リードは、有用なコードレビューを提供することと、マイナーな欠点を手放すことを学ぶこととのバランスを見つけなければなりません。 https://blog.smartbear.com/sqc/for-the-new-team-lead-the-first-six-things-you-should-know/
留意すべき点:
重要なことは2つだけです。
他のすべては表面的なものであり、ゲートとして強制されるのではなく、ビールについて議論されるべきです。
このビューに従うと、フォーカスの狭い領域に制限されます。
要件は良好ですか?理想的には、タスクを開始する前に知っておく必要があります。つまり、パフォーマンス、セキュリティなどはすべてそこにあるべきです
テストは良いテストですか?失敗したエッジケースは、要件を十分にテストしているかなどです。最終的には、既存の要件をテストするが、失敗するテストを作成できますか。