当前位置: 首页 > 科技观察

结对编程成功的背后

时间:2023-03-19 18:28:37 科技观察

下面让我们来探究分析结对编程成功的特征原因。结对编程正逐渐成为一种主流的编程风格。经过两年的结对编程经验,我发现结对编程真的很好,几乎是神奇的。但有时,它会阻碍我们的开发过程。我想探究这背后的原因,想办法让结对编程始终发挥积极的作用和方法。我的结对编程经验我想通过先说说我自己的结对编程经历,来帮助大家更好的评价后面的相关内容。我已经在2家不同的公司进行了将近两年的结对编程。一家是咨询公司,我们开发客户端应用程序。另一家是一家开发了大型SaaS产品的初创公司。在此期间,我和20多位具有不同背景、个性、技能、经验和文化的开发人员结对编程。旁注:结对编程的另一个好处是它让我可以与很多了不起的人一起工作并成为朋友。有效配对的特点回顾我之前的配对经历,许多好的和坏的经历似乎都历历在目,仿佛就在昨天。我把这个总结成一个2*2的矩阵。结对编程矩阵定义效率代沟从我的观察来看,结对时两个个体之间相关性的最大区别因素是两者之间的效率。这些因素包括——他们各自之前的经验、领域知识、语言知识等。另一种表达效率的方式是他们各自的输出潜力,包括速度和质量。为了便于讨论,高效和低效的程序员在本文中将分别描述为“高级开发人员”和“低级开发人员”。受益于两人结对编程相对于各自独立工作的预期优势。效率差距较小的结对编程根据我的经验,效率差距较小的结对编程通常优于效率差距较大的结对编程。原因可能是开发人员有更多的共同点,并且更愿意与彼此互动。矩阵中列出的要点已经很清楚了。从本质上讲,一个小小的差距意味着他们更加理解和尊重对方,愿意经常交流,共同学习和进步。这将是一次愉快、双赢的互动。弱关系和弱关系我的观察告诉我,弱关系和弱关系比强关系更有益。为什么?大概是因为初级开发人员不那么固执己见,不那么自负,并且更专注于学习而不是坚持自己是“正确的”。“新同学交朋友”效应你知道吗?假设你是个孩子,你的家人在某个学年的中间搬到了一个陌生的小镇。这时,如果班里的另一个孩子也差不多同时转学,你们就更容易成为朋友,因为你们是同样的情况。结对编程也是如此。如果你不熟悉一个新的应用/技术/语言/等等,那么在以后的研究和探索中,因为你处于一个平等的地位,不仅会谈得更好,而且会更兼容当你合作解决问题时。结对两个初级开发人员的首要目标应该是学习。强配对如果您要结对编程两个高级开发人员,可能很难结对。因为每个程序员都是不同的,有不同的想法和看法。越是有经验的人,越是倾向于坚持自己的观点,也就越是狂妄自大。而当其中一个人太嚣张时,另一个人就只能是“答题人”了。如果两个人都自大,那就更糟了。这时候,他们会不断地争辩、争论来反驳对方,所以两人的关系就会紧张、充满敌意。我见过更糟的是两个人从头到尾一句话都没说,这显然是一种负面影响。一个好的据点配对应该是相互尊重的。彼此互动、辩论、讨论和计划,以共同创造一个专业水平。强强联合造就强大产能。因此,结对两名高级开发人员的首要目标应该是生产。StrongandWeakPairing这种配对安排经常出现在新的开发人员加入公司时,或者切换到新的开发环境时。将新人与高级开发人员配对可以让前者快速融入团队。但如果高级开发人员被选为不合适的人,就有可能损害初级开发人员的信心和士气。期望首先,领导者必须明白人员配备的目的是尽可能快地推进开发过程。任何有利害关系的人也应该明白这一点,包括其他开发人员、设计师、QA等,尤其是高级开发人员。我们不应该对这种新旧结合施加太大压力。输出速度会较慢,因为引导与生产同时发生。指导高级开发人员应该明白,他们的角色是指导初级开发人员,而不是鞭策他们。好的导师愿意倾听并回答问题,观察并提出引导性问题。但是人性使我们很难做到。这里有一些要点:不要告诉他们玩什么,做什么,也不要只是给他们看。不可否认,这样会省去很多麻烦。但是要让他们看到自己犯错的后果,让他们想想为什么这样不对,让他们改正错误。让他们提出问题,然后用引导性问题回答他们,让他们自己探索。如果他们走到了死胡同,伸出手来帮助他们。我记得有一次我和一位完全是新手的同事一起执行任务。因为那时候压力真的很大,所以我毫不留情的选择了拖着他往前走。虽然他经常道歉,但看得出来,他总是心情不好。一个好的导师应该有足够的耐心和自信,积极推动初级开发者的成长,而不是让他们成为别人的附和。但在这个领域,这样的导师太少了。每个人都忙于做自己的事情,或者根本没有能力教别人。以下问题可以帮助我们确定某人是否是一个好的导师:是否愿意与初级开发人员分享知识并提供帮助?您是嫉妒初级开发人员的技能,还是怨恨他们的意见和见解?你愿意为了团队的利益牺牲自己的舒适吗?高级和初级开发人员配对的主要目标应该是指导和学习。结论正如我上面所分析的,每种配对情况都是不同的,关键是要承认它们的差异并了解如何使它们为团队发挥更大的优势。编程愉快!