あるプログラマーはSVNリポジトリーにいくつかの作業をコミットしてから帰宅しました。彼が去った後、ハドソンの自動ビルドは失敗しました。別のプログラマーはこれを見て、コードの変更を調べた後、問題が1つのライブラリーがないことを検出しました。彼はこのライブラリをSVNに追加し、次のビルドが正常に完了しました。
2番目のプログラマーは正しいことをしましたか、それとも最初のプログラマーが問題を解決するまで待つべきでしたか?
あるプログラマーはSVNリポジトリーにいくつかの作業をコミットしてから帰宅しました。彼が去った後、ハドソンの自動ビルドは失敗しました。別のプログラマーはこれを見て、コードの変更を調べた後、問題が1つのライブラリーがないことを検出しました。彼はこのライブラリをSVNに追加し、次のビルドが正常に完了しました。
2番目のプログラマーは正しいことをしましたか、それとも最初のプログラマーが問題を解決するまで待つべきでしたか?
回答:
チームが通常どのように機能するかにある程度依存しますが、私はそれで良かったと思います。ビルドを機能させ続けると、他のすべての人の時間を節約できます。
特定のバージョンのライブラリが必要な場合や他の複雑な問題が発生した場合に備えて、2番目のプログラマが最初に自分が行ったことを説明するメールをドロップすることは丁寧です。また、彼らがビルドを壊したことを指摘する少し微妙な方法です。
はい、大丈夫です。ただし、ビルドがコンパイルされるかどうかをテストする前に、元のプログラマが家に帰るのは専門的ではありません。
あなたの評判はあなたのコントロールで100%です。このようなものはあなたの評判を傷つけ、傷ついた評判を磨こうとすることは非常に困難です。
誰かがそれを修正する必要があり、最初のプログラマーは最初にビルドを壊していないことを確認せずに家に帰るべきではありませんでした。ただし、このような簡単に修正できる問題の場合、彼に電話をかけて自分で修正するのは極端です。
私はルーク・グラハムの説明的な電子メールの送信の提案に同意しますが、それは丁寧なもの以上のものであると言えます-それは基本的なコミュニケーションです。
明らかなものを修正してもいいと思います-つまり、修正しようとしているコードを持っている人が同じ-または実質的に同じ-修正することを100%確信しているなら。修正がより複雑な場合は、通常、修正しようとしているコードの担当者と話すのが丁寧です-意図を誤解したか、破損の理由が思ったものではないか、または別の修正を意図している可能性がありますしかし、何らかの理由でまだコミットできませんでした(人生は起こります、あなたは知っています:)。
通常、ルールは通常、次のとおりです。ビルドを中断します-ビルドを修正しますが、特に修正が明らかである場合や責任者に連絡できない場合は例外があります。
もちろん、シリアルビルドブレーカーの場合、特に「チェックイン、帰宅、数日間ビルドが壊れる」パターンの場合、責任者はCIシステムとテストが存在する理由とその方法について話し合う必要があります。チェックインする前にチェックしてください:)
物事が起こります。新しいコードファイル(ソースまたはコンパイル済み)をSubversionに追加できないことは、おそらく開発者のコンピューターで動作すると仮定した場合、ビルドが破損する最も一般的な原因です。CI環境での私の最後の仕事で、最も年上の人でさえ忘れることがありました。
他の人がビルドを修正して、チームをハミングさせ続けることができたなら、それでいいと思います。家に帰ったプログラマーは、少なくとも何が起こったのかを示すフレンドリーな電子メールを必要とし、コミットする前に新しいコードが追加されることを彼に思い出させる必要があると思います。頻繁に発生する場合は、発生を減らす(および気分を明るくする)ために、「恥の踊り」によって罰せられる軽微な犯罪とすることができます。
一部の環境では、これは非常に失礼であり、正当な理由があります。他の環境では、それが期待され、正当な理由があります。
さらに他の環境では、非常に失礼であるか、非常に悪い理由で予想されます。
それは、破損したビルドがどれほど重要か、検証済みの正しいビルドがどれほど重要かによって大きく異なります。そして、ある程度、修正が適切な修正であり、唯一の修正が必要であることがどれだけ明白かによって異なります。