我在项目中的第一次提交导致夜间构建被破坏,当我们临近发布时,人们遍布我。我想发送一封道歉的电子邮件,听起来应该很真诚,同时暗示这是我的第一次提交,不再赘述。
作为非英语母语者,我很难提出正确的单词。有人可以帮忙吗?
我在项目中的第一次提交导致夜间构建被破坏,当我们临近发布时,人们遍布我。我想发送一封道歉的电子邮件,听起来应该很真诚,同时暗示这是我的第一次提交,不再赘述。
作为非英语母语者,我很难提出正确的单词。有人可以帮忙吗?
Answers:
不要道歉!
另外,我敢打赌,您的团队无法通过“ Joel测试”,并且无法一步一步完成构建。
如果是这样,那将是您不应该道歉的另一件事。确实,这是团队的反模式。
贝果。甜甜圈。等等,在我过去工作过的一家公司中,通常通过第二天进场道歉的食品来解决代码损坏或以其他方式导致同事受到干扰的问题。
一天,我们有一个人炸毁了一个生产数据库,这引起了整个团队的恐慌和深夜。第二天,他烤汉堡吃午餐。
我喜欢同事的道歉。美味,道歉。
drop database
……这两个小词的力量。那是几年前的事,但我记得很好;)
为您提供两个引号:
不会犯错误的人通常不会做任何事。-威廉·康纳·马吉(William Connor Magee)
任何不犯错误的人都不会努力去做。
我同意Jim G.的观点,不要道歉,但要从中吸取教训,不要再犯同样的错误……请将其保留为DRY;)
"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"
。
不要道歉,请尽快修复它。没关系,每个人至少破坏一次构建,在我的上一家公司中,这是一种启动仪式。当团队成员破坏构建时,我们会在他进来前的早晨在他的办公桌上放一个橡皮鸭,这让他知道他破坏了构建并将他修复。
我们将其称为“持续集成Duckie”,当您拥有它的那一天,人们会嘲笑您,但是这一切都很有趣,没有一个人会那么生气。
我们采取了类似破损的构建方式,并将其转变为团队建设活动。
“对不起这是我的错!” 当我破坏构建时,我通常会道歉。它发生了。但是,正如其他人所说的那样,这是一个改进系统的机会,这样一个人就无法轻易地破坏其他所有人的构建。
在这种情况下,我不会进行正式的道歉,但是如果您实际上认为更正式的道歉是适当的,那么您的道歉应该做以下事情:
也就是说,“对不起[表达遗憾],由于不小心[保存面孔]破坏了版本[陈述问题],给您带来了不便[承担责任]。甜甜圈明天就在我身上。[做出修改]“
每个部分都必须以适当的道歉来表示;如果您未指出问题,则不清楚。如果您不表示遗憾,承担责任并做出修改,那么人们会觉得您很不真诚。面子保护的部分是道歉中最被忽略的部分;面子保护的意思是让受伤的一方想起您是一个有价值的同事,有时会犯错,而不是一个白痴(或破坏分子!)。
最后,关于构建中断的一些想法:
我在C#/ Visual Basic编译器团队中工作。当然,今天的Visual Studio现在是一个庞大的项目,它拥有一个自己的团队来管理构建基础结构,以及一个拥有专用空调系统的宽敞房间。早在1990年代中期,我作为实习生开始时,Visual Basic的构建团队就是一个实习生-我-是一个壁橱里装满了机器。时代变了!
早在持续集成和强大的签入流程之前的那段时间里,团队会因破坏构建而受到各种处罚。在某些团队中,惩罚是如果您破坏了版本,则每天必须在工作中戴好笑的帽子,直到其他人破坏了版本。在某些团队中,如果您戴着那顶帽子,则负责验证每晚的构造是否正确。
最后一点听起来可能很残酷,但实际上起到了重要作用。由于几乎每个人一次或一次都破坏了构建,因此最终整个团队将学习验证夜间构建的过程。
不要道歉 应当责怪您的同事是因为您没有审查您的第一次提交,并且没有像持续集成服务器那样的快速反馈系统。
在我目前的工作中,我们有一条非正式的规定,即某人在下班前偷偷地做出承诺,结果破坏了产品结构,第二天必须为整个团队带来糖果/蛋糕/饮料。但是我们确实有持续的整合,这会警告我们白天的构建已损坏。该规则可能不适用于某人的首次提交。
无论如何,正式道歉的邮件可能有点太多。
基本规则-当您输入错误时,请输入:-| 您不必深表歉意。每个人都会犯错。专业人士承认这一点。那是团队合作。其他团队成员应该齐心协力,为您提供帮助。如果没有,请寻求帮助。之后必须说的是-我们可以从中学到什么?
他们说成功的婚姻基于三个小词-“我错了”。
如果某人没有偶尔犯错误,那么他们就没有工作,但是一个人不能从中汲取的错误就是两个错误。
如果您的公司已经有一种方法可以测试您的构建更改,则(A)您的更改要么失败(但无论如何您都对其进行了检查),要么(B)他们成功了(您需要构建一个新的测试用例)。
如果您的同事小心翼翼地测试他们的更改,并希望在夜间构建中找到休息,那么(C)您的过程很脆弱(您需要引入类似于极限编程中的测试)。
(D)您的更改有可能导致Bill的代码发生无法预料的更改,这些更改是在您之前进行的,或者在与您相同的版本上进行了更改。
根据您和您公司的测试方式,我会根据具体情况道歉:
我确定有一个我没有想到的(E)。
请注意,我说的是“减少再次发生的机会”,而不是“这样就不会再发生了”。它将再次发生。但是您可以改善流程以减少这种可能性。我认为,这是成功的程序员的标志之一。
我不明白为什么人们到处都是你。如果系统设置正确,他们应该能够弄明白您的更改/非常快地进行修复。
但是,如果您是那些破坏Windows构建的人之一,那么...我无能为力。(顺便说一下,很难做到这一点-在有人质疑MS建立哲学之前,但时不时地有人这样做-并且整个公司的质量检查会停止一天)。
是的-不要道歉。只需与您的经理聊天,就可以使他明白您是从自己的工作中学到的。
建造一直都在中断。错误和错误是生活中不可或缺的事实,这就是为什么您应该有一个使错误和错误的影响最小化的过程的原因。
如果构建中断很重要,则意味着您的过程已中断。
您应该进行连续构建,而不是夜间构建。
迟来的答复总比没有好...
正如许多其他人所说的那样,不要为破坏构建而道歉。只需承认是您,然后继续工作即可。无论您身在何处,都会发生这种事情,因此,没有人应该受到不良对待。人们在压力下反应不良,因此,如果您能够保持镇定并简单地继续工作,那么在重要的时候您会脱颖而出。我对人们何时遇到困难的建议是,只是避免防御,通过让人们知道您正要解决问题或当您发现自己陷入困境时迅速寻求建议来化解局势。
我个人认为破碎的建筑是一个机会。
因此,我要说的是,偶尔中断构建意味着人们正在做他们的工作。当然,您可能犯了一个错误,但是如果您将其用作学习的机会,那么您所做的只是简单地学习下一次做得更好。
告诉他们他们每次入住都需要CI版本。这样,您不必等到晚上知道它已经坏了。耶!告诉他们这是错误的过程,仅此而已。您刚刚发现了他们系统中的空白。
但是,是的,请确保将其修复。没有大碍。它不在生产中。只是一个一文不值的夜晚。
我公司的常规做法是:
我公司还有一种处理此类“事件”的好方法:
我不会道歉。
我会责怪CI主管允许我提交损坏的版本。
应该有一个CI流程来阻止开发人员提交损坏的代码。
如果本地构建失败,则不应允许它进入构建服务器。