如何处理慢性问题?

我的工作人员有一位开发人员长期超越最后期限,估计。 在每天的最后一周或两天的几个项目中,我会听到“应该在一天结束之前完成”。 这个开发人员做的很好。

我已经跟他谈过他的问题了。 他似乎真的很沮丧,并且纠正了如何纠正这些问题。

我的问题是:

  1. 什么样的惩罚通过期限是有效的?
  2. 我可以通过什么方式强迫这名员工自己动手(时间估计等)呢?

更新 :根据答复; 这是我所知道的。

  1. 惩罚是一个坏主意。
  2. 如果没有干预,员工无法解决估算问题是很自然的。
  3. 除非有公司的后果(失去合同),否则不要做最后期限。
  4. 利用可用的方法(敏捷,乔尔的清单),以帮助开发商更好地估计。

感谢您的链接和信息。 也感谢更新我的想法。

我不认为问题在于他错过了这些最后期限。

我认为在估计完成一项任务所需的时间方面,他有一个实际的问题。

让他开始记下他所说的任务将要花费的时间,以及他实际完成任务需要多长时间。 最终,这本期刊将成为他创造更好估计的一种指导。 一旦他估计得更好,他不应该感到匆忙或困窘。

有一个由Joel Spolsky撰写的有趣的文章: 基于证据的调度

1)打破了

当我看到一个以天,甚至几周为单位的时间表,我知道这是不行的。 你必须把你的日程安排分成非常小的任务,这些任务可以在几小时内完成。 不超过16个小时。

这迫使你真正搞清楚你要做什么。 编写子程序foo。 创build这个对话框。 parsingFizzbott文件。 个人开发任务很容易估计,因为你之前编写过子程序,创build对话框和parsing文件。

如果你是马虎,并select三周的大任务(例如,“实现Ajax照片编辑器”),那么你还没有想到你将要做什么。 详细。 一步步。 当你没有想到你要做什么,你不知道需要多长时间。

设置16小时的最大强制您devise该死的function。 如果没有详细的devise,如果你有一个名为“Ajax照片编辑器”的手势波浪三周function,我很抱歉成为打破你的一个,但你正式注定。 你从来没有想过要采取的步骤,你一定会忘记其中的很多。

重点是他(和你)应该从他的错误中吸取教训,并在下一次评估时加以考虑。

另外,如果你是一名开发人员,我会在一天结束时进行定期的代码审查,以更好地了解他的开发过程。

当然,更小的迭代和更细粒度的任务。 将最长任务持续时间设置为1天。 这是我们的规则。

如果你的第一个问题是要考虑怎样的惩罚,我认为你是一个失败者。 如果你觉得他的工作做得很好,你可能需要看最后期限/估计,看看他们是否现实。 谁来设置它们,如果有问题的开发者没有参与,那么这可能是问题的一部分。

我同意@OTisler的结合编程和可能的定期日常进度审查与你自己可以帮助他通过…虽然如果最后期限/估计是不现实的开始,那不是你的问题所在。

对几个具体任务进行更密切的监测应该突出说明问题所在。

什么样的惩罚通过期限是有效的?

没有。 如果你生气,他不会做这项工作,否则他会find另一份工作。 你应该帮他弄清楚为什么他的估计是closures的。 史蒂夫麦康奈尔有一本关于估算的书。 我会从那里开始。

我可以通过什么方式来协调这位员工自己的行为(时间估计等)呢?

通过帮助他find正确的方式来做出估计。

首先,确保你的要求是清晰的。

我不喜欢这么说,但根据我的经验,截止date通常是由于主pipe方面的要求不清或规定不够。 首先要做的是确保问题不是源于你,或者是由你加剧。

另外,确保你的要求是现实的,以及他的估计。

确保你自己的期望不会推动他做出不现实的估计,以满足不切实际的要求。

记住,你需要这样的要求,但是开发人员总是做出估计,而且不应该因为“我们能否更快地做到这一点”而摇摆不定,除非你也指定了被删除的function。

然后,确保他准确地跟踪他的时间/任务,这样你可以很好地了解项目正在进行的事情。

这个过程将显示缺乏适当的时间/任务跟踪,这可能最终成为改进的第一步。 如果在项目后不能看到特定项目花了多长时间,那可能是问题的原因 – 估计中没有足够的定义,或缺less在项目中期发现的“依赖”任务,但从未估计。

你必须知道在做什么准确地花费了多less时间,然后才能找出蠕变的位置,或者可以做些什么。

然后,看看他的估计失败,找出原因。 重新评估一个已经爆发的项目,把它变成一个项目本身 – 一个需要解决的问题。

一旦你确定自己的估计确实是问题的根源,那么就应该重新审视一下他和另一位开发人员的估计,然后找出原因。

这将帮助你找出问题的原因是什么。 对问题的深刻理解可能是实际的解决scheme。

最后,如果你真的达到了要受到惩罚或胁迫的地步,现在是时候解雇他,重新开始。

在某些情况下,惩罚和胁迫是对故意不当行为的适当回应。

但是,如果这个开发者正在积极地尝试做好,那么只会产生消极的态度和挫折,使情况恶化。

如果问题不能解决,而且你确定问题出在他身上,而不是你,那么是时候把他解雇,让一个能够按时完成工作的开发者。 当你的成本被炸毁,利润消失时,伟大的工作并不意味着什么。

好吧,这是相当普遍的 – 开发商乐观。 pipe理层的工作就是处理这个问题。 如果有人受到惩罚,那就是经理(你?)

我很高兴你至less问,看起来你已经从这个清单中得到了一些很好的答案,我希望他们能帮上忙,并且find一种方法来真正实施一些工作。

当我年轻的时候,我的第一个好经理这样处理:

首先,他让我提出了一个单项清单的任务,几个小时,并用一个非常自由的估计来估计每一个任务 – 不pipe任务多小,任何时间不应less于4个小时。

然后他看着他们,告诉我把我所有的估计加倍。 (开发人员,特别是年轻的开发人员,不要考虑到如果你幸运的话,你只有1/2的生产力,而其中的一半花费在你不期望的事情上做)。

然后,在制定他的时间表之前,他把我所有的估计翻了一番(没有告诉我)。

不pipe上面的进度要求如何,他都是这样做的。 一个好的pipe理者应该意识到,说需要在2天内完成,这是不可能的。

当我估计得更好的时候,我们都注意到并做了相应的调整。

经理的工作不仅仅是做一个项目,而是要build立一个团队。 通常情况下,这将需要某种培训。 这也是一个不是工程师的工程经理不能接受的原因,他们不能真正帮助这种事情。

一个项目或时间表的失败绝不是开发者的错(除了在一些慢性的情况下,他不是真正可以解决的,或者任何价值和需要被解雇的)。 经理在聘请开发者,信任他,pipe理他或者为项目配备人员方面做出了不好的决定。

而且,究竟是什么错? 我想如果经理不擅长项目的实施,他将需要有人指出…如果他的经理有什么好处,他会问为什么这么做,你做了什么来解决这个问题等等

雇用一个经理正在雇人来解决问题。 为了使开发人员生产力。 如果他不能使他们生产,他不是合适的人。

对你的问题:

  1. 如果你select惩罚错过最后期限的人,你将得不到好的结果。 他们会失去信心,感到沮丧。 如果你不断推动人们赶上最后期限,工作质量将受到影响,最终你会花费大量的时间进行bug修复。
  2. 为了提高他的时间估计,你可以尝试使用Joel Spolsky的基于证据的调度 ,这个调度有一个很好的反馈循环来提高估计结果。

但我有一些问题,我认为你需要考虑。

他比其他人晚吗? 如果是这样,为什么 – 是因为他是一个过于乐观的估计者或一个缓慢的工人? 过于乐观的估计很容易解决 – 只是按照上述基于证据的调度,将所有数字乘以一个因子。 如果他是一个缓慢的工人,为什么? 他会分心吗? 他是非常小心的产生非常低的缺陷代码? 他在工程解决scheme吗? 他不是有效地重新使用代码吗?

为了报告pipe理层次的进展情况,截止date是否重要,还是仅仅根据估计值进行的任意date? 如果后者你可以通过自己调整他的估计来解决这个问题。

什么样的惩罚通过期限是有效的?

你指出了这一点,错过了它。 通过最后期限的明显惩罚是死亡。 如果开发商在截止date之后仍然活着,“截止date”显然不是一个真正的最后期限。 你觉得用开放的语言让开发者承受压力是有趣的吗?

修复你的措辞。

动机

首先:阅读Peopleware

下一个。 你为什么认为惩罚将是一个有效的方式来pipe理应该是有创造力的人? 我认为你必须重新思考pipe理与团队的整体方法。

正如我所看到的,pipe理者首先也是最重要的angular色是确保开发人员具有创造性和生产力。 不是说他们是有生产力的。 这些小词汇有很大的不同。 为了创造性,你需要一个安全的环境。 通过不断受到最后期限和惩罚威胁的压力,你创造了安全的完全相反。

另外,作为经理,您需要准确的信息来决定。 这也需要一个安全的环境。 如果有诚实和坦率的惩罚风险,你将得到谎言和信息的缺乏。 作出决定的一个非常危险的基础。

估计

正如其他指出的那样,估计值是估计值。 在我们的团队中,我们根本不做任何个人估计,我们做一个团队的估计。 (我有点不愿意打电话给我们Scrum,但是大部分都是在模仿,如果没有的话)我认为这是一个非常好的估计方法:每个团队成员都有一个由0 ,1 / 2,1,3,5,8,13,20,40,60,100和估计任务时,每个开发人员select一张卡(卡是隐藏的,直到每个人都select了一张卡,以避免影响估计),平均选定的卡片作为估计。

注意数字越来越不准确。 这是由devise,因为大的估计是必要的不太准确。

对于我们的团队,我们select使用“理想男人日”这个单位进行估算。 我们中的任何一个人都能记得一个理想的日子还没有出现,但是当你知道如何将日历翻译成“理想的男人时代”,这是一个很好的基础。

正如Scrum所描述的那样,开发是在两周的时间内完成的,之后在生产环境中部署新版本。 在每次冲刺之后,我们将完成的任务的估计值的总和除以冲刺的计划人日数。 这个因素就是评估团队在两个星期内可以花费多less“理想的男人时光”的基础。

个别开发者完成的实际工作项目不需要估算。 第一个近似值总是1/2 – 1天才能完成。 如果这个估计结果是错误的,那么只需要找一个开发人员,一起来完成这个任务。 或者你在较小的任务中分解工作项目,以便分配更好。

设置里程碑,并尝试build议@OTisler 敏捷

我不认为你应该惩罚他。 只要让他了解如何做出准确的估计。

作为一名团队领导,我有我的团队成员告诉我,在截止date前完成Xfunction将是“没有问题的”。 然后,我通常会和他们坐下来,仔细研究一下我认为需要完成哪些任务和子任务才能完成function,以及开发人员认为每个任务需要花多长时间。

在我们做这个练习之后,把所有的任务和子任务估计加起来,开发人员在他们原来的估计中所花的时间肯定会花费更多的时间。 在开始做出更准确的估计之前,我通常只需要和他们进行几次练习。

令我惊奇的是,你只有这些家伙中的一个。

工程师估计需要花费多less时间是非常可怕的。 我敢打赌,如果你仔细看看其他开发者的估计,你会发现很多填充。 有时填充不是必需的,但是任务扩展到填充可用时间。

解决这个问题的方法是改变你对每个人的评估方式。 开发者在估计绝对时间方面可能不好,但在相对的时间它们相当不错。 因此,星期一,而不是“多长时间才能添加一个whoosiwhatsit?”,问“在不到一个星期的时间里你能做些什么?” 这成为他们本周的任务。

接下来的星期一,你看看它是如何去的。 “好吧,我在两天内安装了floogle,但事实certificate它影响了mcphee …所以这个星期我需要解耦这些人,这样才不会被覆盖。” 好的,这一周有他们的任务。

你可能会认为这不会有帮助,因为你还不知道什么时候该准备好。 确实如此。 你有两个select:

如果你需要一个最后期限,那么你必须迫使你的错误的开发人员像其他人一样填补他的估计。 不用花很长时间就可以掌握它,而且他很快就会花“2周时间写一些应该花费一天的东西”。

你的另一种select是交换虚构的估计更多的知名度。 从长远来看,这种方法可以让你的工作效率更高,工作更快乐。

所以开发人员做的很好,但估计交付的时间很差 我不确定你手上的处罚情况如何。

也许前进一段时间,让他引导你完成他的估计交付点的过程。 这可能是一个机会,问他为什么步骤X,Y和Z需要一定的时间。 他可能会发现自己修改了他的估计,只是以几乎肯定慢一点的速度进行练习。

问问自己:什么需要你的工作?

如果你只是盲目地将开发者(你知道不能给出好的估计)的估计通过pipe理线,而不是自己决定这个估计是否可以实现,那么你就没有做你的工作。

试着用“增值”来思考(我的一个老雇主用这个词很多,我讨厌它,但是在这种情况下它可能适合你)。 你加什么价值? 如果你只是在高层pipe理人员和开发人员之间传递东西,那么最终你不会赚钱。 你可以被删除,没有什么会改变。

我曾经拥有的最好的经理人员是通过另一个团队给他的一套要求来看的,并且直截了当地告诉他们,他们中有近三分之一是公牛,并且在他们看到这个名单之前就把它们移走了。 最糟糕的是我曾经让我写下所有这些额外的pipe理types的文档,而这些pipe理类文档都是我曾经要求我做的其他pipe理者(我真的有这样的印象,我确实是在为他做他的工作),没有甚至给我项目到期date,几乎没有上class。 他们都在同一家公司,很奇怪。

90小时是一个常见的短期项目截止date。 简单的方法是,而不是估计“你的时间”,你衡量另一个。 计算机程序员不应该为他们的项目做出时间估计,因为有证据表明,计算自己的时间会导致比观察另一个人更大的错误。