Collaboration 一个程序员是否应该记录另一个';s代码?

Collaboration 一个程序员是否应该记录另一个';s代码?,collaboration,Collaboration,我们的几个主要开发人员已经寻求管理层,指派一名初级开发人员为他们记录代码 他们的论点是: 您将有两个熟悉一切的程序员 有点像结对编程 更具成本效益=他们将完成更多工作 它证明了他们的代码可读性和可维护性 他们很乐意回答任何问题;因此,这是一种辅导形式 然而,他们为了保持最新状态而保持忙碌的程序员数量似乎随着时间的推移而增加 这是个好主意吗 哇!这不是我们的经验 以下是一些重要的澄清 高级开发人员是自反式的自我文档编制者。这是一个核心的招聘问题。他们有时需要被告知“把这个留给年轻人” 这是作为一

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

他们的论点是:

  • 您将有两个熟悉一切的程序员
  • 有点像结对编程
  • 更具成本效益=他们将完成更多工作
  • 它证明了他们的代码可读性和可维护性
  • 他们很乐意回答任何问题;因此,这是一种辅导形式
  • 然而,他们为了保持最新状态而保持忙碌的程序员数量似乎随着时间的推移而增加

    这是个好主意吗


    哇!这不是我们的经验

    以下是一些重要的澄清

  • 高级开发人员是自反式的自我文档编制者。这是一个核心的招聘问题。他们有时需要被告知“把这个留给年轻人”

  • 这是作为一个验证工具,为高级的家伙(和我们的年轻人雇用与我认为相当高的酒吧清除)

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

  • 年轻人被期望将其视为一种重构练习,而且这种方式的工作频率比您预期的要高。特别是抓住诸如雅格尼问题、范围过大等问题。他们会把他们的前辈放到十字准星上。事实上,是他们促成了这一变化。(如果他们真的开始反对,我们会放弃。高年级学生非常愿意调整——他们明白,他们比其他任何人都要对低年级学生的成功负责。)

  • 你的上级不想解释他们的代码吗

  • 我们坚定地致力于敏捷原则“每个人都拥有代码”。我们认为这加快了这一进程

  • 最后,一个个人提示——当我试图理解其他人的代码时,我想做的第一件事是在我试图理解代码时对其进行重新注释。为什么评论被视为如此繁重


    也许我们过滤掉一些初级申请人,因为我们清楚地表明这是我们的工作方式。但这不是营业额问题。(但才过了3个月。)

    要回答标题问题

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

    当我了解代码的功能时,我会记录我正在查看的代码


    我不在乎是谁写的。

    这似乎是摆脱指导的一个聪明方法。还有几个问题有待解决:

    • 审查初级程序员编写的文档花费了多少时间?举例来说,如果你的初级程序员母语不是英语,这可能是一个很大的时间消耗
    • 这将如何获得初级开发人员开发软件的经验?这种形式的指导并没有解决从规范、设计到实现的推理飞跃,这是初级和高级开发人员之间的一个区别因素 这不是一个可怕的主意。阅读好的代码是一种很好的学习方法,并且确保您可以编写其他人能够很好地理解并对其进行注释的代码是很有用的

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

      初级开发人员的值有时间限制。我想说的是,最多6个月后,年轻人就没有真正的价值了,甚至更少的时间,你就会冒着失去这个(现在受过训练的)年轻人的风险,找到一份更令人满意的工作


      所以我给这个一个合格的答案。如果大三学生和新员工必须花一段实习期来评论代码,那就好了。但在那之后,他们不得不停下来,高年级的学生不得不回去写自己的评论。

      可能不是个好主意。出于若干原因:

      • 如果有一串年轻人会“扫荡”潜在客户,那么潜在客户编写正确代码的动机就会降低。无论是文档还是其他方面。我从未见过降低质量的动机没有得到回应

      • 如果团队领导乐于回答问题,为什么不在结对环节中回答问题呢?这实际上需要更少的时间,因为你可以当场回答问题,而不必试着记住你上周做了什么

      • 结对编程不仅仅是一个初级开发人员无所事事地看着高级开发人员。即使是最有经验的程序员也可以向年轻人学习。即使只是因为他们长期以来的假设受到挑战。如果你有困难,让小朋友来控制键盘——这通常能帮我解决问题

      • 代码应该是“自我记录的”。像Javadoc之类的东西近年来已经不流行了,因为它没有什么附加值(它总是过时了,等等)。花时间重组代码以使其易于理解更有意义

      • 我不相信“更有成效”的说法。如果你有5名高年级学生全速前进,5名低年级学生在后面扫荡,那么你只有5名开发人员在编写代码。如果你有10个开发人员以2/3的速度运行,那么你的总体容量会更大(~6个全速开发人员)


        • 总比不记录代码好。如果你要这么做,我会尽量扩大这个角色。尝试挑战开发人员发现bug、改进代码(很危险,但需要领导的指导)、编写测试用例以及所有第一次应该完成的事情


          为大三学生能发现的大多数问题设置某种类型的激励。鼓励年轻人在编写代码时,在放弃基本职责之前多看一眼,让领导多想一想。

          这是个坏主意。初级或非初级开发人员应该直接影响代码。如果普通开发人员能够以最少的启动时间使用您的代码