当驾驶员和观察员具有不同的技能水平和经验时进行配对编程


30

我知道结对编程是一种敏捷的软件开发技术,其中两个程序员在一个工作站上一起工作。一个是驱动程序,编写代码,另一个是观察程序,查看键入的每一行。

但是我只是想知道这种策略在这种情况下是否仍然有效。例如

  • 如果他们有非常不同的编程技能水平。
  • 如果一个人从未在问题领域经历过,而另一个人则在经历过。
  • 如果他们的编程技能水平低,还可以吗?

您能建议上述情况下的结对编程策略吗?


13
确保两个人就谁的技能水平较高并应该指导另一个人达成共识。如果不清楚这些角色/技能水平,则配对编程可能无法正常工作并导致冲突。
Giorgio 2013年

但是,如果按照您的建议进行操作,这将是一个巨大的学习机会。
Mawg 2015年

Answers:


27

假设这对中较有经验的人具有指导另一个人的气质,将在语言或问题领域经验不足的人与有经验的人配对将有助于知识转移。经验不足的人将有一位指导者,以指导他们了解团队的语言,领域,应用程序以及最佳实践或惯例。

C2 Wiki上有一个有趣的关于使用结对编程进行知识转移的摘要。被任命为团队指导者的高级人士从初级程序员那里学到了很多东西,并且由于与更多初级,经验不足的软件开发人员结伴而获得的知识甚至有所增加。还有一些关于专家程序员与领域专家配对的故事。


同意 我在团队中有一个大三,结对编程极大地提高了他的代码质量。但是,配对审阅他的代码也非常有帮助。
苏珊(Sulthan)2013年

2
您只需要注意,高级人士不是100%的时间都是驾驶员。
HLGEM 2013年

13
@HLGEM我什至会争辩说,经验不足的人大多数时候应该是驱动程序,而经验丰富的人正在审查代码中的缺陷和样式,或针对此代码编写测试用例。
Thomas Owens

1
我同意@ThomasOwens;缺乏经验的合作伙伴会比其他方法更快地提高他/她的“经验”,同时允许他们与更高层次的伙伴分享自己的想法和见解。不久之后,他们的熟练程度就会大大提高。
埃里克·金

1
我想知道这是否会使高级开发人员更有义务实践他们的讲道?
JeffO

16

这正是用例对编程的目的:在老胡须和年轻蚱hopper之间共享经验。

这是双向的分享:敏捷昆虫对风湿性大脑有很多教导。


1
尽管您可能认为我是一个人,但我还是对“风湿性大脑”大加赞赏...
Marjan Venema

1
我认为“用户故事”一词在这里不适用。用户案例描述了软件的业务需求。
康拉德·鲁道夫

是的,我认为他的意思是“用例”。
约尔格W¯¯米塔格

不赞成投票:没有关于如何处理上述案件的策略
try-catch-finally

10

当我晋升为目前的团队时,我是J2EE的新手,但我是该领域的专家。我的大四(新的团队负责人)精通J2EE,但不擅长平台。

我认为我在这四个月中通过结对编程对Java2EE有了更多的了解,而不是读一本书,团队负责人也了解了该平台。

两者之间的经验差距是配对编程恕我直言的关键。


2
同意 我可以想象自己进行结对编程,而且我认为这毫无意义。差距正是造成不同观点的原因,这些观点与使四只眼睛在可能性图上的涵盖范围更大有关。两个具有相同技能和经验的人会看到彼此相同的东西,却没有任何好处。
Jimmy Hoffa 2013年

5

我将描述我的经验,并尝试从中获得一些“策略”。

我曾经与一个完整的非程序员进行配对编程。他是我们开发的软件产品主题方面的专家。相反,我在问题领域没有经验。他现在也是我的主管(我知道这听起来很奇怪:)

这种方法的主要好处是,我不得不从他的知识领域来解释许多事情的实现,从而确保实现的正确性和他对过程的理解,这意味着他明白为什么要花这么长时间。

另一个好处是可以轻松地专注于任务,而不会分心(哈哈,想象一下在老板的鼻子前打开Twitter)。

然而,有时甚至是令人生畏的,因为即使是下午茶时间也变得相当“分散工作”(不是从他的观点;要求休息等等只是不方便)。

因此,这并不是真正的成对编程,因为他几乎无法像输入的那样检查代码。但是,这似乎是一个明智的策略(至少有一段时间)。由于开发方法(我的意思是,没有涉及像OOP模式之类的复杂软件设计技术)和主题的相对简单性,它最终根本无法工作。如果我们必须开发一个编译器,这是行不通的。我相信,如果非程序员观察员参与了明确定义的小片段的开发过程,它仍然可以工作。说,让他看一个函数的编程“通过给定算法从Y和Z计算参数X”是可以的,但是让他看整个系统的设计过程可能并不那么好(这意味着软件体系结构的开发,即类,

如果他具有一些基本的程序员技能,我认为它会更好,因为我不必解释“数组是什么”。

希望能帮助到你 :)


这是一个很有经验的解释!
Sakares

2

以我的经验,如果两个程序员的技能水平都不高,那可能是一个问题。在这种情况下,通常会尝试复制粘贴编程。我认为最好不要将两个新手程序员配对在一起,直到他们达到团队确定的特定级别。

否则,假设两个人准备好共享他们所知道的内容,那么结对编程就可能是一个好主意。这不仅是使每个人都了解源代码的好方法,而且还是进行新想法和讨论的好地方。


低技能的开发人员在自己编程时不太可能复制和粘贴?当没有人观看时,通常会发生这种情况。
JeffO

1

只要团队成员互相尊重,结对编程就可以受益,无论程序员的经验水平如何。即使初级程序员只是在经验丰富的程序员之前发现了一些语法错误(我们都犯了!),在编译代码时仍然可以节省时间。

我还认为,这可以使程序员对团队其他成员的能力开阔态度,尤其是如果他们有开放的胸怀并期望每个人都能教给您一些知识。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.