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

Mez*_*Mez 6 agile scrum pair-programming

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

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

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

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

Ste*_*sop 14

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

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

(b)不同意?

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

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

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

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

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


Tro*_*our 6

我很惊讶您没有时间进行同行评审,但您有时间进行配对编程.后者不是更大的时间下沉吗?

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

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

  • @troubadour:结对编程不过是浪费时间.当一个人输入代码时,另一个人已经在考虑下一个要做的过程,如果它符合解决方案的其余部分则会编程.结对编程可能看起来浪费时间,但实际上事实证明,由一对编写的代码更稳定,更适合整个应用程序. (3认同)
  • 你不需要在同行评审中冒犯别人. (2认同)
  • 当他说"犯罪的人"时,他的意思是人们犯了错误而不是有人被冒犯. (2认同)