在Vineti中进行配对编程

图片

自从我从莫斯科搬到埃里温生活和工作以来,已经过去了将近一年。 在这个故事中,我不会告诉您关于我在这个美好城市中的生活(这里很酷),而是关于更多平凡的事情。 即,关于我们在Vineti开发产品时采用的实践。

如果您仍然有兴趣,那么欢迎光临。

在Vineti,我们使用极限编程方法,并积极使用结对编程。 当我来到Vineti时,极限编程对我来说是陌生的和陌生的东西,但是经过这种风格的一年发展,我可以说现在为我编写代码已经变得不太方便和高效了。

当您旁边有一个人仔细观察您所写的内容时,该代码非常可读。 同样,在编写代码的过程中,在过程参与者之间进行了培训和知识转移,从我的角度来看,这是最有效的形式。

碰巧那些没有在实践中使用过这种方法的人会感到尴尬和不适,因为您必须不断与合作伙伴进行交流并在严密的监督下编写代码,但是随着时间的流逝,您知道合作伙伴就在这里,帮助你,不伤害你

方法的好处


与标准方法相比,结对编程的优点是多方面的,但是,从我的角度来看,最重要的是过程参与者之间不断地传递有关应用程序代码的知识。 您可以构建配对和轮换(更改参与的工程师),以便每个工程师都具有应用程序所有部分的完整知识。 如果您需要维护大量的代码库,这尤其重要。

下一个优势是一个相当有效的学习过程。 您可以配对,以便将经验丰富的工程师与经验不足的工程师始终配对。 对于高级开发人员,规则是“如果您想知道一些知识,请尝试教另一个。” 还有机会加强您的沟通技巧,因为您将不得不经常解释很多内容。

在Vineti,我们在结对编程过程中使用TDD ,这使我们可以将一个大型而复杂的任务最初分解为小部分,并在编写代码之前仔细考虑解决方案的体系结构。 另外,在您需要合作伙伴的情况下,您可以与他们讨论选择的解决问题的方法,并在工作过程中分析其最优性,而无需计划团队内部的其他会议,对解决复杂的问题有很大帮助。

最后,结对编程与TDD方法很好地结合在一起。 在Vineti中,通常一名工程师编写测试并尝试描述尽可能多的情况。 当第一位工程师告诉您如何简化功能代码时,第二位工程师将编写功能代码,从而实现红绿重构圈。

缺点


这种方法的缺点是,我可能会认为设置流程本身很复杂,而且需要成对地正确选择参与者,这需要团队负责人做出额外的努力,并且需要对团队所有成员的技能和习惯有透彻的了解。
如果我们谈论人为因素,那么对于目前在联合工作期间结对的工程师来说,有一种通用的上班,午餐等方式非常重要。 这并非总是容易做到的,因此有必要在此基础上形成一对。

保持共同的标准


有效的配对编程的条件之一是存在一种严格且最标准化的方法来在命令内编写代码。 例如,我们使用eslint,prettier,rubocop,以便在编写过程中代码具有相同的样式。 作为开发环境,我们使用VS Code和终端iTerm c zsh。 通过这种标准化,您可以快速地成对轮换工程师,同时最大程度地缩短适应时间。

我认为,夫妻在完成一项任务后需要轮换。 这样可提供最低的有效旋转。 角色转换可以在一天内发生,但这取决于一对经验丰富的工程师的意愿。 重要的是不要迷失方向,不要自己解决所有问题,因为没有换班可能会对夫妻整体的效力产生负面影响。

与旧金山结对编程


我个人曾与Vineti美国办事处的一位同事进行过远程结对编程的经验,为此,我们将Live Share插件用于VS Code。 经验很有趣,但是与标准对编程相比,这种情况有几个缺点。 首先是缺乏直接的个人交流。 就我而言,这在时区上也有很大的不同。 我几乎要整整一天都要写代码,对我个人而言,这很累。

如何适应结对编程


尝试利用其他公司的经验,并最终在公司内部发展您的方法。 不幸的是,不存在方便和为所有人服务的理想选择。

我也不确定这种方法是否适用于所有公司。 例如,如果您的团队中只有3个开发人员,那么显然将无法从结对编程的实施中获得很多好处。 或者,如果团队中的超重过多,则很难建立良好的配对。

Source: https://habr.com/ru/post/zh-CN471138/


All Articles