结对编程以及如何让你成为一个更好的程序员

发布于:2021-01-20 10:53:08

0

101

0

结对编程 程序员

多年来,两个开发人员共享一个工作站的结对编程已经变得越来越普遍,争议也越来越小,但是许多人仍然没有亲自尝试过。在成对编程中,一个参与者是实际编写代码的“驱动程序”,另一个是“导航员”,他在完成工作时检查驱动程序的工作并关注全局。这两个角色每隔几分钟切换一次角色,并在整个过程中互相交谈。

当然,这也可以使用Google Hangouts和屏幕共享之类的工具远程完成。

研究表明,与早期的反对意见相反,这种做法在“工时”方面的花费将是两倍,与此相反,这种编码方式实际上使开发过程仅增加了15%的时间,而作为回报,则减少了15%的错误和缺陷。使用结对编程的大多数公司,都发现收益远远超过成本。

但这对您作为开发人员意味着什么?

除了在工作场所中使用之外,许多人还发现结对编程是教与学的绝佳工具。开发人员称其为“最喜欢的教学方式”。

这是因为这是一种完全沉浸式的学习体验:即刻即听,看,做和接收反馈。

两名不同技能水平的程序员

当大师和新手配对时,新手处于学习和快速成长的最佳位置。当主控者是驱动程序时,新手不仅观察正在产生什么代码,而且观察它是如何产生的。该过程使您可以深入了解主开发人员的思维过程,快捷方式和风格。这类似于看着美食厨师做饭,而不是看食谱。当驾驶员在编码时进行叙述时,新手可以询问问题并立即进行讨论。

当需要新手开车时,他将由经验丰富的开发人员陪同他进行监督和指导。他可以无所畏惧地犯错误,并将其作为学习的时刻。

对于新手来说,好处是显而易见的,但是熟练的编程人员也可以从中受益。他接触到新的思想和想法,并批判性地思考自己的选择,以便他可以清楚地解释它们。这也减少了专门用于培训和教学的时间,而这些工作和教学不带工作。他们俩在教书和学习时可以一起做真正的工作。

两位技能水平相似的程序员

当两个具有相似技能水平的开发人员配对程序时,还有其他好处。例如,此技术可有效地用于新开发人员的入职。尽管他们的技术技能可以同等地匹配,但一个人拥有更多的机构知识,可以将这些知识传授给另一个人,同时成对地完成工作。

如果将具有相似技能水平和相似机构知识水平的两个程序员作为日常操作的一部分进行配对,则教与学的效果可以继续,并且最终产品的质量可能比开发人员独立工作的质量更高。当开发人员进行编码时,很容易迷失杂草和问题的细节。如果您身边有导航员,他可以对工作进行更全面的了解,相互交流想法,并抬起头来思考解决问题的替代方法。

有人指出:“当您考虑逻辑时,您几乎不会犯错。在配对编程中,导航器会在您使用时清理它们。这是与他人分享您知道自己不知道的事情的非正式机会,反之亦然。”

无论您身在何处,总会有人知道您所不知道的事情。实际上,每个人都知道您不了解的事情。而且你知道别人不知道的事情。协作一直被视为技术工人分享经验,技术和思想的一种方式。编程也不例外。

配对编程和联网

虽然在确定配对程序时当然不是主要的考虑因素,但编程合作伙伴可以是有效的参考或网络联系者这一事实不容忽视。当您与某人定期进行编程配对时,他们将对您的工作方式,优势,解决问题的方式以及作为团队成员进行协作的方式具有独特的亲密知识。您可以为他们做同样的事情,通过参考和推荐来帮助他们增强彼此的技能并促进彼此的职业发展。

您想配对程序,但需要一个伙伴吗?可以通过访问pairprogramwith.me来问清楚,您可以在其中下载徽章以放置在博客或主页上,以表明您愿意配对编程请求(并注意其他开发人员的徽章)网站!)。

或加入一个像这样的Meetup组,该组将保证您“会见友好的同伴进行连接,黑客攻击和协作”:

如果以前从未尝试过配对编程?

1.学习新的花样和技巧

2.教别人并提高您的沟通能力

3.获得对您正在做的事情的反馈和见解

4.结交新朋友,并喜欢和志趣相投的人闲逛。

您可以在此处浏览所有成对编程的Meetup。

最后,如果您有疑问并需要答案,请按常规进行操作:Software Engineering  Stack Exchange社区,该社区具有专门用于配对编程问答的标签。

入门和升级

作为初学者,您应尽可能利用成对编程的机会。上面的链接可以帮助您开始使用,并且如果您在开源世界中有您欣赏的导师或联系人,也许他们愿意与您在当前项目中进行一些配对编程。除非您提出要求,否则您将无法知道,如果有人说是,您将获得的好处具有巨大的潜力来促进您的职业发展。

例如,Cloud Foundry是一个开源项目和社区,其中所有代码都是成对编写的。“我们发现这不仅可以极大地提高开发人员的士气和工作/生活平衡,而且可以提高代码质量。”

如果您正在寻找实习或新工作,请注意那些鼓励对新团队成员进行结对编程的公司。这种做法很可能使您获得更好的成功,更快地集成到团队中以及作为开发人员获得更大的增长。