Peer Reviews or Pair Programming, or Both?
就我自己而言,我们的开发团队对许多不同的软件工件(需求分析,测试计划,代码等)进行了同行评审。甚至没有将对等编程视为一种选择。 同行评审的做法被推倒了,而开发人员却从不接受。我们有一个外部SQA小组,该小组从活动中收集指标,但是由于付出了三心二意,所以这些数字毫无价值。经过多年的"正式"做事方式,开发人员开始集体忽略规定的程序。 现在,对于何时将错误插入生命周期的了解越来越少。不进行同行评审导致团队的专业化程度提高了……在这方面,没有人真正知道系统自己专业领域之外的组件需求/逻辑。 了解您的经验(同行评议或结对编程),尤其是成功案例,将非常有价值。 当我年轻又愚蠢时,我的第一项工作是建立一个解析器,以提取长pdf文件中的某些字段,该文件被转储为未格式化的文本。我对使用某种形式的正则表达式了解得足够多,但对正则表达式的理解还不够。几天后,我完成了这项任务,但在同行评审中,我迷恋上得知我本可以做得更好,而我生产的却是垃圾。我学会了如何进行词法分析,只是为了证明我不是白痴,而只能说同行评审过程很糟糕。我不需要资深人士来为自己的失败做准备,我需要一位导师,而且我每次做同行评审时都想起自己。 当我们在门口检查自我时,我喜欢同行评议。 (这包括我的!)这个世界上的时间是有限的,只有那么多的时间,您才能学习和做。通过良好的同行评审,您可以扩展知识,并在较短的时间内完成更多工作。当事情降级为过度的语法检查时,就会出现问题。
因此,我有一些规则。我不会对任何我们可以自动化的内容进行审查。运行拼写检查,然后对美化器进行编码。如果您有可用的FXCop之类的东西,请运行它,按其说的做,或者有个很好的理由而不是。然后我们看一下代码是如何组合在一起的,它是如何工作的以及我们可以做些什么来改进它。通过这种方式,您对如何解决问题以及为什么有人这样认为有不同的看法。有时,另一种方法并不是真的更好,有时,新的解决方案很棒,并且在您余下的编程生涯中都会用到。
我们试图确保没有至少一双眼睛就不会产生任何代码。 需要注意的一些事情:
我做了很多敏捷指导,为了帮助人们克服结对编程的"烙印",我们将其称为"实时代码与设计审查"。用这些术语来说,人们似乎对这个概念的理解更好。 同行评审应该是强制性的。 您可以阅读并找到许多文章和书籍,这些文章和书籍讨论了在不同规模的团队中解决此问题的不同方法,但是您似乎在询问经验。 我个人认为同行评议应该很有趣。提供食物,保持气氛愉快。确实应该将其视为开发人员/编程人员可以相互学习而不是进行判断的机会的时间(而且我们都知道每个程序看起来都是天生具有判断力的基因)。我倾向于欣赏或协助组织评论(开放时间为第1/3或1/4)。我的意思是,当小组聚集在一起并且一个人介绍一个项目时,他们正在工作甚至正在审查与当前项目无关的项目(我知道这很难按时完成,但是请尝试)。 通常,创意人员会聚在一起展示他们目前所喜欢的绘画,设计和艺术家,以帮助激发灵感。实际上,灵感应该是您希望在评论中培养的领先概念。其次,人们自然会注意到其他开发人员所做的事情,而他们以前从未注意到过。"哦,哇,您设法用一行代码做到了吗?凉。"与使用同行评审来确定啄食顺序和排名相比,让开发人员对自己的工作,所做的工作以及如何做事有启发和动力,这将使分红更多。 最后,实际上是"审核"部分,但这是不可避免的事实。优秀的开发人员将看到质量低下的代码,经过足够的审查,现在是劣质编码者增强或忘记它的时候了。 如果您保持积极的态度并组织有序的活动,那通常是很棒的经历。 几乎忘了接触配对编程。这很难设置。显然,您不能让两个较弱的程序员一起工作,或者您最好安排一百万只猴子和一百万个打字机。尝试让一个较弱的人变得更坚强,并私下为他们俩提供激励。较弱的人应该知道可以得到改善(如果他们需要这样的激励),而较强的程序员应该知道真正的领导者可以作为良好的导师开始。但是请确保较弱的开发人员正在键入。反之亦然,或者变成演示文稿,"打哈欠"的人可能无法从体验中获得任何收益。 ?是的,我们公司使用同行代码审查。我们将其作为" Over-The-Shoulder"审查进行邀请,并邀请团队的测试人员参加会议,以更好地了解更改。 好的。 ?正如一些研究已经证明的那样,代码审查有一定的好处。对于我们公司来说,很明显,随着支持电话数量的减少和报告错误的数量的减少,代码质量也得到了提高。注意:这里的一些好处是实施Scrum和放弃Waterfall的结果。有关Scrum的更多信息,请参见下文。 好的。 ?代码审查的好处是可以使产品更稳定,代码更易于维护,因为它适用于结构和编码标准,并且允许开发人员将更多的精力放在新功能上,而不是"灭火"错误和其他生产问题上。如果"正确"进行代码审查,实际上没有任何缺点。更多关于下面的"正确方法"。 好的。 ?实施代码审查时要克服的一些障碍是,"老大哥"在注视着我,而没有完美的代码则意味着折磨和痛苦。有时很难使开发人员彼此信任,尤其是在涉及"啄食顺序"或"比您更居高临下"的态度并将您的辛勤工作放在显微镜下时。信任是解决这些问题的关键。开发人员必须相信,他们不会因代码错误而受到同行或管理层的惩罚。它发生在每个人身上。记下该问题,使其解决并继续。 好的。
Scrum 好的。
"正确的方法" 好的。
建议 好的。 好。 我对两者的唯一直接相关的经验是同行设计评审(很久以前)。他们很烂。如果您阅读了这些文献,很明显,它们违反了良好评价的几条规则(跳人,专注于拼写,没有明确的结果等),但这只是我们所知道的。 但是从那时起,我就参与了许多脱机代码审查。 根据项目的不同,它们要么在签入"活动"分支之前就已被强制执行,要么在之后的某个随机时间点被执行。在4个项目中,有3个被接受,最初被认为是必要的邪恶,但后来却成为了宝贵的投入。 任何工作审查的好处应该是使每个人都编写更好的代码,甚至提供最好的编码员指导(说实话,您的热门程序员是否实际上编写了可读的代码?)一旦您可以说服经验不足的员工说他们没有了解某事-您不在。一些热门照片会大吹大&,但实际上最好的照片会考虑他们写的内容,并实际更改变量名称或布局-甚至可能添加注释。 第四项目使用强加于"随机"审查的方案,并且尚未引入技术线索(团队破裂?) 您描述的两种做法是形式化方法。它们不适用于所有个性和团体。 尝试一些您认为您的团队可以实际做的事情,然后看看是否可以改进。 一旦您对代码有了额外的关注,您就不会回头 从结对编??程移至github上的PR评论后进行的比较分析。 重点是逐步列出我们的团队现在在PR审查过程中要遵循的内容。 "代码审查与结对编程" https://blog.mavenhive.in/pair-programming-vs-code-reviews-79f0f1bf926 |