一个程序员应该记录另一个代码吗?

时间:2010-02-07 03:22:37

标签: collaboration

我们的一些主要开发人员已经寻求管理层指派一名初级开发人员为他们记录他们的代码。

他们的论点是:

  1. 你会有两个熟悉一切的程序员。
  2. 这是一对编程,有点。
  3. 它更具成本效益=他们会做得更多。
  4. 它表明他们的代码是可读和可维护的。
  5. 他们很乐意回答任何问题;所以这是一种指导形式。
  6. 然而,为了保持最新状态,他们保持忙碌的程序员数量似乎随着时间的推移而增加。

    这是个好主意吗?


    哇!这不是我们的经历!

    以下是一些重要的说明。

    1. 高级开发人员是反身自我记录员。这是一个核心招聘问题。他们有时需要被告知“为初级人员留下这个”。

    2. 这是一个高级人员的验证工具(我们的初级人员被聘用,我认为很高兴清除)。

    3. 是的,代码应该是单一用途和自我记录的。如果初级人员不能轻易评论,那就是老年人认真对待的反馈。

    4. 青少年应该将其视为重构练习,并且它的运作方式比您预期的更频繁。特别是捕捉YAGNI问题,范围过大等问题。他们将老年人放入十字准线。事实上,他们起源于这种变化。 (如果他们真的开始反对,我们会支持它。老年人非常愿意调整 - 他们明白他们比其他任何人都更有责任成功。)

    5. 您的资深人士想要解释他们的代码吗?

    6. 我们坚定地致力于“每个人都拥有代码”的敏捷原则。我们认为这会加速这一过程。

    7. 最后,个人注意事项 - 当我试图理解其他人的代码时,我想要做的第一件事就是在我尝试理解它时重新评论它。为什么评论被认为是如此繁重?

      也许我们会过滤掉一些初级申请者,因为我们明确说明这是我们的工作方式。但这不是营业额问题。 (但这只是3个月。)

11 个答案:

答案 0 :(得分:13)

可能不是一个好主意。出于多种原因:

  • 如果有一串青少年会在他们之后“拖把”,那么导致编写正确代码的动机就会减少。与文档或其他方式一样。我从未见过降低质量的动机没有答案。

  • 如果团队负责人乐于回答问题,为什么不回答配对会议中的问题呢?它实际上将花费更少的时间,因为你将能够在那里回答问题,而不必尝试记住你上周所做的事情。

  • 结对编程不仅仅是一个坐在空闲中看着大四的初级开发人员。即使是最有经验的程序员也可以向青少年学习。即使只是因为他们的长期假设受到挑战。如果你遇到麻烦,请让大三学生控制键盘 - 这通常可以解决它。

  • 代码应该是“自我记录”。像Javadoc这样的东西近年来已经不再流行,因为它增加了很少的价值(它总是过时等等)。花时间重构代码使其易于理解更有意义。

  • 我不买“更富有成效”的论点。如果你有5名高年级学生全速前进,5名大三学生在他们身后扫荡,你只有5名开发者生成代码。如果你有10个开发者以2/3的速度运行,那么你的整体容量会更大(约6个全速开发)。

答案 1 :(得分:4)

它不是一个可怕的想法。阅读好的代码是一种很好的学习方法,并确保你可以编写其他人可以很好地遵循的代码来评论它是有用的。

但是您的高级开发人员仍需要阅读并验证评论是否正确,否则这只是浪费时间。

初级开发商的价值有时间限制。我会说最多6个月之前,对于大三学生没有实际价值,甚至更少的时间可能会让你失去(现在受过训练的)大三学生的风险更加令人满意。

所以我给它一个合格的可能。如果初级和新员工必须在实习期间评论代码 - 很好。但在那之后,他们停下来,老年人不得不回去写自己的评论。

答案 2 :(得分:2)

回答标题问题,

  

一位程序员是否应记录另一位代码

我正在查看我正在查看的代码,因为我了解了它正在做什么。

我不在乎是谁写的。

答案 3 :(得分:2)

哇!!我是唯一一个认为记录代码的时间是之前你开始敲击密钥的人吗?

如果你的首席开发人员在代码(和设计评审)之前不理解设计的概念,那么你就会遇到一些严重的问题,并且应用一个像一个大三学生那样的创可贴写下什么他认为编写代码后,代码确实无法提供帮助。

你有进程吗? SQA?

答案 4 :(得分:2)

另外一个想法 - 通常,工程师在添加和/或测试代码之前,没有彻底了解代码的作用。是的,通过观察可以获得代码目的的要点。但文档的目标应该是涵盖不明显的细微差别和关注点。我不认为任何开发人员 - 不管是否为初级 - 只会查看代码并编写有用的文档。

让初级开发人员在执行其他任务时鼓励增强文档,这是一个很好的计划,因为他们将不可避免地捕获对原始开发人员来说似乎“显而易见”的东西。但是,在您尝试修复错误或增强功能并且无法解释为什么代码无法按计划运行之前,记录这些原因并不明显。

答案 5 :(得分:1)

最好不要记录代码。如果你打算这样做,我会尝试扩大这个角色。尝试挑战开发人员发现错误,改进代码(危险,但是在引导的指导下),编写测试用例以及第一次应该完成的所有事情。

为大三学生可以找到的大多数问题设置某种类型的奖励。在编写代码时放弃基本职责之前,鼓励大三学生更加努力,让领导者多思考一下。

答案 6 :(得分:1)

这是个坏主意。初级或非初级开发人员应直接影响代码。如果普通开发人员能够以最小的启动成本使用您的代码,那么这将很好地证明您的代码是可维护的。如果新手开发人员会破坏某些东西,那么您的单元测试需要更多关注。但是如果你不断创造额外的工件,而这些工件不是最终产品的一部分,那么你作为一个团队就会毫无理由地增加成本。

答案 7 :(得分:1)

我不够聪明,不能写出自己的答案,所以我会引用比我聪明的人:

乔尔said

  

甚至没有想过要告诉大学的CS毕业生,他们可以为你工作,但“在转向代码之前,每个人都必须在质量保证方面做一段时间”。我见过很多这个。程序员不会成为优秀的测试人员,你会失去一个优秀的程序员,他们更难以替换。

我认为初级开发人员的情况也是如此,尽管可能程度较小。我不介意记录我经常遇到的事情,但我不希望我的工作只包括清理高级员工。

Yegge said

  

我刚接受采访的一名学生告诉我,他的朋友今年夏天在英特尔实习,并且非常讨厌他,以至于他拒绝了他们提供的相当有利可图的全职报价。这位朋友说,他确信一位英特尔员工为电影Office Space编写了剧本。那里的人不仅有5或6个老板要报告,这已经够糟糕了;他们实际上有TPS报告,每个人都必须这样做。当他们更改封面页格式时,会发出一份备忘录,让每个人都知道。

     

虽然这可能是我听过的更为超现实的实习经历之一,但实习恐怖故事相当普遍。并不是说实习生不会告诉任何人回到学校。 Word快速绕过。许多公司已经在主要大学中有效地列入黑名单。告诉我这个故事的威斯康星大学的学生说,现在CS部门没有人对在英特尔工作感兴趣。英特尔仍然在校园里疯狂招聘,但他们已经有效地关闭了管道。

简而言之,如果你让初级开发人员不想在那里工作,他们......将无法在那里工作。如果你没有任何初级开发人员,最终你将没有高级开发人员,然后根本没有开发人员,如果你得到我的漂移。

唯一可能的解释是,你,好先生/女士,在谷歌工作,实际的问题是招聘顶尖人才变得太容易了,别有用心的是他们希望为小公司提供公平的竞争环境。 (没有其他人敢做一些让招聘优秀人才变得更难的事情。)在那,我祝你们好运,因为我的公司不是Google,我们希望看到更多合格的候选人走进我们的大门

答案 8 :(得分:1)

如果他们写出明确重构的代码,他们将会收到很少的评论,如果有的话。

答案 9 :(得分:0)

这似乎只是摆脱指导的一种聪明方式。还有一些问题仍然存在:

  • 在审核初级程序员写的文档时花了多少时间?这可能是一个重要的时间汇,例如,如果你的初级程序员母语不是英语。
  • 这应该如何让初级开发人员获得开发软件的经验?这种形式的指导并没有解决从规范,设计到实施的推理问题,这是初级和高级开发人员之间的差异化因素。

答案 10 :(得分:0)

它确实依赖于',您需要记录此流程的具体目标,然后衡量结果。这可能只是一种降低成本的模型,即较少付费的员工可以完成更多所需的工作。还有其他值,你给出了例子,这些很难衡量(即文档管理员真正获得了他们可以使用的知识)。底线对于这类问题没有正确的答案,因为它本质上是务实的,即这种行为的后果将证明(或以其他方式)它的存在。