如何向管理层证明平庸的开发人员正在伤害团队[关闭]
Posted
技术标签:
【中文标题】如何向管理层证明平庸的开发人员正在伤害团队[关闭]【英文标题】:How to demonstrate to management that mediocre developers are hurting team [closed] 【发布时间】:2011-01-16 04:52:25 【问题描述】:我在一家小公司“管理”一个开发团队,这个职位很不稳定。我说“管理”是因为虽然我分配工作并就他们的表现提供反馈,但我实际上没有办法管教个人。
我的一些团队我不知道该怎么办,他们无法独立工作,需要大量的手牵手,如果离开通常会对项目造成严重破坏,通常会导致失败。当失败确实发生时,我只能挽救项目并将其(有时一瘸一拐地)推过终点线。
这些开发人员不仅缺乏编程概念的技能,而且通常缺乏用代码解决问题的能力。像编写循环这样简单的事情对他们来说很困难,更不用说设计和实现问题的解决方案了。
我们尝试过结对编程、提供支付课程费用、购买书籍、将工作日的时间分配给培训,甚至花一整天的时间来培训团队。
另一位高级开发人员和我不知道该怎么做,但我们的工作效率因每天与这些人打交道而受到限制。管理层强迫我们给他们工作,他们的主要抱怨是事情做得不够快。
除了我自己和其他高级开发人员之外,我们的管理团队没有人直接与任何开发人员合作。管理层是非技术性的,他们相信每个开发人员都是平等创造的,我们显然需要更多的人参与这些项目以更快地完成它们。
我已经在准备一份包含“神话人物月”和“代码完成”部分的文档,以发送给管理层,希望通过统计数据来说明真正阻碍我们的是不得不拖着平庸的人完成开发周期。
还有哪些其他资源?书籍、文章、一般性建议,任何东西都会有所帮助。
【问题讨论】:
接近尾声:来吧!抓紧! 将此问题添加到我的收藏夹是不够的。我得把它设为壁纸。 该死,我应该投票结束,但我喜欢这个问题:( 您必须做的一件非常重要的事情是让管理层相信您和/或您的高级开发人员对谁被雇用(以及解雇或纪律处分)有发言权。如果您应该负责指导他们,那么您首先应该对他们是否是您团队的一员有至少一些发言权。 投票结束,主观和争论。如果人们只想发泄,应该是社区维基。 【参考方案1】:这里有另一个想法: 不要修复他们破坏的东西。通过告诉他们哪里出了问题以及如何修复(仅在一般情况下)和抄送管理,通过电子邮件将其发回以进行返工。请务必注意管理层的理解,这将如何影响您的最终期限。这会为您创建有关性能问题的文档,其中一些可能会在他们必须解决自己的问题时不再那么糟糕。
【讨论】:
【参考方案2】:只是一个想法。
我假设您使用 SVN 等源代码版本控制系统。所以制定审查提交和拒绝不良提交的政策。然后只显示其他经理拒绝提交的统计数据,以证明平庸的开发人员对公司来说代价高昂。
【讨论】:
【参考方案3】:我不久前读过这篇文章,内容是鼓励程序员想成为最好的。
Nerd Herding
【讨论】:
很棒的文章。良好的链接 +1 很好地认识到机会而不是障碍。【参考方案4】:Peopleware 是另一本应该加入您的书单的书。
但是,当我阅读它时,我发现它并不实用,因为公司中没有人愿意尝试它的建议。
【讨论】:
上次我遇到这种情况时——我辞职去了其他地方,现在与另一个真正有能力进行真正开发的开发团队合作要好得多。【参考方案5】:您提到您为您的团队“提供有关他们表现的反馈”。
所以:
-
与您的团队坐下来。
将此页面的打印件交给他们,并告诉他们您发布了有关他们的信息。
让他们阅读。
请他们帮助您解决问题。
聆听并写下来。
把它告诉你的管理团队。
【讨论】:
【参考方案6】:除非您与管理层有良好的合作关系,否则这根本不可能。根据我的经验,如果你试图强迫它,你可能会遇到麻烦。
【讨论】:
【参考方案7】:我的建议是这样的:
如果您是经理,那么您必须拥有与您的职责相适应的权利。这些权利包括对您下属的纪律处分。如果高层管理人员拒绝授予您这些权利,请拒绝承担该责任。
你不必对你的主管那么严厉,但这就是必须发生的事情的本质。
【讨论】:
【参考方案8】:有趣的是,没有人告诉你,也许你缺乏管理技能。
有一次,经过一年半的培训,我最终与无法编写循环代码的人一起工作。我对他们进行了培训,直到他们能够使用全功能的 Web 框架,并且只用了一个月。
也许你应该接受培训。
也许你应该阅读一份关于你的报告。
我不是说要攻击你。一点也不。我非常了解这个问题,因为我过去也未能管理团队。
但不要逃避,无论你在生活中读过多少好的实践文献,你主要负责团队中发生的事情。
在这种情况下,停止抱怨并开始工作。不是作为编码员,而是作为经理。
最后,我可能是错的。也许你做的一切都是对的。在这种情况下,您可以并且可能应该辞职。试图通过移动双手来防止飞机坠毁是没有用的,无论你有多强壮。有很多休闲团队会用你的技能创造奇迹,充分发挥他们的能力。
【讨论】:
我不明白为什么人们对你投了反对票。你提出了一个有效的观点,即从普通工程师演变而来的领导/经理几乎从未接受过任何有关如何管理人员的培训。古老的“你是一位伟大的工程师,因此你将成为一位伟大的经理”的谬论。 好吧,因为告诉寻求帮助的人也许是他造成这种情况的原因在政治上是不正确的。我必须说,我自己不喜欢被人这样说,但这通常是一种有用的电击。 感谢您指出这一点 - 我也没有得到反对票。我从来没有接受过任何管理培训。在没有任何经验的情况下,我被置于这个(不稳定的)位置。我完全承认我可能部分受到责备。我(不止一次)要求聘请一位真正的开发经理,他是有领导开发团队经验的人。请求似乎被置若罔闻。 我在manager-tools.com 找到了一些非常好的管理技巧,他们将播客分为有用的主题。也许你可以在那里找到可以帮助你的东西。 @Paul -- 谢谢你,我一定会去看看!【参考方案9】:我想知道这些人最初是如何进入公司的:
这些开发者不仅缺乏技能 有编程概念,但是 一般有能力制定一个 解决代码中的问题。
像写循环这样简单的事情是 对他们来说很难......
毫无疑问,贵公司需要在招聘员工方面投入更多的时间和精力,正如那句老话所说:欲速则不达。
现在,一旦您处于您所描述的那种情况,请完成您的报告,(正如其他人所暗示的那样)使其简洁并强调这花费了公司多少钱,提交并等待最好的(正如您所说的那样) “在实际管教个人方面没有任何追索权。”)。
【讨论】:
开发人员没有被纳入招聘流程,他们就是这样进来的。【参考方案10】:我们现在有一个工具可以测量我们的代码模块的复杂性。它在我们的 PL/SQL 模块上运行,但我相信在其他环境中也有可用的工具。
自始至终都有不同的部分,但当我们的几个关键模块被标记为“不可测试”时,这让管理人员大开眼界。
我们结合了有助于突出重复功能的影响分析工具,并将这一切打包为“技术债务”的评估。
由于我们可以逐个模块地展示这一点,因此很容易识别肇事者(我们做了,但没有报告)。事实上,该组织更倾向于改进,而不是指责。
(顺便说一句,现在所有代码都已提交审核,并且必须提供随附的代码分析。这里的情况肯定会变得更好。)
【讨论】:
【参考方案11】:问题是源于程序员缺乏技能或能力、态度问题,还是源于不提倡良好职业道德的企业文化?
如果是技能,你已经知道有些东西是你不能教的。如果公司愿意(而且看起来确实如此),并且你可以表现出改进,我会加强培训,看看哪些开发人员能适应这种情况。那些没有你的人将不得不放手。在你知道你将放弃一些现有的开发人员之前,我不会雇佣额外的开发人员。
如果是程序员的懒惰或其他态度问题,您必须说服您的管理层支持您采取纪律处分措施。记录所有问题,如Scott Vercuski 所述。逐渐淘汰那些不能胜任的程序员。让剩下的程序员知道他们应该学习好的编程技术和最佳实践,并加以使用。
如果您还没有这样做,请进行代码审查。有很多资源可以解释如何正确执行此操作。他们不应该大喊比赛,而应该将其视为产生预期结果的战略会议。讨论代码。如何改进?如有必要,在评论中编写一些新代码。
如果管理是问题,请告诉他们是问题所在,并向他们展示如何解决问题。但你必须雄辩而有说服力。您必须是他们的拥护者。写一篇关于这个问题的论文。进行演示并展示它。诉诸利润动机。
最后,尽你所能成为员工的最佳领导者。帮助他们。让他们畅通无阻,以便他们可以完成工作。你的部分工作是保护你的员工免受高层管理的政治影响,并维持一个体面的工作环境,这样他们就可以专注于做他们能做的最好的工作。换句话说,确保你的人可以信任你。
【讨论】:
对罗伯特感兴趣。你有关于“如何不进行代码审查”的任何链接或资源。我之所以问,是因为我相信前几天我遇到了严重错误……我想要外部文件,以便我(再次)去管理层时了解这位高级工程师。 (我什至甚至从我曾经工作过的另一位高级职员那里反弹了这个场景,他同意我得到的回应“似乎有点不对劲。”) @Jason:不确定您的代码审查中发生了什么,但这篇文章可能会提供一些见解:it.toolbox.com/blogs/puramu/… 不是我所希望的,但它确实指出了我们在审核过程中的其他基本缺陷。 (例如,没有“成熟”/非既得方作为领导审查的一方......)我将使用该链接与管理层讨论改进我们的代码审查流程,并使用我最近的个人经验作为一个为什么公正的调解员应该在那里的例子......【参考方案12】:保持报告简洁。不要罗嗦。把它放在他们在这个上损失了多少钱。
【讨论】:
【参考方案13】:我以前也遇到过这种情况,当然可以理解。我所做的是削减了一个小型的、独立的任务,这应该需要我或其他高级开发人员不超过 2 天左右的时间。对于这项任务,我将创建大量文档来确定解决方案应如何实施、任何数据库更改等。然后我会与开发人员坐下来,为他们提供任务的高级演练并将其分配给他们截止日期为 1 周。在一周结束时,您可以将他们的工作与他们的工作进行比较:他们是否符合规范?他们做得如何? QA 发现了多少错误?他们是否以任何方式破坏了构建或破坏过程?
一旦完成,假设他们失败了,您可以与他们进行直接而明确的会面,解释他们如何没有履行职责。再做一两次同样的事情,只要你在整个链条上记录和沟通,你应该能够将它们推出。这可能很苛刻,但听起来您需要有人站出来,而您只是没有合适的人来做这件事。
另外,请确保您参加新候选人的面试。
【讨论】:
【参考方案14】:书
代码完成:实用手册 Steve McConnell 的软件构建
是一个很好的资源,可以帮助学习最佳实践。
要求每个开发人员通过讨论阅读和学习这一点可能会有所帮助,但最重要的是量化结果。拿你自己和团队其他成员的薪水,然后计算你需要花费多少额外的时间来修复其他人的错误,以及开发人员一开始就把事情搞砸的额外成本。
然后展示一个由更优秀的开发人员组成的团队如何提高投资回报率。
【讨论】:
OP 已经声明他使用 Code Complete。还有什么好书?【参考方案15】:我的建议是实现错误跟踪器并分配任务。这将显示团队中任何人的生产力。第一次使用它时,我们实现了组织团队并衡量我们花在任务上的时间。我喜欢的一件事是,当有人分配任务时,它会向工作人员发送一封电子邮件,并将副本发送给其他人以检查该任务。
顺便说一句,我们使用了BugTracker.Net。
【讨论】:
我们有一个错误跟踪器和一个时间跟踪系统,但它们没有集成。我们也让个别开发人员输入他们在任务上花费的时间。我可能需要看看我们是否可以在错误跟踪器中跟踪完成分配之间所花费的总时间与估计的时间。 我认为这是员工的道德问题,您必须集中精力解决。 听起来是个每天花 8 小时的好地方……不!我们程序员什么时候变成工厂工人了!你的组织的人员流动率如何,你浪费了多少钱,因为你无法适应人性!在那里工作的人有没有高血压!你唯一能管理的就是血汗工厂。没有人愿意在那种环境中工作。哎呀,我的咖啡休息时间到了。 ;-)【参考方案16】:听起来你是在正确的方式。
如果你向他们展示严格的数字,他们会更清楚地看到事情 - 创建一个编码任务并将其分配给几个不同的程序员,让他们各自工作。让它自己可测试。
详细说明每个需要多长时间,代码产生多少缺陷。
向高层管理人员展示这些数字,他们现在应该被说服了。
【讨论】:
【参考方案17】:文档是你最大的资源......我的一位老经理告诉我“如果你不把它写下来,它就不会发生。”。如果您的开发人员给您一份完成任务所需时间的书面估计,并且经常(并且严重)错过这些截止日期,则应该记录下来。
你们有某种计时系统吗?还是开发人员记录他们的时间?如果他们说某个问题需要他们 X 天才能解决,而 X 天后仍未解决,您可以质疑为什么没有解决。
重申...文件是关键,如果您突然终止某人并且您没有足够的文件说明您可以进入诉讼领域的原因。您拥有的文档越多,管理层就应该很容易看出初级开发人员并没有发挥作用,应该被替换。
祝你好运,但我担心你的道路非常崎岖......我去过那里,这是一个漫长的过程。
【讨论】:
我们使用时间跟踪系统和错误跟踪工具,但我无权查看其他人的时间。我一定会开始更加努力地记录我的经历。 如果你收集了足够多的关于他们的估计的文档,你可以将这些估计提供给你的经理,并要求他们进行时间表比较,希望它会显示开发人员估计了 X 天并花费了 X+Y 天一致的基础,为您的决定提供更多弹药。 如果估计是问题,请意识到良好的估计需要时间。要估计一个编码问题需要多长时间,您必须深入了解需要更改哪些代码行,需要编写哪些类和方法等等,当然您需要考虑及时进行测试。好消息是,无论如何你都必须弄清楚这些事情,所以你实际上并没有花任何额外的时间来进行估算。以上是关于如何向管理层证明平庸的开发人员正在伤害团队[关闭]的主要内容,如果未能解决你的问题,请参考以下文章