与不均​​匀的团队成员配对编程?

时间:2009-07-12 12:46:05

标签: agile scrum pair-programming

最近,我们在工作中遇到了一个问题,如果一个人自己编写一些代码,似乎与其他团队成员一起看着它并走了“嗯?那个丑陋,难以管理,我需要重写“

事实上,最近,我自己不得不重新考虑一周前写的东西,以便我能够添加我的(相关)功能。

我知道结对编程是实现这一目标的方法,但我们有一个不平衡的团队(3名成员)。由于我们的团队目前正在努力推进,我们真的没有时间进行同行评审(尽管我们可以进行配对编程,因为我们可以将其估算到我们的任务估算中)

我只是好奇人们如何建议我们在生成糟糕的代码时克服这些问题。

9 个答案:

答案 0 :(得分:14)

当你独自工作,并生成你的同事发现丑陋且无法管理并且需要重写的代码时,那么你呢:

(a)当你第二次看到它时,同意它们,

(b)不同意?

如果(a),则问题在于您自己编写代码时并未完全澄清代码。由于结对编程是唯一让你编写合适代码的东西,我想我会建议“奇怪的一个”应该适用于不涉及编写大量不良代码的任务:bug-hunting;也许写出测试代码,因为这往往有点不那么恶魔了。同时,努力提高你编写更好的代码的技能 - 也许几个月前对你自己的代码进行评论,并记下它的错误。

如果(b),那么你遇到的问题是表达你的想法的不相容方式。根据您的标准,代码可能并不坏,但这是相互不可理解的,在公司环境中这意味着代码不好。结对编程意味着你所写的是一种妥协,你们3中有2人理解,但这不是真正的解决方案。你需要就你对彼此的代码最困难的事情达成一些共识,并停止这样做。你们都迫切需要从“我的2位同事喜欢这段代码”开始考虑“代码质量”,而不是“我喜欢这段代码”。

无论哪种方式,您都需要编写代码以便于阅读,而不是为了尽可能快地完成即时工作。我个人通过尝试以我认为其他人可能表达和理解它们的方式来表达事物,而不仅仅是当时对我有意义的事情。最终它变得习惯了。当我编写代码时,我会为公众观众撰写代码,就像我正在为公众观众撰写这篇文章一样。好吧,所以在我的个人项目中,有一群人像我一样思考,而在工作中,这是一个像我的同事一样思考的观众。但原则是编写代码,好像有人正在阅读它。你向他们解释自己,而不是编译器。

并不是说我的代码是世界上最好的,但我确实认为我的第一份工作是在一家拥有30多名程序员的公司中受益,所以我看到了各种各样的思考方式。还有一些“什么不该做”的例子,其中一个程序员已经做了 nobody 其他人可以轻易理解的事情,因此最终可能被认为是坏事。只有3个人,目前尚不清楚2 v.1的意见是否意味着1是怪胎或合理的少数。当我做了一些事情,4或5个人可以瞥一眼并立刻说“eeew,不要那样做”,然后我开始真的相信这只是一个愚蠢的想法。

我还建议,如果您不被允许预算进行代码审查,请撒谎并作弊。如果你正在大量重写别人的代码,那么无论如何你都会有时间去审查它,你只是没有提供反馈,这是代码审查中值得的部分。因此,将评论隐藏在雷达之下 - 编写一个或三个函数,然后让同事查看它并立即给出关于它是否对它们有意义的反馈。使用显示器上的代码,一旦完成它就有助于进行对话,但是当他们有“流”时,或者尝试不要打扰人,或者进入冗长的参数。这不是结对编程,也不是正式的代码审查,但它可能会帮助你弄清楚你自己在做什么,这太糟糕了。

答案 1 :(得分:6)

我很惊讶您没有时间进行同行评审,但您有时间进行配对编程。后者不是一个更大的时间汇集吗?

我们公司只有三名开发人员,令我们惊讶的是,我们现在正在努力推进。如果我建议配对编程,我很确定我的老板会嘲笑我,因为这会被视为任务的工时数加倍,即使在实践中这不是它应该产生的结果。我们的同行评审不会超过一个小时,这是一个极端的情况。平均而言,我认为它们可能大约需要10分钟,而且每个开发人员一天只会发生一次或两次。

IMO你应该试试同行评审。你经常发现有问题的人(即编写质量较低代码的人)最终意识到他们需要付出更多的努力,质量会随着时间的推移而提高。

答案 2 :(得分:3)

如果你有三个开发人员而你们每个人认为其他人的代码都不好,那么你迫切需要同行评审。

答案 3 :(得分:2)

所以:

  • 你被推得非常努力
  • 您的代码质量很差

你认为这两者可能有关系吗?答案是确定时间表。

答案 4 :(得分:1)

一次配对所有三个。

制定一些编码标准。

为破解开发者使用笨蛋上限。

进行每日站立会议以传达进展。

每周两次尝试同行评审,如周二和周五。

答案 5 :(得分:1)

结对编程不必每天都是有效的。我每周一起工作一两个小时就看到了很好的结果。一种方法是配对A& B有一段时间,然后A& C,然后A& B ......中间有很多个人时间。

这也很大程度上取决于团队成员的个性和化学反应。三者中的两个可能在一起工作非常好,你想从中受益。

答案 6 :(得分:0)

你仍然应该配对。设置会话说每周1天并旋转对。这应该让您的经理满意并提高代码质量,改善沟通。如果您保持关于配对与单独编码中发生的故障的指标,您应该开始看到benfit并将其显示给您的经理,

例如,这需要x个工时,但在缺陷修复方面平均保存了y。此外,clode更清洁,下次我们触摸它时需要更少的时间来改变它。

从那里你将获得硬统计数据,你可以开始编写更多代码。

基本上你的故事和我的故事一样。

  1. 没时间做事。
  2. 发生错误。
  3. 急于解决(花更多时间)
  4. 转到1
  5. 你需要停止腐烂。

答案 7 :(得分:0)

  1. 代码评论
  2. 启用将强制您编写可读,标准化和可管理代码的Stylecop

答案 8 :(得分:0)

我们使用代码审查。此外还有一些单一任务:更改图表,安装一些东西......