在去年出现了一些严重的质量问题之后,我的公司最近推出了代码评审。代码评审过程被迅速引入,没有指导方针或任何类型的检查表。
另一位开发人员和我选择在系统被合并到主干之前检查对系统所做的所有更改。
我们还被选为“技术领导”。这意味着我们对代码质量负责,但我们没有任何权力来实现流程中的更改、重新分配开发人员或阻止项目。
从技术上讲,我们可以拒绝合并,让它回到开发阶段。在现实中,这几乎总是随着我们的老板要求准时发货而结束。
我们的经理是MBA,他最关心的是为即将到来的项目制定时间表。当他尝试的时候,他几乎不知道我们的软件从业务的角度来做什么,甚至在没有开发人员解释的情况下,他也很难理解最基本的客户需求。
目前,开发是在SVN的开发分支机构进行的,当开发人员认为他已经准备好之后,他会将票务系统中的票重新分配给我们的经理。然后经理把它分配给我们。
代码评审导致了我们团队内部的一些紧张关系。尤其是一些年长的成员对这些变化提出质疑。“我们总是这样做”或者“为什么这个方法应该有一个合理的名字,我知道它是干什么的?”)。
在最初的几周后,我的同事开始听之任之,不给同事制造麻烦(她自己告诉我,在一位客户提交了一份bug报告后,她知道了这个bug,但担心开发人员会因为她指出这个错误而生气)。
另一方面,我现在以指出所提交代码的问题而出名。
我不认为我的标准太高。
我目前的清单是:
但我完全接受我给予反馈的方式的责任。我已经给出了一些可操作的要点,解释了为什么某些东西应该改变,有时甚至只是问为什么某些东西是以一种特定的方式实现的。当我觉得不好的时候,我会指出我会用另一种方式来发展它。
我所缺乏的是找到“好”的东西的能力。我读到一个人应该试着把坏消息当成好消息。
但我很难找到好东西。“嘿,这一次你真的做了你所做的每一件事”更多的是谦卑,而不是善意或帮助。
嘿,Joe,关于您在Library\ACME\ExtractOrderMail类中的更改,我有一些问题。我不明白你为什么把"TempFilesToDelete“标记为静态的?目前,对"GetMails“的第二个调用将引发异常,因为在删除它们之后,可以向其添加文件,但从不删除它们。我知道这个函数每次运行只调用一次,但在将来可能会发生变化。你能不能让它成为一个实例变量,然后我们就可以并行地拥有多个对象。..。(其他一些不起作用的要点)小问题:
发布于 2016-10-17 19:11:32
不要费心挑选好的东西,除非它是一个坚实的,简洁的例子,并与重点问题直接相关。
我不会给它涂上糖衣--从它的声音来看,你至少要和一个人打交道,他们对自己的能力缺乏信心,而且正在以一种不成熟的方式处理对他们工作的挑战。他们在工作上也可能很差--一个好的开发人员应该总是愿意自我反省,接受建设性的批评,并且乐于改变他们的方式。
既然这已经公开了,我们来谈谈你吧。无论怎样,如果你认为你是理性的,你需要对这样的人格外小心,才能让事情顺利进行。我发现对付这些人最好的方法就是要非常小心你怎么说。
确保你是在指责代码而不是作者。把注意力放在手头的一个问题上,而不是大山上,那就是你的代码库,他们在创建代码库时可能有很大的帮助,这将被视为一种进一步的人身攻击。首先选择你的战斗,把注意力集中在你的用户身上的关键问题上,这样你就不会对那些导致他们对你所说的一切置之不理的人发出一连串的批评。
肢体语言和语气是很重要的,如果你是与他们面对面交谈,要清楚你在说什么,并确保你没有与他们说话或否定他们的技术能力。他们很可能一开始就处于防守状态,所以你需要解决他们的担忧,而不是确认他们。你需要意识到这段对话,不要太明显,让他们下意识地认为你站在他们这一边,并希望他们接受他们需要做的改变,这些变化引起了人们的注意。
如果这不起作用,你可以开始变得更有侵略性。如果产品是可以从会议室运行的,在代码评审期间将其放在投影仪上并直接显示错误,如果经理就在那里,这样就不会让人退缩了。这并不是要羞辱他们,而是要迫使他们接受问题对用户来说是真实的,它需要修复,而不仅仅是你对他们的代码的抱怨。
最终,如果你无所适从,厌倦了像对待幼儿园学生一样对待这个人,而且管理层完全没有意识到这个问题,它要么反映了你作为代码评审者的糟糕表现,要么你关心你的公司和/或产品的福利,你需要开始和你的老板谈谈他们的行为。尽可能做到具体和客观--让企业证明生产力和质量受到了损害。
发布于 2016-10-17 19:29:38
代码评论可能是有毒的,浪费时间,会让书呆子们活下去。只需看看在诸如干净代码与注释、命名约定、单元和集成测试、签入策略、RESTfulness等方面的意见分歧。
确保避免这种情况的唯一方法是写下传递代码评审的规则。
那就不是一个不合格或批准签入的人。他们只是在检查规则是否得到遵守。
因为它们是事先写下来的,所以当您编写代码时,您可以遵循规则,以后不必解释您的推理或争论。
如果你不喜欢这些规则,就开个会来改变它们。
发布于 2016-10-18 00:39:09
我不喜欢你的反馈,因为它可能被认为是惠顾。
在我看来,最佳实践是始终关注代码,而不是作者。
这是代码评审,而不是开发人员评审,所以:
在与其他人讨论审查时,同样适用同样的规则也是非常重要的:
代码评审不是进行性能评估的时候--应该单独进行。
https://softwareengineering.stackexchange.com/questions/333853
复制相似问题