我们的一个开发商不断编写代码,把它放到版本控制测试。我们的代码是痛苦的结果。

除了摆脱的开发者,我如何能解决这个问题?

编辑

我已经跟他谈过这些时间甚至给他书面警告

有帮助吗?

解决方案

如果你有系统地执行 代码评论 然后才允许一个开发者提交的代码,好了,你的问题大多已解决。但是,这似乎并不是你的情况,因此,这是什么,我建议:

  • 谈到开发。 讨论的结果对于其他人在团队。大多数开发商要承认他们对等,所以这可能是足够的。还指出,它是很容易解决中的错误代码那是新鲜在你的心于星期-老码。这部分意义,如果你有某种形式的 代码owneship 在地方。
  • 如果这不起作用之后的一段时间,尝试建立一种策略,这将使提交的越野车码不愉快的作者。一个受欢迎的方式是使人打破了建立负责家务创造下一个。如果你的建立过程是完全自动化,寻找另一个卑贱的任务照顾的替代。这种方法具有增加中受益的不确定任何人特别是使它更加可接受的每一个人。
  • 用纪律措施.根据大小队和你的公司,这些可以采取许多形式。
  • 火开发。 有一个相关的费用保持坏苹果.当你得到这里,开发者不关心他的家伙开发的,你已经有了一个人的问题,在你的手上了。如果工作环境中成为被毒死的,你可能会失去远为更多的生产力和人民的明智的-比这个糟糕的开发。

其他提示

如果你可以进行代码审查 - 这是抓住它的理想场所。

我们要求在合并到迭代主干之前进行审核,因此通常会捕获所有内容。

仪式殴打!对于每个虫子,鞭子一鞭!

(任何没有得到它的人的笑话)

作为一个很少测试自己代码的开发人员,我可以告诉你一件事让我慢慢改变了我的行为......

<强>可见性

如果环境允许推出代码,等待用户发现问题,然后基本上问“现在怎么样?”在对代码进行更改之后,没有真正的动机去测试自己的东西。

代码审查和协作鼓励您努力制作高质量的产品,而不是在您的同事处理'Widget Y'和'Widget Z'时提供'Widget X'

你的工作越明显,你就越有可能关心它的运作情况。

代码审查。每周一早上把你所有的开发人员都放在一个房间里,让他们把他们最引以为傲的代码成就从前一周带到会议中。

让他们成为众人瞩目的焦点,并对解释他们所做的事感到兴奋。让他们带上代码的副本,以便其他开发人员可以看到他们正在谈论的内容。

几个月前我们开始了这个过程,看到发生的次级质量检查的数量令人惊讶。毕竟,如果简单地要求开发人员谈论他们最为兴奋的事情,那么他们就会完全向人们展示他们的代码。然后,其他开发人员将看到质量错误并公开讨论他们错误的原因以及如何真正编写代码。

如果这不能让您的开发人员编写高质量代码,那么他可能不适合您的团队。

将其纳入年度审核目标。如果他没有实现,就不会加薪。

有时虽然你必须接受某人不适合你的团队/环境,但它应该是最后的手段并且很难处理,但如果你已经用尽所有其他选择,那么它可能是最好的选择。从长远来看。

告诉开发者您希望在2周内看到他们的做法发生变化,否则您将开始公司的纪律处分程序。提供尽可能多的帮助和帮助,但如果你不能改变这个人,他就不适合你的公司。

使用Cruise Control或类似工具,您可以使签到自动触发构建和单元测试。你仍然需要确保对他添加的任何新功能进行单元测试,你可以通过查看他的签到来做。 然而,这是一个人为问题,因此技术解决方案只能走到这一步。

为什么不和他说话?他可能实际上不会咬你。

  • 让他"照顾"的建立,并成为建立管理。这会给他的时间较少制定代码(从而增加每个人的业绩),并教他为什么一个很好的建立是如此必要的。

  • 强制执行的测试案例码不能提出没有单元的测试案例。修改的建立系统,这样,如果试验案件的不要编纂和运行正确,或者不存在,则整个任务签被拒绝。

-亚当

发布每个开发人员测试代码覆盖率的统计信息,这是在与他交谈之后。

以下是来自海棚屋的一些想法。

Intro
   What shall we do with a drunken sailor, (3×)
   Early in the morning?
Chorus
   Wey–hey and up she rises, (3×)
   Early in the morning!
Verses
   Stick him in a bag and beat him senseless, (3×)
   Early in the morning!
   Put him in the longboat till he’s sober, (3×)
   Early in the morning!

等。取代“醉酒水手”与“草率的开发商”。

根据您使用的版本控制系统的类型,您可以设置签入策略,强制代码在允许签入之前通过某些要求。如果您使用的是Team Foundation Server之类的系统,则可以为签入指定代码覆盖率和单元测试要求。

你知道,这是一个避免单挑他的绝佳机会(虽然我同意你需要与他交谈)并在内部实施测试优先流程。如果规则不明确并且所有人都知道期望,我发现你描述的并不是那么罕见。我发现做第一个测试开发方案对我来说效果很好,并且提高了代码质量。

他们可能过分关注速度而非质量。

这可能会诱使一些人急于解决问题以清除他们的列表,并看看以后在错误报告中返回的内容。

纠正这种平衡:

  1. 在问题跟踪系统中一次只分配几个项目
  2. 代码审查并测试他们拥有的任何“已完成”的内容如果有任何问题,请尽快与他们一起回来
  3. 与他们谈谈您对项目需要多长时间才能正常工作的期望

同行编程是另一种可能性。如果他与团队中另一位熟练的开发人员达成质量标准并且知道程序,那么这有一些好处:

  1. 有经验丰富的开发人员,他将了解对他的期望,并看到他的代码与满足期望的代码之间的差异
  2. 其他开发人员可以执行测试第一个策略:在为其编写测试之前不允许编写代码
  3. 同样,其他开发人员可以在签入之前验证代码是否符合标准,从而减少了不良签入的数量
  4. 所有这些当然要求公司和开发人员接受他们可能不会的这个过程。

似乎人们已经为这个问题提出了许多富有想象力和狡猾的答案。但事实是,这不是游戏。设计精心设计的同伴压力系统以“命名和羞辱”他不会找到问题的根源,即。为什么他不写测试?

我认为你应该是直接的。我知道你说你跟他说过话,但是你试过找出为什么他没有写测试?显然,在这一点上,他知道他应该,所以肯定有一些理由说明他为什么不做他被告知要做的事情。是懒惰吗?拖延?程序员以他们的自负和强烈的意见而闻名 - 也许他因某种原因确信测试是浪费时间,或者他的代码总是完美的而且不需要测试。如果他是一个不成熟的程序员,他可能不完全理解他的行为的含义。如果他“太成熟”了他可能会过于拘谨。不管是什么原因,请解决它。

如果确实归结为意见问题,你需要让他明白他需要将自己的个人观点放在一边,并遵守规则。明确表示如果他不能信任遵守规则,那么他将被替换。如果他还没有,就这样做。

最后一件事 - 记录您的所有讨论以及由于他的更改而发生的任何问题。如果遇到最坏的情况,你可能会被迫为你的决定辩护,在这种情况下,拥有文件证据肯定是非常宝贵的。

坚持他自己的开发分支,只有当你知道它已经过彻底的测试时才将他的东西带进行李箱。这可能是像GIT或Mercurial这样的分布式源代码管理工具优秀的地方。虽然SVN中增加了分支/合并支持,但管理它可能不会太麻烦。

修改

只有当你无法摆脱他或让他改变他的方式时,才会这样做。如果你不能让这种行为停止(通过改变或解雇),那么你所能做的最好就是让团队的其他成员免受他编码的不良影响。

如果您所在的地方可以影响政策,请进行一些更改。在签入之前进行代码审查,并将测试作为开发周期的一部分。

看起来很简单。使它成为一项要求,如果他不能这样做,请替换他。你为什么要留下他?

除非所有其他方法都失败,否则我通常不会提倡这一点......

有时,公开显示的开发人员错误计数图表可以应用足够的同伴压力来获得有利的结果。

尝试胡萝卜,让它成为一个有趣的游戏。
例如,Hudson的持续集成游戏插件 http://wiki.hudson-ci.org/显示/ HUDSON / +的连续+集成+游戏+插件

根据一些逻辑,例如每个功能,每个错误修复,每个开发团队,等等,将您的开发人员放在代码的分支上。然后,错误的签到被隔离到那些分支。在进行构建时,合并到测试分支,找到问题,解决,然后将您的版本合并回主分支。

或删除该开发人员的提交权限,让他们将代码发送给年轻的开发人员进行审核和测试,然后才能提交。这可能会促使程序发生变化。

您可以在代码中找到一个错误的报告,其中包含负责该软件的程序员的名称。

如果他是一个理智的人,请与他讨论报告。

如果他关心他的“声誉”定期发布报告,并将其提供给所有同行。

如果他只听取“权限”,请执行报告并将问题上报给他的经理。

无论如何,我经常看到,当人们意识到他们从外面看起来有多糟糕时,他们会改变他们的行为。

嘿,这让我想起了我在xkcd上读到的内容:)

您是指在办理登机手续前编写自动单元测试或手动单元测试吗?

如果您的商店没有编写自动化测试,那么他检查不起作用的代码就是鲁莽的。它会影响团队吗?你有一个正式的QA部门吗?

如果您都在创建自动化单元测试,那么我建议您的部分代码审查流程也包括单元测试。很明显,在您审核期间,根据您的标准,代码是不可接受的。

你的问题相当广泛,但我希望我提供了一些方向。

我同意菲尔的观点,第一步是单独与他交谈并解释质量的重要性。质量差通常与团队,部门和公司的文化联系在一起。

在将某些内容视为“完成”之前,将已执行的测试用例作为可交付成果之一。

如果您没有执行测试用例,那么工作就不完整了,如果截止日期在您记录的测试用例执行之前通过,那么他没有按时交付,结果将是相同的如果他没有完成开发。

如果贵公司的文化不允许这样做,并且它重视速度超过准确性,那么这可能是问题的根源,而开发人员只是回应现有的激励措施 - 他正在做的事情得到奖励很多事情都是正确的,而不是正确的事情。

让人清洁厕所。在陆军工作。如果你和一群吃了很多印度食物的人一起工作,那么他们就不会长时间排队。

但那只是我......

每次开发人员检查无法编译的内容时,都会在jar中放一些钱。在办理登机手续之前,你会三思而行。

不幸的是,如果你已经和他多次交谈并给他书面警告,我会说是时候把他从团队中消灭了。

您可以在此处找到一些有用的答案:如何让初级程序员编写测试?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top