ナイトリービルドが壊れたときに謝る方法[終了]


181

私のプロジェクトで最初にコミットした結果、ナイトリービルドが壊れてしまい、リリースが近づいているので人々は私を取り囲んでいます。私は誠実に聞こえると同時に、これが私の最初のコミットであり、これがこれ以上繰り返されないことをほのめかす謝罪メールを送信したいと思います。

英語が母国語ではないので、正しい単語を見つけるのに苦労しています。誰か助けてくれますか?


99
ビルドが決して壊れないなら、私は壊れたビルドプロセスを疑い始めるだろう;)
ラザロ

6
ビルドが壊れていることをどのように知りましたか?

65
どうでしょうか:「ナイトビルドを壊してすみません。私の給与を罰として撤回したい場合、会社を雇用法廷に連れて行きません」。いや、冗談です-謝らないで、この種のことはいつも起こります。「全面的に」いる人は、システムを前の状態に適切に復元する方法を知らないf.kingのサイコです。
ジャス

14
最初の10回のコミットでビルドを中断しました!それを心配しないいけない
誰も

135
私はちょうど私が破るナイトリービルドがあればいいのに...
マックス

回答:


306

謝らないで

  • ブルームーンで一度ビルドを壊すことは大したことではなく、決してショーストップになるべきではありません。
  • 継続的な自動ビルドを構成しないことは、マネージャーの責任です。

また、あなたのチームは「ジョエルテスト」に失敗し、1ステップでビルドを作成することはできません。

もしそうなら、これはあなたが謝罪すべきではないもう一つのことでしょう。実際、それはチームのアンチパターンです。


31
+1合意!謝らないで あなたが間違ったことを学ぶ。少なくとも間もなく、二度としないでください。人々が「あなたの上にいる」ときは礼儀正しくしてください。彼らが言うことから学びます(たとえそれが誰が刺すだけで誰が大丈夫であっても)。
ピーターK.

12
まあ、あなたはまだ謝罪することができます...しかし、私は人々があなたの至る所にいることに少し驚いています。あなたがチームで新しい場合、それはあなたが間違いを犯したことはそれほど驚きではないはずです。少なくとも、あなたが何かをしたことを示しています:)
フィリップ

40
+1。ナイトリービルドを行う目的は、できるだけ早く、リリースに出かける前に問題をキャッチすることです。95%の開発者は、キャリアの間に視認性の高いミスを犯しました。他の5%は嘘をついています。
Blrfl

26
これは「剣に落ちる」レベルの謝罪を必要としないことに同意しますが、「おっと、私の悪い」レベルの謝罪を必要とすると思います。すべての「ごめんなさい」がb辱的である必要はありません。
マシュースカウテン

5
私はと間違って何もない、全くこの前提に同意しない、単純な「ごめんなさい」謝罪が、私は私が台無しにし、私のミスから学ぶために最善を尽くします実現します。自分で修正する最善の方法は二度としないことだと思いますが、気にするなら、公然と見せて他人に知らせたくないかもしれません。それと謝罪に何の問題もありません。
-Trufa

182

ベーグル。ドーナツ。過去に働いていたある会社で、壊れたコードをチェックインするか、そうでなければ同僚の混乱を引き起こすことは、一般に翌日謝罪食品を持ち込むことによって解決されます。

ある日、ある男が実稼働データベースを吹き飛ばし、チーム全体に大規模なパニックと深夜をもたらしました。翌日、彼は昼食のためにハンバーガーを焼きました。

同僚の謝罪が大好きです。おいしい、おいしいおaび。


83
+1「同僚の謝罪が大好きです。おいしい、おいしい謝罪」。
ジャス

32
毎晩の開発ビルドを壊すことは一つのことですが、本番データベースを吹き飛ばすことはまったく別のレベルです。私がこれをやったことがあるなら、ハンバーガーのグリルが私の罰の最悪だったことを願っています。
maple_shaft

20
あなたはほとんど罪悪感を味わうことができます。
マイクスピード

40
「プロダクションデータベースを吹き飛ばす」とは、データベースに何が起こったのかについて、あらゆる種類の陽気なイメージを頭の中に入れます。それらのほとんどは、サーバールームから大きな爆発を聞くすべての人に関係しています。「ああ、データベースはクリティカルボリュームに達している!」「クイック!制御棒を下げてください!」「遅すぎる、データ、彼女は運命だ!」BOOM
カーソンマイヤーズ

7
drop database...ああ、これら2つの小さな言葉の力。それは何年も前でしたが、私はそれをよく覚えています;)
リー

80

あなたのための2つの引用符:

間違いを犯さない人は通常何もしません。--ウィリアム・コナー・マギー

間違いを犯さない人は誰も十分に努力していません。

私はジムGに同意します謝罪せずに、そこから学び、同じ間違いを二度としないでください。


9
壊れたビルドが前にビルドが壊れたについて、これまでのうめき声ている人ならば、彼らはうめき声すべきではない「と彼は罪なしで最初の石を投げている人ましょう」:または、より一般的な引用がある
リチャード・

2番目のような!!
スフェンディ

1
私がこれまで指導したすべての卒業生/後輩に自分自身を引用し"I expect you to make lots of mistakes. Own up to them, accept them, and learn from them. If you never make mistakes, you'll never really learn anything"ます。
-S.ロビンズ

「DRY」原理の素晴らしい使用... :)
J.アラン

53

謝るのではなく、できるだけ早く修正してください。でも、大丈夫です、誰もが少なくとも一度はビルドを壊します。私の最後の会社では、それは開始儀式のようなものでした。チームのメンバーがビルドを壊したとき、彼が来る前の朝に彼の机の上にゴム製のダッキーを置きます。

私たちはそれを継続的統合ダッキーと呼び、人々があなたをからかう日のためにそれを持っていたが、それはすべて楽しかったです、それのどれも意気揚々とされるべきではありませんでした。

壊れたビルドのようなものを取り上げて、チームビルディングの演習に変えました。


2
1:だけではなく、彼らが気に何を-彼らはすべての必要があります気に。あなたは何も間違ったことをしていないので、可能性のある境界を少し曲げすぎただけです;)。あなたもおそらくそれを修正するのに最適な人物です。誰もがこれを時々繰り返します。誰もが行ってはいけない何かをアップロードします。誰もが一度はUPDATEステートメントからWHERE句を削除します。それはあなたがどう反応するかが重要です。私たちがいる場所では、すべての開発者はクローズアップする傾向があり、誰かが尋ねた場合、誰が個々に過失であったかについて話すことを拒否し、それは修正されます。
トムモーガン

それは間違いを処理するための本当に素晴らしい方法のようです。
-Trufa

3
継続的インテグレーションDuckie、アハハハ
AttackingHobo

43

「ごめんなさい!私の悪い!」ビルドを壊したときに私が通常謝る方法です。それは起こります。しかし、他の人が言ったように、これはシステムを改善する機会であり、ある人が他の人のビルドを簡単に破ることができないようにします。

これらの状況では正式な謝罪はしませんが、実際により正式な謝罪が適切であると感じた場合、謝罪は次のことを行う必要があります。

  • 明白な後悔。
  • 問題を述べてください。
  • 責任を取ります。
  • 補正を行います。
  • 面目を保ちます。

つまり、「[SAVE FACE]が誤ってビルドを壊して[SAVE FACE]して[TAKE RESPONSONIBILITY]をご迷惑をおかけして申し訳ございません[EXPRESS REGRET]。

適切な謝罪には各部分が必要です。問題を述べなければ、それは不明瞭です。後悔を表明せず、責任を負い、償いをしなければ、人々はあなたが不誠実だと感じます。顔を保存する部分は謝罪の最も見過ごされている部分です。顔を保存する部分は、負傷した当事者に、あなたは時として間違いを犯す価値のある同僚であり、バカ(または妨害者ではない)であることを思い出させます。

最後に、ビルドの中断に関するいくつかの考え:

私はC#/ Visual Basicコンパイラチームで働いています。もちろん、今日のVisual Studioは非常に大規模なプロジェクトであり、ビルドインフラストラクチャを管理するだけのチームと、専用の空調システムを備えた巨大な部屋があります。1990年代半ばにインターンとして始めたとき、Visual Basicビルドチームは1つのインターンであり、私であり、クローゼットでいっぱいのクローゼットでした。時が変わった!

継続的な統合と強力なチェックインプロセスの前の時代には、チームはビルドを破ることに対してさまざまなペナルティを課せられていました。一部のチームでは、ビルドを壊した場合、誰かがビルドを壊すまで職場で毎日面白い帽子を着用しなければならないというペナルティがありました。一部のチームでは、その帽子をかぶっていた場合、ナイトリービルドが正しいことを確認する責任がありました。

その最後のビットは残酷かもしれませんが、実際には貴重な目的を果たしました。ほとんどすべての人が一時的にビルドを中断したため、最終的にチーム全体が夜間ビルドを検証するプロセスを学習します。


15

謝らないで 最初のコミットをレビューせず、継続的インテグレーションサーバーのようなビルドのための迅速なフィードバックシステムを持っていないことを非難するのは同僚です。

私の現在の仕事では、仕事を辞める直前にこっそりとコミットし、ビルドを壊すことが判明した人は、翌日、チーム全体にキャンディー/ケーキ/ドリンクを持ち込む必要があるという非公式のルールがあります。しかし、日中に壊れたビルドを警告する継続的な統合があります。そして、ルールはおそらく誰かの最初のコミットには適用されないでしょう。

とにかく、謝罪の正式なメールはおそらく少し多すぎる。


素晴らしい点-ピアレビューはこれを捕らえるべきでした。マスター/ HEAD /デフォルトに適用される前にピアレビューの変更を行うので、そうですか?
フランクシェラー

11

基本的なルール-あなたが間違っている場合、それを認める:-| 謝罪する必要はありません。誰でも間違いはある。プロは認めています。それがチームワークです。他のチームメンバーは、あなたを支援するために協力し合うべきです。そうでない場合は、助けを求めてください。後に言わなければならないことはほとんどです-それから何を学ぶことができますか?

彼らは、成功した結婚は3つの小さな言葉に基づいていると言います-「私は間違っていました」。

誰かが偶発的な間違いをしない場合、彼らは働いていませんが、人が学ばない間違いは2つの間違いです。


これは素晴らしい回答であり、最高の票を獲得した「謝罪しない」ものよりもはるかに良いと思います。ビルドに違反したことを皆に謝罪することができますが、彼らはあなたに少しの恵みを示す必要もあります。彼らはまた、「心配しないで、私たち全員が前にそれを壊したのだから、結局のところ、それがそこにあるのだ」と言っているべきです。あなたが再びそれを壊さないようにする限り、彼らはそれでクールでなければなりません。皆を無視して同じ間違いをするなら、それは別の話です。
ロックラン


5

あなたの会社がすでにビルドの変更をテストする方法を持っている場合、(A)変更は失敗しました(しかし、とにかくチェックしました)または(B)成功しました(そして新しいテストケースをビルドする必要があります)。

同僚が変更内容を慎重にテストし、ナイトリービルドの中断を見つけると予想される場合、(C)プロセスが脆弱になります(エクストリームプログラミングで見られるようなテストを導入する必要があります)。

D

あなたとあなたの会社がどのようにテストするかに応じて、私はケースバイケースで謝罪します:

  • (A)ビルドテストに失敗しましたが、変更をチェックインしました。申し訳ありませんが、プロセスを変更しているため、二度と行いません。
  • (B)ビルドテストに合格し、JUnitテストXYZtest.javaを追加して、再発生の可能性を減らしました。
  • (C)ビルドテストプロセスがないため、変更のために作成しています。ビルドプロセスを改善する方法をご紹介します。
  • (D)Billと協力して、JUnitテストXYZtest.javaを作成し、再発生の可能性を減らします。

私が考えていない(E)があると確信しています。

「再発しないように」ではなく、「再発の可能性を減らすため」と言っていることに注意してください。再び起こります。ただし、プロセスを改善してその可能性を減らすことができます。それは、勝者のプログラマーのマークの1つだと思います。


2

謝らないで あなたは人間であり、間違いを犯します。誰もが時々ビルドを壊すでしょう、キーはただそれを素早く修正することです。

あなたの周りを飛び回る人々については...まあ、彼らがバグを書いたことがあるかどうか私は興味があります。


2

これにアプローチする方法は、あなたのグループの雰囲気によって異なります。それが非難の文化である場合、私は謝罪とあなたがそれをどうするかについて非常に慎重になるでしょう。協力的で前向きな雰囲気なら、「台無しになった、ごめんなさい。今後これを避けるにはどうすればいいの?」という言葉に沿ったものです。おそらく良い考えです。

いずれにせよ、このような間抜けには、a)それがどのように起こったのかを見つけ、b)それが再び起こる可能性を最小限に抑えるための何らかの事後分析を伴うべきです。

私はあなたの構造に精通していません(私は非常に異なる環境で働いています)が、最終的には、現実は時折、人々が間違いを犯し、物事が壊れるということです。経験から学び、先に進みます。


2

私の環境では、ビルドを壊した場合、あなたは良い性質のうねりと気の利いた彗星を得るでしょう。どの英語圏の国に住んでいるかはわかりませんが、英語を母国語としない人としては、コメントに下線を引く性質が得られない可能性があります。

シニア開発者として反対側から来た私は、あるコードレビューが、コードが悪かったからではなく、プロジェクトの構造に影響を与えたために「吸い込まれた」とコメントしたことがあります。構造的な問題を解決する必要があるのは、私自身のコメントです。後になって、私の不正確なフリッパーのスピーチのために彼に非常に怒っていたにもかかわらず、Jr Devを発見しました。


2

あの 壊れたビルドトークンを取得します。狂犬病を次の幸運な受取人に渡します。常に起こります。品質は重要ですが、間違いは避けられません。それらを修正します。進め。次の貧しい人々を恥じなさい。


1
私はこれを見てきました。もう1つは、他の誰かが壊すまで、ナイトリービルドを「面倒に見る」ことです。これは、それを修正することを意味するものではありませんが、なぜ、誰がそれを修正するべきかを考えます。
スティーブンダーリントン

1

一般的なルールとして、私は言うだろう:

チェックインによってコンパイラエラーが発生する場合は、チェックインする前に「最新版を取得する」ことで自分自身を捕まえたでしょう。単純な「おっと、私の悪い」が順番に並んでいます。(特に、翌朝10時に散歩し、誰がどのチェンジセットにロールバックするかを決定している場合)

チェックインが一般的な予期しない動作を引き起こした場合、ランタイムエラーが発生したとしても、それがあなたに対して行われるべきではないと思います。それは領土が付属しています。誰もが「最新版を入手」するのが一般的にコンパイラに合格している限り、人々は本当にデータベースを削除したり、プロジェクトのサーバーコピーを削除したり、すべての変更セットを削除したりするような例外を除いて、本当に当てはまるべきではありません人々が悪意を持たなければならないことは愚かです)。


1

TEAMは失敗しました。

あなたの会社は、最初のビルドを行う開発者に対してより多くのコードレビューが必要です。

チームがレビューを行い、あなたが物事を正しく行っている途中でいくつかの保証を提供することなく、これを続けることをチームが許可する方法がわかりません。

リリース時間に近いことは言い訳ではありませんが、新しいコードを再確認するより良い理由です。

リリースを簡単に取り消せない場合、このグループにはさらに大きな問題があります。


0

人々があなたの周りにいる理由がわかりません。システムがうまくセットアップされていれば、彼らはあなたの変更をいじったり、非常に迅速に修正できるはずです。

繰り返しますが、もしあなたがWindowsビルドを壊した人の一人なら、それから...仕方がありません。(誰もがMSビルドの哲学に疑問を呈する前に、それをやるのは信じられないほど難しいが、ときどき誰かがそれを行う-そして、会社全体のQAは1日停止する)。

そして、ええ-謝らないでください。上司とチャットをして、あなたがあなたがしたことから学んだことを彼に理解させてください。


0

ビルドは常に壊れます。バグと間違いは人生の事実であり、そのため、バグと間違いの影響を最小限に抑えるプロセスが必要です。

ビルドの破損がそれほど重大な場合は、プロセスが破損していることを意味します。

毎晩のビルドではなく、継続的なビルドを行う必要があります。


+1「ビルドの破損がそれほど重大な場合、プロセスが破損していることを意味します」一方、破損したプロセスに対処する必要があります。これは、プロセスが改善されるまでナイトリービルドの破損を防ぐためにできることを行うことを意味します。
カレブ

0

決して答えるよりも遅い答えの方が良い...

他の多くの人が言っているように、ビルドを壊したことを謝罪しないでください。それがあなたであることを認めて、仕事を続けてください。このようなことは、あなたがそこにいたかどうかに関係なく起こります。そして、だれもそれのために下手に扱われるに値する人はいません。人々はプレッシャーの下でひどく反応するので、落ち着いて仕事を続けることができれば、それが重要なときに目立ちます。人々があなたに苦労するときの私のアドバイスは、単に防御的であることを避け、あなたが問題に直面していることを人々に知らせることで状況を緩和することです。

個人的に、私は壊れたビルドを機会と考えています。

  • ビルドが壊れて、それがあなたのせいであると証明できる場合、継続的な統合とビルドプロセスが仕事をしていることを示す可能性があります。プロセスを検証するため、これは良いことです。ビルドが壊れない場合、何か問題があったのではないかと心配します。
  • かなり一般的な方法でビルドを壊し、この方法で頻繁に壊す場合、CIプロセスに何かが欠けている可能性があります。これは、一般的な障害シナリオをより適切に管理できるようにプロセスを改善する機会です。
  • 任務を超えて、あいまいな問題で実際にビルドを台無しにした場合、チームの他のメンバーに警告を発するのに十分に重要であるかもしれない何か新しいことを学ぶ機会があります。

だから私が言っていることは、ビルドを時々壊すことは、人々が仕事をしていることを意味するということです。間違いを犯したかもしれませんが、学習の機会としてそれを使用する場合は、次回より良いことをすることを学習するだけで仕事をしています。


-1

チェックインごとにCIビルドが必要であることを伝えます。そうすれば、夜間に壊れるのを知るまで待つ必要はありません。うん!!! 間違っているのはプロセスであり、他に何もないことを伝えます。システムのギャップを特定しました

しかし、はい、それを修正してください。大したことではありません。本番ではありません。ただ価値のない毎晩。


-2

私の会社での通常のプラクティスは次のとおりです。

  • 「私じゃない!」と叫ぶ (それ以外の場合、通常はCVS / SVN証明)
  • 「my-userlogin ist Schuld!」と言うTシャツを着ています。(はい、開発者自身のそのようなシャツの50%)
  • ローカルsendboxで機能し、すべてのテストが正常に合格したと主張する

私の会社には、このような「インシデント」を処理する優れた方法もあります。


-2
  • 謝りません。

  • 壊れたビルドのコミットを許可したCIの責任者を非難します。

  • 開発者が壊れたコードをコミットするのを防ぐために、CIプロセスを配置する必要があります。

  • ローカルビルドが失敗した場合、ビルドサーバーに入ることは許可されません。


1)すべてのプロジェクトが継続的な統合を行うように設定されているわけではありません。持っているのは良いことであり、OPのような状況を助けることができますが、それは与えられたものからはほど遠いです。2)問題を防ぐことができるツールがあったとしても、それが実際に大したことではない場合でも、謝罪することは決して痛いことはありません。3)それが本当にあなたのせいであるかどうかに関係なく、あなたが引き起こした問題を他人に非難するのはお粗末な考えです。
カレブ

ここには2つの問題があります。1-ローカルマシンのコードが壊れています。2-ビルドサーバー上の破損したコード。すべての開発者が間違いを犯すため、最初の問題は非常に小さなものです。変更は元に戻すことができ、システムまたは部門に影響はありません。2番目の問題は、システムと部門にはるかに大きな悪影響を与える可能性があります。
CodeART

-2

何らかの謝罪ができると思いますが、「これが二度と起こらないようにするつもりです」と言わないでください。するから。そして、もしそれがあなたを噛むでしょう。


-2

オープンソースプロジェクトに取り組んでいる場合、

「申し訳ありませんが、ビルドを壊しました。眠すぎたかもしれません!」

githubのコメントとして追加します。

多くのオープンソース開発者が深夜にコードを書くためです。

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