结对编程的利与弊

我在Menlo Innovations的暑假课程

杰玛·埃文斯Gemma Evans)Unsplash拍摄的照片

许多程序员对结对编程持怀疑态度:敏捷软件开发技术,其中两个程序员在一个工作站上工作。

这是我经常听到的反馈类型:

“这似乎完全是浪费钱,因为在不同的计算机上编写的代码是两个程序员的一半 。”

要么

“我是一个内向的人。 我不想有不断地在工作中的合作伙伴进行互动。”

这些是令人关注的问题。 在结对编程公司工作之前,我可能已经分享了这些观点。

请参阅我的上一份工作-Menlo Innovations的软件开发-不允许您自己编写代码。 如果您正在处理生产代码,则需要一个合作伙伴。

在和他们一起工作了几个月之后,我喝了这对编程的kool-aid。 我相信在许多情况下,结对编程是解决不同任务的一种了不起的方法。

这就是为什么。

优点

#1:结对编程减少了知识之塔

“知识之塔”或“最佳绩效者”是团队生产力的最大威胁。

知识之塔就像手背一样了解整个代码库。 他们是团队在需要尽快推出功能或进行大量错误修复时需要的人员。

塔之所以成为问题,是因为团队过于依赖它们。 由于办公大楼整日困扰着人们的问题,因此办公大楼经常在工作环境中变得痛苦不堪。 他们付出了额外的工作(即使在周末)。 一旦信号塔决定退出,它将使公司陷入困境,因为没人像他们一样知道代码库。

知识之塔是危险的,自给自足的循环。 由于许多其他程序员都在向他们寻求帮助,因此,信息塔比任何人都有机会看到, 思考研究更多的代码库。 这进一步增加了他们在团队中的智力优势。

Tower伤害了团队士气,因为程序员在他们旁边站不住脚。 另外,当他们请病假一天时,塔楼会使团队停滞不前。

更糟的是,商业作家和技术作家经常引用错误的解决方案。

当您阅读从伦乔尼(Lencioni)到泰尔(Theil)的所有内容时,他们都有战争故事,他们都在其中解雇或贬低了表现最好的演员,并立即鼓舞了他们的团队士气。 他们说,如果没有掌握的知识塔,就很难进行调整,但是团队士气更为重要。 故事结局。

这是一个有缺陷的经营理念。 惩罚表现最佳的人以增加团队价值不仅是一种糟糕的形式,而且团队很快就会开发出新的知识塔。

正确的解决方案是将“知识之塔”与另一个程序员配对!

这使知识转移变得无缝。 如果您整周都有另一位程序员在塔上工作,那么塔就不会对该知识有垄断地位

他们可能仍然是您表现最好的人 ,但是当表现最好的人请病假或决定离开另一家公司时,不会有负面影响。 塔的对编程合作伙伴将能够将关键信息传达给团队的其他成员。

如果您每周一次将与知识塔配对在一起,那么每个程序员都将共享一些关键信息,并且对团队很重要。 从而提高团队士气。

#2:结对编程使入门很棒

由于在结对编程方法下知识传递是如此无缝,因此入职变得容易

新员工不必参加长达数周的“训练营”或遵循过时的环境设置指南。

新员工刚刚被分配了一对编程伙伴,就可以开始学习!

在结对编程模型下,新员工有一个不变的角色模型可以工作。 他们将很快了解代码库,并更快地为公司创造价值。

新员工经常在代码库的上下文中苦苦挣扎,但在编程知识方面却苦苦挣扎。 退伍军人在背景方面很扎实,但有时会尝试偷工减料,以更快地完成任务。

这两个数字可以相互平衡。

(应该说的是,新员工也常常想减少拐角。但是,退伍军人的道德水平较高,在新员工的观察下往往会加倍努力)。

无论哪种方式,新员工在工作的第一个月都比一文不值的糟糕。 他们从公司那里吸取价值,直到他们知道代码库的上下文。 在结对编程方法下,新员工有机会在第一天开始为公司创造价值。

#3结对编程人员产生的代码多于两倍,个人和结对的代码对性格内向的人非常有用

坦白地说,程序员在工作中花费的大部分时间实际上并不是在编写新代码。 它是调试战略测试等。

如果每天计算机科学家的工作是写10,000个乱码,那么可以肯定的是,将两个不同的程序员放在不同的计算机上并让他们开始打字会更快。

幸运的是,计算机科学并非如此。

我们在 ,我们在键盘上花费的大部分时间都不会打字。

调试是一个指数浪费时间的事情。 如果团队中的某人知道错误的解决方案,则调试可能需要几秒钟。 如果团队中没有人知道该错误,则调试过程从几分钟几小时几天不等

在一个工作站上有两个程序员,这意味着团队一旦遇到问题,知道如何解决问题的可能性就会增加两倍。 这也意味着程序员对寻求帮助负有更多责任。

如果两个人必须互相征求意见,然后再寻求公司的另一对帮助,这意味着他们不会向别人索要帮助。 如果他们中的任何一个对如何进行操作都有想法,他们将尝试进行此操作,然后再调用备份。

他们也不会寻求帮助。 当单个程序员忙于解决问题时,显然他或她应该寻求帮助。 毕竟,它们可能只是一个顿悟之外的Google搜索。 但是,如果一 程序员陷入一个问题,那么很明显,他们应该寻求帮助。

结对编程非常适合内向的人。 Menlo的程序员中80%会自我识别为内向。 他们仍然喜欢结对编程方法。 为什么? 内向的人喜欢和他们在同一页面上的人。

结对编程合作伙伴正在思考相同的事情,检查相同的代码,并互相问相同的问题。

这种血缘关系不仅健康。 很有趣。 面对棘手的程序性问题,不要孤单可以提高士气。

也就是说,结对编程并不完美。

缺点

#1:结对编程会使简单的任务复杂化

如果您有一个非常简单的错误修复程序或要实现的简单功能,那么让两名程序员来完成该任务可能会很昂贵。 另外,对于两个程序员而言,可能很难对花费最少的思想处理能力的任务保持兴趣。 如果您的环境具有大型测试套件或集成过程,那么结对编程会进一步增加资源消耗。

我认为这是结对编程最费力的地方。 通过结对编程,简单的任务可能会变得过于复杂。

它确实确实取决于那对。 有时,在完成简单任务时,拥有一对伴侣可以提高士气。

#2:结对编程不能完全消除知识之塔

许多结对编程作者都夸大了结对编程对知识塔的作用。 一些人认为结对编程是消除它们的“银弹”。 我同意配对对解决这个问题有很大帮助,但是在业务上,我犹豫要不要说任何东西都是真正的“银弹”。

在团队中,总会有人that积重要知识。 这不是恶意的,人们自然倾向于该目标。

结对编程并不能消除人的特质。 总是会有程序员找到垄断信息的方法。

我仍然坚持认为,将知识塔与其他队友配对是一个比小人大手大脚的更好的解决方案,后者是解决此问题的另一种流行方法

罢免表现最好的员工可能是一个不错的短期解决方案,但从长远来看,这会阻碍员工尽力而为。

虽然不能完全消除问题,但配对是解决知识塔难题的最佳长期解决方案。

#3 Pair编程让员工承担超级责任,有时甚至过度负责

在Menlo,许多员工说他们离开工作时感到“脑筋急转弯”。

他们声称,他们在Menlo的思考比以往任何时候都要辛苦和更长的时间。

这是因为当您有一对编程伙伴时,不可能懈怠。 拥有全天候注视着您的队友,让您超级负责。 很难切角。 在工作中很难“调整”。

这是好是坏。

显然,专注于工作很重要。 但是,我认为精神休息并重新评估解决方案同样重要。

因此,在Menlo,他们确保编程对全天都在休息。 早上,Menlo员工进行一项名为“站立”的活动,他们分享当天的工作要做。 下午,他们进行了一项名为“ walkies”的活动,他们在街区周围行走。

这些智力上的休息和活动对于成功的结对编程文化至关重要。

如何在工作区中实现结对编程

出售成对编程? 想要试一试? 好吧,你很幸运。

结对编程的好处在于,它不必是全有或全无的技术。

在Menlo,他们做出了严格的业务决策,要求每个人都成对编码。 但这不是必须的。 如果您在一家更传统的公司工作,很可能会与一位同事结对来完成一项重要任务。

如果您在敏捷开发模型下工作,另一个想法是与另一个程序员合作进行一次迭代。

这些对策是在不花费过多资源的情况下进行结对编程试运行的好方法。 然后,您可以将这对货币对的有效性与公司的单个结果进行比较。

如果您要尝试其中一种措施,建议您将复杂,关键任务和冗长的任务配对,而不是简单,不重要和简短的任务。 理由是前者可以带来长期的长期收益,并且可以最佳地展示结对编程。

如果您要尝试配对编程,请在评论中让我知道它是如何实现的! 我很想听听这种令人振奋的新开发技术的成功(甚至失败)故事!

TwitterInstagram上关注我,以随时了解我的内容!

From: https://hackernoon.com/the-ultimate-guide-to-pair-programming-b606625bc784

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值