如何处理不logging工作的明星开发者?

有一个同事认真地知道他的东西,他是我曾经合作过的最聪明的人之一,但他:

  • 在他自己的主目录中的一小块区域工作,而不是在普通的CVS存储库中
  • logging他的代码
  • 不会评论他的代码,例如,3,500 SLOC的C没有评论和没有空白的东西,打破了事情
  • 通常会使事情过于复杂,例如使用三个彼此调用的shell脚本来完成一个简单的shell脚本可以完成的工作。

也许这可能是那些认为“如果我是唯一知道这个的人,他们不能摆脱我”的人之一?

有什么build议做什么?

顺便说一句,pipe理层了解情况,正在努力改变事态。

在我看来,有人做了上面描述的那些愚蠢的事情,不能成为明星开发者! 对我来说,他似乎是故意让事情变得更加复杂,以至于除了他自己以外,没有人能维护代码。 这让自己比他更重要! 跟他说话。 他必须改变它! 如果他不这样做,那就换一个真正的明星开发者吧!

我向你保证,即使在半年之内,他也不知道自己的代码是如何工作的! 消灭他,你可以节省大量的时间和金钱。

CVS部分很简单 – 一个“偶然”的硬盘故障会教给他一个人生的教训(确保你有一个备份,所以你不会实际上丢失代码)

这听起来像一个艰难的情况。

就我个人而言,我会放他走。 他可能是明星开发者,但他不是一个团队的球员。 如果你想成为一个好的产品,你需要有一个能够一起工作的凝聚力的团队。

没有文件是确保工作安全的(非常糟糕的)方法。

你可以做很多事情来解决这个问题:

  • 添加文档作为个人性能评估的要求。
  • 不要接受没有logging的软件。
  • 与开发人员说一句话,找出他不logging的原因。
  • 买一个很酷的文档工具。

播放你从电影中看到的坏警察/好警察素描。 让pipe理层成为坏警察,你是好警察。 让pipe理层要求他的工作超过杀毒文件和每分钟的ZIP备份。 但是,你提供他温和的文档(例如doxygen)和通常的源代码pipe理签入…

跟他说话?

如果他真的是一个“明星开发者”,他会记下你所说的话。

这可能不会在一夜之间改变他,但也可能是他完全没有意识到其他人不像他这样做。


编辑:

现在改变可能有点晚了,但在制定解决scheme时需要更多的信息。 这里的任何人都不可能真正build议让这个人单独依据这些观点去做。 如果你去年每天都在告诉那个人他需要改变或者他不在这里,那么你可以让他离开。 但是,我没有看到这方面的证据。

一个出色的开发者可以被教导使用源代码控制,评论和文档。 如果你在这里花费精力,那么你真的会有一个明星开发者。

听起来不像我的明星程序员。 所有优秀的程序员都知道代码格式化和源代码pipe理的使用。 听起来,虽然他自己取得了不错的进展,但是他阻碍了其他队员的进步,这对工作的完成可能会产生负面影响。 跟他说话,如果他拒绝改变他的做法,放他走。

你可能会把注意力集中在这个错误的领域,你有机会看到你的过程中的一些弱点。

  • 在他自己的主目录中的一小块区域工作,而不是在普通的CVS存储库中

一个简单的聊天可能就足够了,版本控制的好处说明了自己,任何“明亮”的人可能会对这些好处充满热情。 然而,它也可能是一个很好的机会来看看更容易使用和灵活性的替代版本控制系统(看看bzr和git)。 更好的是,让他参与到选拔过程中,如果他真的是一个“明星”,他可能会有很好的投入和更多的使用权。

  • 不logging他的代码

这听起来不像文档是你的过程的一部分。 人们会抵制不得不做额外的工作,如果没有一个明确的过程,那么你在谈论很多额外的工作。 文件真的需要吗? 如果是这样,是否有创build它的过程? 你应该有一个完全献身的人吗? 你应该至less有一个工具来促进它(也许像mediawiki一样简单)?

  • 不评论他的代码,例如3,500 SLOC的C没有评论和没有空白的东西了

三个字:同行代码审查。 除了显而易见的错误收益之外,这也可以提供一些同行的压力,这是一个强大的力量,可以是一件好事。 希望被同行自觉地产生所有权和质量。

  • 通常会使事情过于复杂,例如使用三个彼此调用的shell脚本来完成一个简单的shell脚本可以完成的工作。

再次,同行代码审查。 你提到pipe理层知道这个程序员的不足之处。 他呢? 如果人们不知道自己做事的方式有什么问题,那么改变和改善就相当困难。

也许最重要的是,通过提出改善开发stream程的计划(这不仅可以改善你的“明星”,而且可以改善团队中的其他人),你可以从pipe理层中为自己赚取一些金星。

作为一名明星开发人员,不仅仅是一名优秀的程序员,还有更多。 如果他没有团队技能,并且有意无视团队标准,那么他需要提出来。 如果他在与pipe理层交谈后拒绝遵守,也许他不适合你的公司。

如果他真的那么光明,你不能改变他的方式,你也不想失去他,但是你仍然希望你的代码被logging和评论,那么我的build议是让一个经验较less的开发者为他做logging和评论。 就个人而言,如果我是一个明星开发者,如果有人发表评论我的代码,我会觉得很愚蠢,最终我会开始自己做。 与此同时,没有经验的开发者可能会学到一两件事。

这个问题让我很紧张,因为当你描述的那个人听起来很匪夷所思的时候,我可以看到他自己的一点点。

我觉得我是一个非常优秀的球队,我很幸运能够成为一支非常优秀的球队。 但是,我确实使用了我的同事们不理解的方法,尽pipe我已经很努力地解释它们了。 只是有一个相当大的经验差距,这是我们任何人都没有反映。

文档是一个广泛而棘手的主题。 我试图按照干(不要重复自己)格言。 与代码分开的文档可以重复自己,所以它可能会过时,除非您放慢速度以保持最新。 我通常的做法是之后再打开它。

通常,我正在处理的问题非常棘手,以至于我可以提前计划和logging所有我想要的内容,但是当涉及到代码时,我经常发现我错了,不得不重新考虑这个问题。 所以,你可以事先logging一些东西,然后就这样做,只能用于非常简单的问题,在我看来。

无论如何,我认为这是一个很好的问题,答案并不简单。

这个人真的是摇滚明星吗? 真的吗? 仔细想想一下。 他聪明,但没有完成任务,或者他聪明,能够完成任务吗?

想想真的很难。

如果他真的是一个摇滚明星,那么也许你不应该惹他。 他用自己的过程制作出令人难以置信的令人难以置信的东西。 只是因为有一种不同的做事方式最适合你,并不意味着这会让他做出最好的工作。 不要试图让他屈服于你的过程,这很可能会杀死他的所有的迷人,你应该尝试find一种方法来适应他的工作方式。

如果他真的和你说的一样好,你不应该介意这样做。 如果不值得这样做,那么他确实不是那么好。 在这种情况下,你没有一个摇滚明星,你只是一个平庸的程序员,不喜欢玩规则。 那些家伙,你应该摆脱。 一个气质的摇滚明星通常是值得的,但是,由于他或她可以产生的质量。 那些人,你应该不遗余力地保持。

听起来像一个对程序员感到厌倦的明星程序员,并且把事情复杂化,使之变成一个挑战。 他会很快find更好的东西。

试图改变的东西? 你喜欢什么,一个logging不完整的工作软件或一个logging良好的垃圾? 有些人有能力编写软件,不需要任何评论,这不是一个可靠的质量指标。

恐怕你会失去一个好的开发者。

“Hi Star开发者,

只是一个非正式的非正式表态,告诉你从下周开始,我们将要求编写代码的文档,并在代码中提供有用的评论 – 这将是公司的政策,而且不会有例外“

从那时起,你只要处理这个失败,就像你将要面对一个不能按时打开的工作一样,在工作中不能停止失败,等等。底线是如果老板说文件,你的文件或者你的文件,不正确地做你的工作。

如果他这样工作,他不是一个明星开发者 – 伟大的软件开发人员明白可维护性是非常重要的。 从长远来看,你可能会为此付出沉重的代价,我会非常直接地认为这是多么严重,如果他不能开始调整,就让他走。 我曾经见过这么多次,这是一个定时炸弹。

老实说,我看到很多像这样的开发者,除非他们刚刚失学,他们不会改变。 我说现在切断你的无损,只有当他继续喷出更多不可维护的代码时,才会更难以解雇他:)

如果他真的很聪明,pipe理层很难摆脱他。

当然,整个项目可能会被closures,但无论如何,CVS和文档都没有用处。

没有一个pipe理者会让一个好的程序员只雇用一个坏的程序员。

告诉他,这将帮助在任何时候摆脱pipe理。

他想换工作? 他可以告诉pipe理层:“好吧,人们,一切就像你问我:登记,logging在你的控制之下,我完成了我的工作,我打包离开了。

球队能否成功与他脱钩? 如果是的话,推动这个问题,并拒绝接受任何没有正确logging或不符合其他标准的代码。 希望这会得到重点,但可能会让他生气,导致他退出。 如果队伍不能成功,那么你是不好的,直到你可以训练一个替补到他的技术水平,这可能是不值得的时间和精力。

+1 ocdecio – 如果他是一个明星开发者,那么他的代码应该基于这样一个高质量的devise,它自己的文件。

话虽如此,但令人沮丧的是,虽然他在技术上要求很高的领域非常出色,但他并没有将function交付给他人,只有你会知道这对你的组织是否有问题。

有一个“大师”可用可以是一个绝对的生命保护 – 或者至less它曾经是,或者StackOverflow使这个angular色是多余的?

在代码审查通过之前,不要让代码被释放,只有在代码中有足够的注释和/或文档时才允许代码通过。

编辑把它列入他的评价。 文件/评论代码可以给他的“改进领域”。

🙂

您还可以添加自动质量检查,以防止他检查代码,直到有足够的文档logging为止。

这就是说,如果你能说服他首先登记! (这是ESSENTIAL,IMO)

这里有很多人没有评论,所以呢? 在这里。 没有评论的文字代码是完全可能的,但仅仅是因为某人聪明而没有评论并不一定意味着他们正在编写识字代码。

所以让我们澄清。 你已经说过,他根本没有logging他的代码,无论是在评论中还是在单独的文档中,他都没有使用任何源代码控制。 怎么样:

  • 尽pipe缺乏评论,他的代码是否可以理解?
  • 你的团队是否使用他参与的任何问题跟踪(例如FogBugz,Bugzilla等)?
  • 他的代码正在testing吗?
  • 团队中是否还有其他人至less对他的代码是如何工作的?
  • 他是否愿意至less承认自己可以在与其他球队的合作方式上有所改变?

如果所有这些问题的答案都是“不”,那么你就有一个很大的问题。 只是聪明并不一定会使某人成为一个资产。 你有任何担保,他明天不会离开你的公司,或者乘坐公共汽车? 如果发生这种情况,你会受到怎样的伤害? 这值得冒这个风险吗?

我认为这在任何环境中都是非常典型的。 你如何找人做你想做的事? 这正是“如何赢得朋友和影响人”的全部内容。 戴尔·卡耐基不是操纵,而是pipe理人。

这听起来像他只是缺乏经验,需要一些经验和指导。

你认为你可以坐下来和他谈这些问题吗? 告诉某人他们做错了事似乎往往是错误的做法(特别是在当今西方社会,我们不想伤害别人的感受),但是我认为,你可以冷静而诚实地解释问题,通过他们说话。 如果这个人尊重你和你的意见,这是一个完整的另一个问题,并在上​​面提到的书中讨论过。 确保他明白这些是严重的问题。 而且,在将来的任何开发工作中,他都会被要求做这些事情,所以现在就练习它们是个好主意。

我不认为等到下一次performance评估是一个好主意。 把一堆负面的反馈意见堆积起来,一下子把所有的东西都传递出去,这只是一个坏主意,当我这样做的时候,我真的不喜欢它。

代码文档被高估。 CVS培训很简单。

一个好的类应该通过它的方法和属性来揭示它的目的。

在应用程序之外logging模型也更容易stream通和理解。

我会提请他注意,如果你不能解决它看起来像你会失去一个明星开发者。

编辑:糟糕 – 使用CSV而不是CVS,对许多import,我用svn嘿。

  1. 让他使用自动执行validation工具。 (请参阅我的回答:“ 如何向obsructionist提问? ”)

  2. 如果他过于复杂并且不使用SCC,他不是一个优秀的开发人员 – 这些东西是软件工程的重要组成部分。

  3. 在极less数情况下,他在algorithm等领域拥有不可替代的辉煌,让他在这方面工作,例如定义algorithm,并让一个真正的程序员来完成编码。

  4. 使用静态分析代码来理解和清理他的代码。

配对编程。 findhima对,将“完成”他的要求,你刚刚上市。 你将解决一个问题将源控制,文件,他的每一个动作问题,等等。你还用第一人的力量训练其他人

从你的描述来看,这个人显然不是明星开发者。 编程是一种团队运动,而那些与他人不协调的人不会为项目增加太多的价值。

就我个人而言,我可能不记得我6个月或更久以前写的代码,并非常重视某种源代码控制的变化的历史。

如果你和这个人进行了常规的代码审查,我想你会发现他并不像开发人员那样出色。

我同意这个线程上的大多数人。 把他放在热点的一种方法是有团队代码评论。

对于第一次代码审查会议,从开放的团队成员中select代码,并接受build议。 “明星”开发者将有机会看到代码审查如何工作,然后你可以安排他的代码接下来审查。 给他一些时间准备下次会议,到那时他至less应该评论他的代码。

代码审查的目的不是羞辱人,而是合作识别问题和改进的地方,但这将是把明星开发者置于热门位置的好方法。

在我看来,你需要放弃这个人。 这听起来像他的代码是不可读的,他绝对不是一个团队,也不是一个安全的球员。

让别人认为自己是不可或缺的,这也是一个非常糟糕的做法。 如果让他保持这种状态,他的做法会变得更糟,而不是更好。 当他离开的时候,对于每个人来说,你都会留下一大串纠缠不清的代码。 如果他不能塑造,你现在需要削减你的损失。

最后,保持这个开发者没有统治他,这是初级开发者的一个不好的例子。 如果你强迫他们正常工作,你就会冒着“为什么他而不是我”人群的不满情绪。 如果你不这样做,你会得到一些像你的明星一样工作的黑客。

总之,除非他非常迅速地塑造,否则是时候放弃他,为了整个开发人员的健康和健康。

我们在3年前开始当前的工作时遇到了类似的问题,我们的首席开发人员是牛仔。 他非常聪明,但很不稳定,他的一些东西有很好的文档logging,但是如此过于复杂,维护或者先编码,弄清楚他以后要做什么,他会抛出代码来看看会发生什么。

他大约在二十五年前离开了,当我们find他的一些旧规则时,它仍然在困扰着我们,在他的辩护中,这里的开发商店是如何运行的,在过去的三年中,我一直在讨伐改变这种心态。

当你成为一名明星开发者时,你就不再那么了解系统,代码,框架,架构等等

  1. 编写优雅,可维护,灵活,可读的代码
  2. 与其他人一起工作:使用源代码pipe理,以示例为主
  3. logging每个方法,类,对象等正在做什么
  4. 研究新的更好的方式为自己和团队做事

如果你不在这些层次上跟随所有这四个,你不是一个明星开发者,更不用说如果你拒绝尝试/学习使用它们,那么现在是时候以这样或那样的方式寻找其他就业机会,我听说饥饿的艺术家是受欢迎的与这个人的时间(整个误解天才的东西)

Interesting Posts