経験の浅いプログラマーのコードを修正するにはどうすればよいですか?


19

少しのバックグラウンド:私は10人の部門の2人のプログラマーのうちの1人です(残りはアーティストと管理職です)。私たち2人は、物事を順調に進めるために必要なすべてのコーディングを行い、出てくるプロジェクトを開発します。私は約4年前からプログラミングを行っていますが、これが彼の最初の「本当の」仕事です(彼の言うとおりです)。通常、私たちはいつでも異なるプロジェクトに取り組んでいます。

数か月前、私は後のプロジェクトで使用するクラスのセット(決して完璧ではない)を開発しました。そのプロジェクトの大部分は、GUIインターフェースを設計およびプログラムするために(請求のため)彼に委任されました。彼は新しいので、私は設計を少し手伝い、残りの部分で必要な場合は助けを求めるように言いました。彼は数週間前にインターフェースを完成させましたが、それは少し遅いですが、それが機能することを示すためにデモしました。

私が取り組んでいるプロジェクトの次の部分は始まっています。次のステップから始めるためにインターフェースを開いたところ、すぐに問題にぶつかりました(少し遅かったのは、控えめな表現、一般的なアクションのエラーなどでした)。いくつかの問題についてコードを調べ、エラーチェックのないタイプの仮定(Pythonにあります)、元のコードに追加されたGUIへの参照などを見つけるO(n^n)必要がO(n)あります。

今、私は間違いなく彼に何が間違っていたのか、どのようにそれを修正するのかを教えたいと思っていますが、彼はすでに次のプロジェクトに移っており、これは数週間前でした。「戻って正しいことを!」と言って怖いです。(もちろん助かります)厳しすぎるので、その間にやるべき他のプロジェクトがまだあります。私は今のところ自分でコードを修正し、将来的に物事をキャッチしようとする必要がありますか?


4
将来的には、コーディングガイドラインに同意する可能性はありますか?
ベニ

5
すぐに経営陣に駆け寄り、彼に言っていないのは良いことです。一部の企業は非難指向です。修正をチェックインするときに、それらをグループ化して、後でこの人に見てもらう方法を見つけます。一方、新卒者でさえ、O(n^n)他に方法がない場合を除いて、何もコーディングしないでください。もしそうなら、彼らはおそらくアルゴリズムのCを取得しているか、それを採用していないか、安っぽい先生を持っていたでしょう。一般的な問題を見つけるのに役立つ何らかのツールを活用するのは良いことです。おそらく次のタスクとして、この男はいくつかのパフォーマンステストを書くことができますか?
ジョブ

理由が文書化されていないO(n ^ n)は、単に間違っている、期間です。本当にやらなければならない場合は、コメントで理由を説明した方が良いでしょう。
ローレンペクテル

「ちょっと、O(n * n)はそれほど悪くない、多くのアプリケーションがそれを必要とする...」と書こうとしていましたが、それは乗算記号ではなくキラーであることに気付きました^!
最大

O(n)の定数が非常に大きく、nが小さい場合、O(n ^ n)はO(n)よりも高速になります。codinghorror.com/blog/2007/09/…また、n ^ nは極端です:D-
コーダー

回答:


33

ある種のコードレビューポリシーを制定することは、複数のレベルで有益であるように思えます。いくつかの即時の利点:

  • コードがコミットされる前にコードの品質に直接影響を与えることができるため、コードベースの品質を高く保つことができます
  • 別のセットの目がキャッチする可能性がある同様の間違いをしないようにします
  • コーディングガイドラインがない場合、レビューは自然にコーディングスタイルの一貫性をもたらします。
  • 知識共有。あなたが2人だけで、1人がバスにぶつかった場合...

さて、あなたが先に進んで彼のコードのクリーンアップを始めたら、このコードのレビューを求めるとき、それを指導演習として使用してください。あなたはあなたのものをレビューしてもらうでしょう、そして、彼は次回それをより良くする方法を学ぶかもしれません。


3
+1コードレビューは、これを行うのに最適な方法です。「ここでコードを改善した方法」ではなく、「何かを見逃さないようにするために行った変更を見てみてください」という行に沿って、もっと言い回すことをお勧めします。
スティーブジャクソン

1
1私は、コードレビューは、任意の「コーディングガイドライン黄金律」よりもはるかに優れフィット感だと思います。..いない多くのものではありません決して大丈夫。
最大

私はこのアイデアが本当に好きです、ありがとう。ここで、コードレビューを行うための良い方法について少し調査する必要があります。
TorelTwiddler

1
実際、mumak.net / stuff / your-code-sucks.htmlにいくつかの基本事項が記載された優れた面白い論文があります。それは主に建設的な方法でレビューを実施するための行動技術に関するものであり、これはレビューを成功させるために非常に重要です。
ニチンズ

@TorelTwiddler、コードレビューは学習のためであり、非難ではないことを覚えておいてください。彼がうまくやったことを指摘して、改善する方法を提案すると同時にそれらが良いことを知っています。
CaffGeek

5

コードを修正することは決してありません。そうしないと、ミスを犯した場合を除いて、あなたはそれらをキャッチして修正します。それがされるまでタスクは実行されません行わ。プロフェッショナルになり、直属の上司がコミットしたすべてを再確認したとき、本当に幸運になりました。より良い解決策があるか、愚かな間違いがあった場合、それは私のスキルが向上したことを意味しましたより硬い肌。

それをスライドさせることは悪い習慣を生み出し、今すぐ修正することで批判に対してよりうまく対処し、それが行われたと主張する前にトリプルチェックすることができます。


2

プロジェクトが「機能し」、妥当な時間内に完了したと推測できますか(ただし、重大で修正可能な設計上の問題はありますが)。もしそうなら、それは私が長年にわたって見てきた多くのプロジェクトよりもはるかに良い形です。

より多くのコミュニケーションがあなたのチームに役立つと思います-これは定期的なコードレビューで行うことができます。

「厳しすぎる」ことに敏感であることは良いことであり、コードレビューは、後輩がグリルされて精査される、士気を低下させるホットシートの経験である必要はないことを覚えておくと思います。また、上級開発者が優れた実践を実証し、「間違い」があった場合でも礼儀正しく友好的であることにより、全員がお互いに信頼を得る方法にもなります。

本当に良いものがどんなものかを見ると、人々はよく学びます。これは、すべての小さな欠陥を体系的に指摘するよりも優れています。ただし、O(n ^ n)は穏やかかつ建設的に指摘する必要があります。


0

あなたの知識を共有してください。

先輩から後輩へのいくつかの教えと引き換えに、私は彼に彼の新しいプロジェクトの助けを提供するでしょう。

両方のプロジェクトでプログラミングをペアリングしないのはなぜですか?

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