结对编程在当今非常有名。
它具有以下优点:
- 错误较少的程序。
- 后期制作维护成本要少得多。
- 既定的做法受到挑战,导致出现新的想法。
- 程序员可以互相学习。
- 程序员发展软技能。
但是结对编程的缺点是什么?
结对编程在当今非常有名。
它具有以下优点:
但是结对编程的缺点是什么?
Answers:
尽管结对编程赢得了相当大的声誉,但它也有一些陷阱。
其中一些如下:
我已经尝试过多次进行配对编程,包括在一个组织中(简短地)考虑将其推广为所有工程师的强制性过程(您可以猜出这个想法的进展程度如何)。我个人讨厌它。
我在下面列出的原因仅是我的主观经验,我无法具体地“衡量”它们的影响。但是这里它们都是一样的:
1-仅当前者发声而后者会听时,才有“导航员”和“驾驶员”才有帮助。
我们都遇到过固执,对某种理论上的关注热心或在病理上无法(心理上)无法在有人提出问题时“扔掉”旧开发人员的开发人员。我们都知道,个人太胆小或无所顾忌,无法引起关注或提出极端案例。
当这些开发人员配对时,导航器迅速扮演被动角色,而最终的结果是通过自动代码审查进行唯一编程。这是对资源的巨大浪费。
2-配对会阻碍创造力。
与以前对“集体讨论”价值的看法相反,如今的共识是,创造性知识工作需要独立性和自主性。当您一个人工作时,您可以迅速总结出一些疯狂的想法,看看它是否切实可行。您可以无言以对地组装一些奇怪的原型,如果失败了就没关系,因为没人知道。
将其与配对进行比较:当我想尝试一些新概念时,我必须说服我的伙伴,逐步地与他们讨论实现,并希望他们不会对我进行评估,如果失败了。这种环境对创造新想法是有害的。
3-最低公分母设计。
当一对不能像上面那样提出新的想法时,或者当个人不能就应如何设计功能的某些基本原则达成共识时,就会出现一个混乱的设计,试图折衷并满足所有人。
如果您将一个开发人员构建了出色的,雄辩的,面向天空的功能性编程抽象,并将它们与快速而肮脏的性能怪胎结合在一起,那么他们将共同生成的代码通常既不会非常优雅,也不会特别快。
4-缺乏自治权和暴力透明度。
暴力透明性是我从与Scrum方法论相对适度著名(且颇具争议)的争论中选择的一个短语。它描述了一些组织如何使开发人员幼稚化,并以通常为非专业工作者保留的怀疑态度对待他们。
无论您如何考虑使开发人员的工作完全透明的“危害”(您可能不同意这实际上是危害),许多人都珍视自己的自主权和独立工作的能力,并相信自己做正确的事。这是一个重要的心理需求,迫使开发人员结对(如我所见,至少在一家商店中发生过)将使员工感到沮丧,沮丧和疏远。
5-有些开发人员不能很好地配对使用。
有些人不会或不能在成对的环境中适当地表现自己。他们可能有不良的卫生习惯,不良的工作习惯,个性化的磨擦,“大声”和“紧张”的态度,或者还有其他许多特征,使他们成为优秀的个体工人,但对程序员却很差。
你能解决这个吗?并不是的。改变个人行为很难。结对编程的商店在招聘时需要非常小心,并花费大量时间来了解某人的工作方式以及他们是否能够与同龄人一起工作。但是,对人格进行更严格的歧视意味着除非您放松对技能和专业知识的标准,否则招聘将需要更长的时间。
取决于您的情况或观点。
结对编程对组织有利。但是对个人有益吗?
毕竟,这是一种节省成本(早期反馈)和提高生产率的方法;与您无关,但与项目,产品,公司($$)有关。
尽管您可以获得个人利益,但它们并不是任何开发方法的原因或终点。例如,(全职)结对编程还可以阻止您放松,冲浪等,您必须向伴侣证明自己的停顿是合理的。
您(轮换)的合作伙伴将是最好的监控摄像机:工作强度增加。
或者,通过分配知识,个人对公司的风险降低(例如,不能离开公司获得基本知识),并且“议价筹码”更少。
我相信您可以通过从公司的实际情况/立场而不是从经理的角度更严格地阅读肯定的文章来找到更多要点。
几乎所有方法都是从经理的角度编写的。
除了其他答案:
我工作过的许多公司都向他们的程序员提供笔记本电脑(位于客户站点-下班后回家时更容易保护设备安全,能够在紧急情况下在家中通过VPN来完成其他工作)等以前,从肩膀冲浪的角度来看,我已经很难在其他人(“驾驶员”)的笔记本电脑屏幕上看到-年龄不会对此有所改善(在任何情况下,某些屏幕在理想视角之外都难以阅读)。
因此,结对编程人员将需要足够大的屏幕,这将增加硬件成本并限制对位置的适应性。对于某些人来说可能不是问题,在其他情况下则是问题。
趣闻轶事: