我的团队成员之一是初级程序员,就他的经验水平而言,他具有令人印象深刻的编程技能。
在代码审查期间,我相信强调学习,而不是指出错误。
但是,初级程序员是否应该参与更多高级程序员的代码审查?还是仅由具有相应经验的程序员来参加代码审查?
我的团队成员之一是初级程序员,就他的经验水平而言,他具有令人印象深刻的编程技能。
在代码审查期间,我相信强调学习,而不是指出错误。
但是,初级程序员是否应该参与更多高级程序员的代码审查?还是仅由具有相应经验的程序员来参加代码审查?
Answers:
代码审查的主要目的是发现缺陷或潜在问题。评审所需的参与者应该是最能识别这些问题的人员,无论其职称或资历如何。
例如,如果正在使用Python开发应用程序,并且初级工程师比使用编写代码的高级工程师对Python语言有更多的经验,那么它们可能是指出做某事的替代方法的宝贵资产,但是他们可能对整个系统的了解也较少。
除了工具和技术方面的经验外,还应考虑应用程序领域的经验。拥有20年经验,但在金融行业中只有1或2个经验的人,可以通过让一个总体经验不足,只有5年金融行业经验的开发人员来回顾他的工作来获得帮助。
邀请经验不足的工作人员尽可能多地观察和参与代码审查过程,这也可能有益于使他们学习代码库,提出问题并了解他们不仅期望在代码审查中而且在代码审查中期望得到什么。他们产生的代码。但是,您可能不想在过程中涉及太多的人(而是专注于可以完全支持代码审查及其目的的人员)。
这实际上适用于任何类型的审核-需求,设计,代码...
初级程序员是否应作为高级程序员项目中的代码审阅者参与?
是的,他们应该。阅读他人的代码是一种很好的学习经验。(这对于好的代码和坏的代码都适用。尽管人们希望高级开发人员的代码不会很糟糕……)
显然,这是不明智的,只有有晚辈在做代码审查。对初中生发现的东西寄予过高期望是不明智的。但是,初级程序员可以带给我们新鲜的见解,您也会感到惊讶。
另一个答案提到大三生/被吓倒了。这不是针对审阅者或审阅者的代码审阅。如果发生这种情况,您的小组需要更改其代码审查的方式……也许恐吓者需要排成一列。
我想补充一点,如果一个“少年”程序员可以不理解老人代码,然后这本身是代码的一个很好的措施。是的,有时可能无法编写所有人都能理解的代码,但是希望这是例外情况-如果只有一两个人可以理解代码,那么当这些人不可用并且出现问题时会发生什么它?
给人们新的挑战可以帮助他们发展;也可能不是每个人都被要求审查代码,而是坚持认为某人具有资格(由人力资源政治和游戏确定),然后才有资格帮助审查,这似乎是条条理的。
正如其他人指出的那样,代码审查可能是一个双向过程。它可以帮助所有人理解代码基础,因此可以共享知识,可以帮助下级向年长者学习新的更好的方法和技术,还可以帮助年长者提高理解力,并通过书写来确保每个人都可以遵循代码,从而拥有更多的眼睛发现错误。
代码审查的目的是捕获测试无法捕获的问题,例如可维护性问题和极端情况。我认为在许多方面,初级程序员更适合于此目的:
这并不是说没有其他方法可以使高级程序员更适合进行审阅,但是我的意思是,如果您没有充分利用团队的多样性,那么您的工作就会受到损害。
经常会要求青少年维护代码,他们能够理解它是至关重要的。
有时,初级人员是唯一可以查看高级开发人员代码的人员。因为高级老板正在休假,代码是否应该等待去进行质量检查(如果没有代码审查,我们不会将任何事情从开发人员中挤出,我也假设这种类型的代码审查)?
我还特别要求初级人员在知道他们不久将为不同的客户做类似的事情时,或者如果我知道他们在从事其他类似的事情或具有特定技能的情况下,对某些内容进行代码审查。
如果代码相当简单,我通常会请一个初级人员进行审查。如果初级人员有能力胜任这项工作,为什么还要浪费老年人的时间呢?如果大三学生对高级代码的审查感到胆怯,请让他们首先看看较简单的部分。毕竟,您无法摆脱初中的生活,直到您不再感到害怕。
我经常发现,如果我不得不向不懂它的初级人员解释代码,我会看到我犯的一个错误(通常是在假设中),并且没有经验丰富的代码审阅者会捕获该错误,因为该代码确实可以运行但并没有完全按照预期进行。因此,仅仅说明事情的行为通常可以帮助开发人员在代码审查者没有发现问题的情况下发现问题。由于经验丰富的人员通常不会一步一步地学习代码,因此当初级人员进行审阅时,更容易发现这些类型的事情。
我发现让大三学生参与评论有几个好的效果。首先,这使他们在理解高级人员的代码时更加自信。当他们可以在该代码中找到错误时,这使他们更加自信。
它使他们暴露于自己之外的思考过程,并让他们看到处理事物的其他方式。即使是高级人士,这也发生在我身上-看到解决问题的另一种方法可能会为新的可能性大开眼界。
它可以帮助他们学习阅读他人的代码,并且使他们有机会问一下代码在做什么,而这在作者看来仍然很新鲜。这比六个月后(当作者长期不在或忙于另一个项目并且没有时间提出问题)必须维护它要好得多。
这对于年长者是有益的,因为这些问题既暴露了初中弱势的潜在领域,需要指导(因此他们可以承担更多的责任,并给年长者更多的时间去做其他类型的任务),或者代码根本不清楚的领域。除了作者以外的任何人(这意味着从现在起一年后甚至还不清楚作者是否需要更改)。它还可以帮助年长者认识到,初中生可能比他们以前认为的要聪明得多。它可以帮助每个人保持专业地位。毕竟,如果您排除了初级人员,那么您显然意味着您认为他们没有能力理解心理上不幸的代码。
审查老年人代码的青少年可以在您的组织中赢得更多的专业尊重。年长者可能会意识到他们一直低估了大三生,而大三生可能会意识到,年长者确实知道的比他们给他们的称赞还要多。大三学生有时认为自己的技能比自己强。接触到他们不会写的代码对这些人有好处,因为他们开始意识到自己还有很多东西要学习。这也将激发他们中最好的人获得技能。在学校里,有时B学生不明白为什么他们没有得到A,直到有人向他们展示了A级工作的样本。与大三到大四的代码审查相同。
我的回答是:有时。程序员与程序员之间,任务与任务之间都将有所不同。
对于:
反对:
我坚信团队中的每个人都应该参与代码审查的双方。大三学生应阅读高级守则,反之亦然。为什么两者都这样?因为通常这不仅与代码是否“解决问题”有关。我无法告诉您我必须向某人解释一段代码,然后在解释结束时突然想出了一种更好的方法。代码审查可能有3个目的:
我是一名大三学生,通常会审查高级书面代码。这是公司的总政策,“一切都会让某人检查代码”。这些人回顾了他们的代码并有机会提出关于为什么以某种方式完成事情的问题,我从中学到了很多。有时,我提出了一种更清洁的方式来编写某些代码等。比人们告诉我如何改进我的代码要少得多,但这至少发生过一次。
您的代码审查的正式程度也很重要。我们的程序非常非正式,包含“嘿,您会看我的代码”吗,它们在小隔间或专用IRC频道中被说出。我可以想象,如果您在更正式的环境中查看代码,那么大三学生可能会对查看大四学生的代码更加了解。
绝对,初级工程师至少应该在某些时候检查高级工程师的代码。
以我的经验,在一对一的代码审查中,审阅者实际上看到原始编码器会遗漏的错误是非常罕见的,无论审阅者是高级还是初级。评论者甚至不必是人类。另一方面,很常见的是,原始编码器在尝试解释代码时会识别出一个错误,并且审阅者越初级,就越有可能因为需要深度的解释。
我认为,代码复查的一些经常被忽视的好处从长远来看可能比捕获错误更重要:
在这两个方面,初级审查员往往比高级审查员受益更多。
初级程序员绝对应该为他们的高级同事执行代码审查!
但是,他们不应该是唯一的审阅者。每次代码审查时,将他们与经验丰富的开发人员配对。
有很多好处:
作者将被迫解释更多的代码。 讨论代码是查找代码问题的最佳方法之一,或者是实现代码的更好方法。
作者将发现其代码中的弱点。 初级开发人员更容易被一些更高级的块所混淆。为了自己的利益,这些方法常常“太棘手”,可以从简化中受益。
初级开发人员将学习更好的编码实践。 代码审查是一个以身作则的机会。
初级开发人员将是一个更有效的代码审查者。 代码审查很难。每个人对代码审查的经验越丰富,代码审查就会变得更快,更有效。
初级开发人员将对代码库有更深入的了解。 要自私!通过尽早拉拔初级开发人员,您将能够尽快将其移交给他们。
初级开发人员会更投入。 初级开发人员将开始认为“高级”代码(及其同事)不那么外国化和令人生畏。这是代码审查的一个巨大且经常被忽视的好处。
初级开发人员是一双崭新的眼睛。 他们不像长期从事代码库工作的人所灌输。初级开发人员在提出问题时更有可能指出完成事情的不同方式。 在没有任何考虑的情况下,不要忽略他们的野蛮评论!
高级开发人员要负责。 我经常看到高级开发人员倾向于掩盖彼此的代码(信任,懒惰等)的情况。额外的眼睛有助于阻止它。
需要考虑的缺点是,所有相关方都将花费大量时间进行代码审查。因此,出售给管理人员可能有点困难。但是,收益完全超过了放慢脚步。
代码审查是为了审查代码,而不是为了学习。如果我是一名初级程序员,我会被迫去审查高级代码。
另一方面,前提是高级人员可以回答所有问题,阅读高级人员的代码是一种很好的学习方法。
两种选择可能是: