您如何解除牛仔编码器的武装?[关闭]


37

我发现了一个问题(团队中的牛仔代码),但它与“忍者编码器”的关系更大,而与我遇到的问题有关。

我有一个团队成员,他是“ 牛仔编码器 ”的真实代表。我确实知道不能改变人,但是是一种使他像“牛仔编码器”一样停止行为的方法吗?

他拒绝听取团队的意见,并且他最近停止了代码审查,单元测试,共享实施细节等。

是的,他可以快速“编码”,但是他的代码只是一个错误生成器。我和其他团队成员都处于“错误修复阶段”,其中80%的错误来自他的代码。我不想修复他的错误。管理层是盲目的,或者不想看到这一点,或者他们喜欢他的“速度”。

我(作为他年龄较小的同事,而不是老板)可以采取任何措施吗?

我该如何解除牛仔编码器的武装?

我觉得我是最后一个真正关心这个项目的人。


17
这个家伙需要修复自己的错误。为什么不是每个开发人员都需要进行代码审查?
程序员

8
他在谁的授权下停止代码审查?
奥塔维奥·迪西奥

14
所以...您没有人来管理这件事。那是你的问题,而不是牛仔编码器。
奥塔维奥·德西奥

3
如果真是这样,那么Scrum就是一个完美的过程。当所有人负责时,没有人负责,产品遭受了旁观者的影响。
奥塔维奥·德西奥

7
但是我们如何解除“密线”牛仔的武装……
里格(Rig)

Answers:


21

我看到一些选择:

  • 与您的关注者联系编码人员。必须将其作为具有特定意义的建设性批评来进行。在采取更大的措施之前,应该直接和私下提出问题,以使该人有改变的机会。
  • 收集信息和统计数据并将其带入管理。管理似乎并不在乎,但是无论如何都要努力通常很重要。可能产生的负面影响包括疏远其他不喜欢向管理层投诉的人。
  • 找到牛仔编码器的同伴并私下讨论。他(她)可能有更好的机会让对方听。
  • 要求在另一个团队工作。不会解决问题,但您会保持理智。至少要始终尽力而为,不要让它拖垮您。
  • 如果没人听,请离开组织。听起来环境很糟糕。

6

他拒绝听取团队的意见,最近他停止了代码审查,单元测试,共享实施细节...

代码审查不一定要求编码者将工作提交审查。

跟踪他的工作的一种简单方法是关注VCS历史,寻找他的签到位置。如果您担心他的代码,这是找到它的简便方法。获取比较历史记录,查看他的内容,看看是否有任何危险的信号跳到你身上。赶紧赶快签入他的签到,如果发现问题,可以回退提交并通过电子邮件将其发送给他。当您发现明显不对劲的地方时,即使是初级编码员,也可以叫出您的团队成员。

是的,他可以快速“编码”,但是他的代码只是一个错误生成器。我和其他团队成员都处于“错误修复阶段”,其中80%的错误来自他的代码。我不想修复他的错误。管理层是盲目的,或者不想看到这一点,或者他们喜欢他的“速度”。

代码来自需求。需求会导致可运行的测试,以验证是否满足需求。这些测试可以进一步细分,并且可以在进行更改以确认更改满足要求之前进行编写(红绿色重构; TDD的本质)。

向团队的构建服务器添加“代码覆盖率”指标(希望您有一个);如果没有,这是您的第一个问题。只需检查单元测试是否通过,就不会发现他的新非TDDed代码在没有单元测试的区域中出现的问题。在运行所有单元测试之后,理想情况下,构建服务器应该已经执行了每一行代码,但是实际上有些事情您无法进行单元测试。实际上,您仍然应该能够达到95%或更高的覆盖率(或从覆盖率中排除某些库或文件类型)。牛仔迟早会签入一些破坏构建的内容,因为他已将覆盖范围降低到阈值以下,然后您将他召唤出去。

就“速度”而言,速度是事物“完成”的速度,在正确完成之前才“完成”。您可以通过这种方式将其提交给经理。考虑一个汽车修理工,当经理带他的宝马去换油时,却忘了重新装上油底壳塞,结果所有新油都倒出来了,甚至还没有开车出车库。当然,换油只用了五分钟,但是当他的汽车发动机在回家的路上被抓住时,经理就不会在乎。他会担心技工错过了一步,这将花费他很多额外的时间和金钱来修理。现在,他要付钱给一位牛仔以真正快地完成工作,然后他 向团队的其他成员支付更大的款项,以正确完成工作。确实,继续让牛仔做他的事情的好处是什么?

我(作为他年龄较小的同事,而不是老板)可以采取任何措施吗?

叫他出去 当您发现他搞砸了的东西时,请向他展示他的代码是如何失败的,首先他是如何避免问题的(包括正确的设计,TDD,代码审查)以及结果是您将被要求或将被要求做什么修复他的破解代码。

我觉得我是最后一个真正关心这个项目的人。

响亮的喇叭声,指示灯闪烁,警报器哀号 -如果您确实确实是唯一一个在乎团队产生的代码质量的人,那么这里就有一个严重的问题。如果您感觉到您正在试图将整个团队踢着大喊大叫,进入良好编码的时代,那实在是太重了以至于无法承受,然后放弃它。如果公司中有另一个团队做得很好,请要求调动,否则就该死了。


5

转到管理部门,获取有关该一位开发人员产生的错误/问题的统计信息。向他们解释修复他们的错误会影响团队的生产力。如果确实80%的问题来自一个人,那肯定需要解决。只要您以他们可以同意的术语向管理层解释(即“浪费时间就是浪费金钱”),他们就会干预。

此外,该开发人员应修复他们自己的错误/问题,因此将这些问题分配给他们可能会有所帮助。您的团队不应该为这个人提供服务。


4

我(作为他年龄较小的同事,而不是老板)可以采取任何措施吗?

同行的压力和以身作则是唯一的好方法。最好的方法是由他们的老板/领导来完成。如果您不是他们的老板/领导,请与那些人/老板交谈。但最后,照顾它是他们的工作,而不是您的。确保您做得不错,并且一切都会顺利进行。


1
牛仔编码员可能不受压力的影响,如果管理层不了解他的真实影响,他们可能会被他的感知影响所蒙蔽。
mhoran_psprep 2012年

他可以在管理之前就很好地倡导自己的错误,这样,大的错误或问题对管理人员来说就显得微不足道了,但是最后,代码仍然毁了。这是管理层不关心的事情。
Adronius 2012年

2
@mhoran_psprep-当然可以。我并不期望他会成功,但我也认为,尝试以其他方式解决问题会带来负面后果,因此风险更大。对此大惊小怪是使自己被排斥的一种快速简便的方法,尤其是在OP对牛仔的看法不准确的情况下。
Telastyn

0

他拒绝听取团队的意见,最近他停止了代码审查,单元测试,共享实施细节...

您没有通过审查,测试和实施的书面文档路径吗?如果没有,您的问题就更广泛了。如果您这样做,那么这是需要升级的事情。


当然,我们有大量的流程和文件。但这是关于人们如何使用它们的。
Adronius

但是,如果没有获得相关的批准,任何事情都不应投入生产。您是在告诉我他规避了正常的变更控制吗?
temptar 2012年

不完全是,但是有点。他对代码进行了更改,然后执行“正式”步骤来进行代码审查=仅自己使用某种工具,因此代码具有“已审查”标志或询问其同伴(无关代码) “查看”他的代码。然后他在一分钟内“解释”了代码,然后就完成了。Huray,他去提交了更改。
Adronius 2012年
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.