There is a colleague who seriously knows his stuff, he is one of the brightest I've ever worked with, but he:
有一位同事认真地了解他的东西,他是我曾经合作过的最聪明的人之一,但他:
- works in his own little area of his home directory rather than in the common CVS repository
- doesn't document his code
- doesn't comment his code, e.g. 3,500 SLOC of C with no comments and no blank lines to break things up
- often overcomplicates things, e.g. uses three shell scripts that call one another to do the work that one simple shell script could do.
在他的主目录的小区域而不是在公共CVS存储库中工作
没有记录他的代码
没有评论他的代码,例如3,500 SLOC of C没有评论,没有空行可以解决问题
经常使事情过于复杂,例如使用三个相互调用的shell脚本来完成一个简单的shell脚本可以完成的工作。
Maybe this possibly is one of those people who thinks "if I'm the only person who knows this, they can't get rid of me"?
也许这可能是那些认为“如果我是唯一知道这一点的人,他们无法摆脱我”的人之一?
Any suggestions on what to do?
关于该怎么做的任何建议?
BTW Management knows about the situation and are trying to change things.
BTW管理层了解情况并试图改变一切。
40 个解决方案
#1
In my opinion somebody doing such stupid things as you have described above can't be a star developer! To me it seems like he intentionally makes things more complicated as they are, so that nobody else than himself can maintain the code. This makes himself more important than he really is! Talk to him. He has to change it! If he doesn't, replace him with a real star-developer!
在我看来,像你上面描述的那样做蠢事的人不可能成为明星开发者!对我来说,似乎他故意让事情变得更复杂,所以除了他自己以外没有其他人可以维护代码。这让自己比实际更重要!跟他说话。他必须改变它!如果他不这样做,请用真正的明星开发者代替他!
I promise you, in even half a year he will not know how his own code works! Fire him and you can save a lot of time and money.
我保证,即使是半年,他也不会知道自己的代码是如何运作的!解雇他,你可以节省大量的时间和金钱。
#2
The CVS part is easy - an "accidental" hard drive failure will teach him a lesson for a life (make sure you have a backup though so you won't actually lose code)
CVS部分很容易 - “意外”硬盘驱动器故障会教他一生的教训(确保你有备份,所以你不会丢失代码)
#3
That sounds like a tough situation.
这听起来像是一个艰难的局面。
Personally, I would let him go. He may be a star developer, but he isn't a team player. And you need to have a cohesive team that can work together if you want to make a good product.
就个人而言,我会让他离开。他可能是明星开发者,但他不是团队合作者。如果你想制作一个好的产品,你需要有一个团结一致的团队,可以一起工作。
#4
Failing to document is a (very bad) way to ensure job security.
未能记录是确保工作安全的一种(非常糟糕的)方式。
You can do several things to counter this:
你可以做几件事来解决这个问题:
- add documentation as a requirement for the personal performance reviews.
- don't accept software that isn't documented.
- have a word with the developer and find out why he doesn't document.
- Buy a cool documentation tool.
添加文档作为个人绩效评估的要求。
不接受未记录的软件。
与开发人员说一句话,找出他没有记录的原因。
购买一个很酷的文档工具。
#5
Play the bad cop/good cop sketch you have seen from the movies. Let the management be the bad cop and you be the good cop. Let the managament ask for over-kill documentation and per-minute ZIP backups of his work. But you offer him moderate documentation (by doxygen for example) and usual source control check-ins...
播放你从电影中看到的坏警察/好警察素描。让管理层成为坏警察,你就是好警察。让管理者要求他的工作过度杀戮文档和每分钟ZIP备份。但是你提供适度的文档(例如doxygen)和通常的源代码控制签到...
#6
Talk to him?
跟他说话?
If he really is a "star developer" he'll take note of what you say.
如果他真的是一个“明星开发者”,他会注意到你说的话。
It may not change him overnight but it might be that he is just completely unaware that other people dont get it quite like he does.
它可能不会在一夜之间改变他,但可能是他完全没有意识到其他人不会像他那样得到它。
Edit:
It's probably a bit late to change now, but more information is needed in working out a solution. It's impossible for anyone here to actually suggest letting the guy go based on these points alone. If you've been telling the guy every day for the last year that he needs to change or he's out of here, then you can let him go. However, I see no evidence of that.
现在改变可能有点晚,但在制定解决方案时需要更多信息。这里的任何人都不可能实际建议让这个人单独根据这些观点去做。如果你去年每天都在告诉那个他需要改变的人,或者他已经离开这里,那么你可以让他离开。但是,我没有看到任何证据。
A brilliant developer can be taught to use source control, comment and document. If you spend the effort here then you truly will have a star developer.
可以教导出色的开发人员使用源代码控制,评论和文档。如果你在这里花费精力,那么你真的会有一个明星开发者。
#7
You might be focusing on the wrong area here, you are being provided with an opportunity to see some weaknesses in your process.
你可能会把重点放在这里的错误区域,你有机会看到你的过程中的一些弱点。
- works in his own little area of his home directory rather than in the common CVS repository
在他的主目录的小区域而不是在公共CVS存储库中工作
A simple chat will probably suffice here, the benefits of version control speak for themselves and any "bright" person would likely be enthusiastic about those benefits. However it may also be a good chance to look into alternative version control systems that allow greater ease of use and flexibility (take a look at bzr and git). Better yet, get him involved in the selection process, if he really is a "star" he'll probably have good input and be more vested in its use.
一个简单的聊天可能就足够了,版本控制的好处不言而喻,任何“聪明”的人都可能对这些好处充满热情。然而,它也可能是一个很好的机会来研究更容易使用和灵活性的替代版本控制系统(看看bzr和git)。更好的是,让他参与选拔过程,如果他真的是一个“明星”,他可能会有很好的投入,并且更多地投入其使用。
- doesn't document his code
没有记录他的代码
It doesn't sound like documentation is part of your process. People are going to resist having to do extra work and if there isn't a defined process then you're talking about a lot of extra work. Is documentation really needed? If so, is there a process defined for creating it? should you have someone entirely dedicated to it? Should you at least have a tool to facilitate it (maybe something as simple as mediawiki)?
听起来不像文档是您的过程的一部分。人们会拒绝做额外的工作,如果没有明确的流程那么你就会谈论很多额外的工作。真的需要文档吗?如果是,是否有为创建它而定义的流程?你应该有一个完全致力于它的人吗?你应该至少有一个工具来促进它(也许像mediawiki一样简单)?
- doesn't comment his code, e.g. 3,500 SLOC of C with no comments and no blank lines to beak things up
没有评论他的代码,例如3,500 SLOC of C没有任何评论,也没有空白行
Three words: peer code review. Outside of obvious error-catching benefits, this also can provide some peer pressure, which is a strong force and can be a good thing. Wanting to be perceived well by your peers self-generates ownership and quality.
三个字:同行代码审查。除了明显的引人注目的好处之外,这也可以提供一些同伴压力,这是一种强大的力量,可以是一件好事。希望被同行认识得很好,自我产生所有权和质量。
- often overcomplicates things, e.g. uses three shell scripts that call one another to do the work that one simple shell script could do.
经常使事情过于复杂,例如使用三个相互调用的shell脚本来完成一个简单的shell脚本可以完成的工作。
Again, peer code review. You mention that management knows about this programmer's deficiencies. Does he? It's rather difficult for people to change and improve if they don't recognize the problems with the way they're doing things.
同样,同行代码审查。你提到管理层知道这个程序员的不足之处。他呢?如果人们不认识到他们做事的方式存在问题,那么人们就很难改变和改进。
And, perhaps best of all, by coming up with plans to improve your development process (which will likely improve not only your "star" but everyone else on the team) you can probably earn some gold stars for yourself from management.
而且,或许最重要的是,通过提出改善开发过程的计划(这不仅可以改善你的“明星”,而且可以改善团队中的其他人),你可以从管理层获得一些金星。
#8
Doesn't sound like much of a star programmer to me. All the good programmers know that code formatting and use of source control matters. Sounds like although he makes good progress by himself, he's obstructing the progress of the other team members, which might have a net negative effect on the work getting done. Talk to him, and if he refuses to change his practices, let him go.
对我来说听起来不像一个明星程序员。所有优秀的程序员都知道代码格式化和源代码控制的使用很重要。听起来虽然他自己取得了很好的进步,但他阻碍了其他团队成员的进步,这可能会对完成工作产生负面影响。跟他说话,如果他拒绝改变他的做法,就让他走吧。
#9
If he really is that bright and you cannot change his ways, nor do you want to lose him but you still want your code to be documented and commented then my suggestion would be to let a less experienced developer do the documenting and commenting for him. Personally if I were a star developer I would feel prettiy foolish if someone else was made to comment my code and I would start to do it myself eventually. In the meantime while that does not happen the less experienced developer may learn a thing or two.
如果他真的那么聪明并且你无法改变他的方式,你也不想失去他,但你仍然希望你的代码被记录和评论,那么我的建议是让一个经验不足的开发人员为他做记录和评论。就个人而言,如果我是一名明星开发人员,如果其他人被评论我的代码,我会觉得很愚蠢,我最终会自己开始做。与此同时,虽然没有发生这种情况,但经验不足的开发人员可能会学到一两件事。
#10
There's more to being a star developer than just being an excellent programmer. If he doesn't have team skills and is purposefully ignoring team standards it needs to be brought up to him. If he refuses to adhere to them after talking with management, perhaps he's not the right fit for your company.
作为一名明星开发人员,不仅仅是一名出色的程序员。如果他没有团队技能并故意无视团队标准,则需要将其提交给他。如果他在与管理层交谈后拒绝遵守这些规定,那么他可能不适合贵公司。
#11
This question makes me nervous, because while the person you're describing sounds egregious, I can see a little bit of myself in him.
这个问题让我很紧张,因为虽然你所描述的人听起来很恶劣,但我可以在他身上看到一点点。
I think I'm a pretty good team player, and I'm lucky to be on a very good team. However, I do use methods that my colleagues don't understand, though I've tried pretty hard to explain them. There just is a pretty large experience gap, which is no reflection on any of us.
我认为我是一个非常好的团队合作者,我很幸运能够成为一支非常优秀的团队。但是,我确实使用了我的同事不理解的方法,尽管我已经非常努力地解释它们。只有相当大的经验差距,这对我们任何人都没有反映。
Documentation is a broad and tricky subject. I try to follow the DRY (don't repeat yourself) maxim. Documentation that is separate from the code can amount to repeating yourself, so it is liable to get out of date unless you slow yourself down to keep it up to date. My usual approach is to touch it up afterward.
文档是一个广泛而棘手的主题。我试着遵循DRY(不要重复自己)格言。与代码分开的文档可能相当于重复自己,因此它可能会过时,除非您放慢脚步以使其保持最新状态。我通常的做法是随后进行修改。
Often the problem I'm working on is so tricky that I can advance plan and document all I want, but when it comes to the code I often discover that I was wrong and have to re-think it. So the idea that you can document stuff in advance, and just follow that, only works for pretty straightforward problems, it seems to me.
通常我正在处理的问题是如此棘手,以至于我可以提前计划并记录我想要的所有内容,但是当谈到代码时,我经常发现我错了,必须重新考虑它。因此,我认为你可以提前记录内容,然后按照这一点,只适用于非常简单的问题。
Anyway, I think this is an excellent question, and the answer is not at all simple.
无论如何,我认为这是一个很好的问题,答案并不简单。
#12
Is the guy really a rock star? Seriously? Think about it for a second. Is he smart, but doesn't get things done, or is he both smart and able to get things done?
这家伙真的是摇滚明星吗?真的吗?想想它一秒钟。他是聪明的,但是没有完成任务,或者他既聪明又能干完成任务?
Think about it really hard.
想想真的很难。
If he really is a rock star, then maybe you shouldn't mess with him. He's producing incredibly awesome things using his own process. Just because there's a different way of doing things that works best for you, doesn't mean that's going to enable him to produce his best work. Instead of trying to get him to bend to your process, which very well could kill all of his awesomeness, you should try and find a way to accommodate the way he works.
如果他真的是摇滚明星,那么也许你不应该惹他。他用他自己的过程制作了令人难以置信的令人敬畏的东西。只是因为有一种不同的做事方式最适合你,并不意味着这将使他能够完成他最好的工作。你应该尝试找到一种方法来适应他的工作方式,而不是试图让他屈服于你的过程,这很可能会扼杀他所有的精彩。
If he really is as good as you say, you shouldn't mind doing that. If it isn't worth the effort to do that, then he really isn't that good. In that case, you don't have a rock star, you just have a mediocre programmer that doesn't like to play be the rules. Those guys, you should just get rid of. A temperamental rock star is usually worth the pain, though, because of the quality of what he or she can produce. Those people, you should go to great lengths to keep.
如果他真的像你说的一样好,你不应该介意这样做。如果不值得这样做,那么他真的不是那么好。在这种情况下,你没有摇滚明星,你只有一个不喜欢玩规则的平庸程序员。那些家伙,你应该摆脱。然而,一个气质摇滚明星通常值得痛苦,因为他或她可以产生的质量。那些人,你应该竭尽全力保持。
#13
Sounds like a star programmer who's bored of his job and is over complicating things to make it more of a challenge. He'll find something better soon enough.
听起来像一个对他的工作感到厌倦的明星程序员,并且过度复杂化使得它更具挑战性。他很快就能找到更好的东西。
#14
Trying to change things? What do you prefer, a poorly documented working piece of software or a well documented junk? Some people is capable of writing software that requires little to no comments, that is not a reliable indicator of quality.
试图改变一切?你更喜欢什么,一个记录不完整的工作软件或记录良好的垃圾?有些人能够编写几乎不需要评论的软件,这不是质量的可靠指标。
I'm afraid you're going to lose a good developer.
我担心你会失去一个优秀的开发者。
#15
"Hi Star Developer,
“Hi Star Developer,
just a little informal heads-up to tell you that from next week, we'll be requiring documentation of code, and helpful commenting in the code - it's going to be company policy, and there'll be no exceptions"
只是一点非正式的提醒告诉你,从下周开始,我们将需要代码文档,并在代码中提供有用的评论 - 这将是公司政策,并且没有例外“
From then on, you just deal with that failure the same as you would deal with a failure to turn up on time, a failure to stop goofing off during work, etc. Bottom line is if the boss says document, you document or you're not doing your job properly.
从那时起,你只需处理那个失败,就像处理未能按时完成,未能在工作期间停止放松一样,等等。如果老板说文件,你记录或者你是没有正确地完成你的工作。
#16
If he is working like this, he is not a star developer - great software developers understand that maintainability is extremely important. You will probably pay dearly for this in the long run, I would be very direct with him about how serious this is and let him go if he can't start to adjust. I have seen this plenty of times before and it is a ticking time bomb.
如果他这样工作,他就不是明星开发人员 - 优秀的软件开发人员都明白可维护性非常重要。从长远来看,你可能会为此付出高昂代价,我会非常直接地告诉他这是多么严重,如果他不能开始调整就让他离开。我以前见过这么多次,这是一个滴答作响的定时炸弹。
To be perfectly honest, I have seen plenty of developers like this and, unless they are just out of school, they won't change. I say cut your lossless now, its only going to get harder to fire him as he continues to spew out more unmaintainable code :)
说实话,我见过很多像这样的开发者,除非他们刚刚离开学校,否则他们不会改变。我说现在削减你的无损,它只会越来越难以解雇他,因为他继续喷出更多不可维护的代码:)
#17
It's very unlikely that management will get rid of him if he is really bright.
如果他真的很聪明,管理层就不太可能摆脱他。
The whole project may be closed, of course, but there will be no use in CVS and documentation then, anyway.
当然,整个项目可能会被关闭,但无论如何都不会在CVS和文档中使用。
No management will fire a good programmer only to hire a bad one.
没有管理层会雇佣一名优秀的程序员来招聘一名不好的程序员。
Tell him that it will help him to get rid of management whenever he wants to.
告诉他,只要他愿意,就可以帮助他摆脱管理。
What is he wants to change job? He can tell management: "OK, people, everything's just like you asked me: checked in, documented and under you control. I'm done with my part, I pack and leave".
他想改变工作的是什么?他可以告诉管理层:“好的,人们,一切就像你问我一样:签到,记录并在你的控制之下。我完成了我的工作,我打包并离开”。
#18
Can the team be successful with out him? If so push the issue and refuse to accept any code that isn’t properly documented or doesn’t meet other standards. Hopefully this will get the point across but it might just make him angry and cause him to quit. If the team can’t be successful with out him then you’re out of luck until you can train a replacement up to his skill level which may not be worth the time and effort.
团队可以成功解雇他吗?如果是这样,推动该问题并拒绝接受任何未正确记录或不符合其他标准的代码。希望这会得到重点,但它可能只会让他生气并导致他退出。如果球队无法取得成功,那么你就会失去运气,直到你可以训练替补达到他的技术水平,这可能不值得花时间和精力。
#19
+1 to ocdecio - if he is a star developer, then his code should be based on such a high-quality design that it documents itself.
+1到ocdecio - 如果他是明星开发者,那么他的代码应该基于它自己记录的高质量设计。
Having said that, the frustration could be that although he's excellent in technically-demanding areas which are interesting to him, he doesn't muck-in with the delivery of features - only you will know whether this is a problem for your organisation.
话虽如此,但令人沮丧的是,虽然他在技术要求高的领域非常出色,但他并没有擅长提供功能 - 只有你知道这对你的组织是否有问题。
Having a "guru" available can be an absolute life-saver - or at least it used to be, or has * made that role redundant?
拥有一个“大师”可以是一个绝对的救生员 - 或者至少它曾经是,或者*使这个角色多余?
#20
Don't let the code be released until it has passed code review and only allow it to pass if there are enough comments and/or documentation for the code which he has written for the current feature/project.
在代码通过代码审查之前不要让代码发布,只有在他为当前功能/项目编写的代码有足够的注释和/或文档时才允许代码通过。
Edit Bring it up in his appraisal. Documentation / commenting code can be given to him for his "Areas of improvement".
编辑在他的评估中提出它。他的“改进领域”可以提供文件/评论代码。
:-)
#21
You could also add automated quality checks that would prevent him checking-in his code until it was sufficiently documented.
您还可以添加自动质量检查,这将阻止他在完整记录之前签入他的代码。
That is if you can persuade him to check-in in the first place! (Which is ESSENTIAL, imo)
那就是说你可以说服他先办理登机手续! (这是ESSENTIAL,imo)
#22
There's a lot of folks here on the "no comments, so what?" bandwagon here. Literate code without comments is perfectly possible, but just because someone is smart and doesn't comment doesn't necessarily mean that they are writing literate code.
这里有很多人对“没有评论,那又怎么样?”赶时间在这里。没有评论的识字代码是完全可能的,但仅仅因为某人聪明并且不评论并不一定意味着他们正在编写有文化的代码。
So let's clarify. You already said he doesn't document his code at all, either in comments or separate documents, and he doesn't use any source control. How about:
所以让我们澄清一下。您已经说过他根本没有记录他的代码,无论是在评论中还是单独的文档中,并且他没有使用任何源代码控制。怎么样:
- Is his code understandable despite the lack of comments?
- Does your team use any kind of issue tracking (e.g. FogBugz, Bugzilla, etc) which he participates in?
- Is his code under test?
- Is there anyone else on the team who actually is at least somewhat familiar with how his code works?
- Is he willing to at least acknowledge that he could stand to make some changes in the way he works with the rest of the team?
尽管缺乏评论,他的代码是否可以理解?
您的团队是否使用他参与的任何类型的问题跟踪(例如FogBugz,Bugzilla等)?
他的代码是否正在测试中?
团队中是否有其他人至少在某种程度上熟悉他的代码是如何工作的?
他是否愿意至少承认他能够在与球队其他成员的合作方式上做出一些改变?
If the answer to all of these questions is "no", you have a big problem. Just being smart doesn't necessarily make someone an asset. Do you have any guarantee that he won't leave your company tomorrow, or get hit by a bus? How screwed would you be if that happened? Is it worth the risk?
如果所有这些问题的答案都是“不”,那么你就有一个大问题。只是聪明并不一定能使某人成为一种资产。你有保证他明天不会离开你的公司,或被公共汽车撞到吗?如果发生这种情况,你会变得多么紧张?值得冒风险吗?
#23
I think this is pretty typical in any environment. How do you get someone to do what you want? This is exactly what "How to win friends and influence people" is all about. Dale Carnegie was not about manipulation, but managing people.
我认为这在任何环境中都很典型。你如何让某人做你想做的事?这正是“如何赢得朋友,影响人们”的关键所在。戴尔卡内基不是在操纵,而是管理人。
It sounds to me like he's just inexperienced and needs some experience and guidance.
听起来像他只是缺乏经验,需要一些经验和指导。
Do you think you can sit down and talk to him about these issues? Telling someone they're doing something wrong often seems like the wrong thing to do (especially in today's western society where we don't want to hurt other people's feelings) but I think you can get very far by calmly and honestly explaining the issues and talking them through. It helps if the person respects you and your opinion, which is a whole other issue and is talked about in the book mentioned above. Make sure he understands that these are serious issues. Also, that in any future development jobs he'll be expected to do these things too so it's a good idea to practice them now.
你认为你可以坐下来和他谈谈这些问题吗?告诉别人他们做错事常常是不对的(特别是在今天的西方社会,我们不想伤害他人的感受)但我认为你可以通过冷静和诚实地解释问题和通过谈论他们。如果这个人尊重你和你的意见,这是有帮助的,这是另一个问题,并在上面提到的书中讨论过。确保他明白这些是严重的问题。此外,在任何未来的开发工作中,他都会被要求做这些事情,所以现在练习它们是个好主意。
I don't think waiting until the next performance review is a good idea. Piling up a bunch of negative feedback and delivering it all at once is just a bad idea and I really disliked it when that was done to me.
我不认为等到下一次绩效评估是一个好主意。积累一堆负面反馈并立即交付所有这些只是一个坏主意,我真的不喜欢它。
#24
Code documentation is over-rated. CVS training is easy.
代码文档被高估了。 CVS培训很容易。
A good class should reveal its purpose through its methods and properties.
一个优秀的班级应该通过其方法和属性来揭示其目的。
Documenting the model outside of the application is also easier to flow and comprehend.
在应用程序之外记录模型也更容易流动和理解。
I would bring it to his attention, if you can't get it resolved looks like you will be losing a star developer.
我会引起他的注意,如果你不能解决它看起来你会失去一个明星开发者。
Edit: Oops - used CSV instead of CVS, to many imports and i use svn heh.
编辑:糟糕 - 使用CSV而不是CVS,对许多导入,我使用svn heh。
#25
-
Get him to use automated execution-verification tools. (See my answer at "How to ask questions to an obsructionist?")
让他使用自动执行验证工具。 (请参阅我的回答“如何向一个妨碍者提问?”)
-
If he overcomplicates and does not use SCC, he is not an excellent developer -- these things are important parts of software engineering.
如果他过度复杂并且不使用SCC,那么他就不是一个优秀的开发人员 - 这些东西都是软件工程的重要组成部分。
-
In the very unlikely event that he has some irreplaceable brilliance in areas like algorithms, assign him to work in that area, e.g., defining algorithms, and get a real programmer to do the coding.
在非常不可能的事件中,他在算法等领域具有一些不可替代的辉煌,让他在该领域工作,例如,定义算法,并让真正的程序员进行编码。
-
Use static analysis code to understand and clean up his code.
使用静态分析代码来理解和清理他的代码。
#26
Pair programming. Find hima pair that will "complete" him for requirements you just listed. You will solve a problem will source control, documentation, question every his action, etc. You also train other guy by using first guy strength
结对编程。找到hima对,将根据您刚刚列出的要求“完成”他。你将解决一个问题,来源控制,文档,质疑他的每一个动作,等等。你也通过使用第一个人的力量训练其他人
#27
From what you describe, this fellow is distinctly not a star developer. Programming is a team sport, and those who do not play well with others do not add much value to a project.
根据你的描述,这个家伙显然不是明星开发者。编程是一项团队运动,那些与他人不相称的人不会给项目增加太多价值。
Personally, I might not remember code I wrote 6 months or more ago, and very much value a history of the changes in some sort of Source Control.
就个人而言,我可能不记得我在6个月或更久以前写过的代码,并且非常重视某种源代码管理中的变化历史。
If you had regular code reviews with this guy I think you would see that he's not as stellar of a developer as you think he is.
如果你经常与这个人进行代码审查,我想你会发现他并不像你认为的那样对开发人员有所了解。
#28
I agree with most people on this thread. One way to put him on the hot spot is to have Team Code Reviews.
我同意这个帖子中的大多数人。让他进入热点的一种方法是获得团队代码评论。
For the first code review meeting choose code from a team member that is open and will accept the recommendations. The "star" developer will have the chance to see how the code review works and then you can schedule his code to be reviewed next. Give him some time to prepare for the next meeting and by then he should be at least commenting his code.
对于第一次代码审查会议,请选择已打开并将接受建议的团队成员的代码。 “明星”开发人员将有机会看到代码审查的工作原理,然后您可以安排他的代码接下来进行审核。给他一些时间为下次会议做准备,到那时他应该至少评论他的代码。
The intention of code reviews is not to put shame on people but rather to collaboratively identify issues and places for improvement, but it will be a good way to put the star developer on the hot seat.
代码审查的目的不是为了让人感到羞耻,而是为了协作确定问题和改进的地方,但这将是让明星开发人员处于尴尬境地的好方法。
#29
In my opinion, you need to drop this guy. It sounds like his code is unreadable and he is definitely not a team, nor a safe, player.
在我看来,你需要放弃这个人。听起来他的代码是不可读的,他绝对不是一个团队,也不是一个安全的玩家。
It is also a very bad practice to allow someone to see themselves as indispensible. If you let him keep this up, his practices will get worse, not better. When he leaves, for everyone does, you will be left with an enormous headache of tangled code. You need to cut your losses now if he will not shape up.
允许某人将自己视为不可或缺的做法也是一种非常糟糕的做法。如果你让他继续这样做,他的做法会变得更糟,而不是更好。当他离开时,对于每个人来说,你将面临着纠缠不清的代码。如果他不能成型,你现在需要减少损失。
Finally, keeping this developer without reigning him in sets a poor example from junior developers. If you force them to work correctly, you risk resentment from the "why him and not me" crowd. If you don't, you get a bunch of hacks who work like your "star."
最后,保持这位开发人员没有统治他,从初级开发人员那里得到了一个糟糕的例子。如果你强迫他们正常工作,你可能会因为“为什么他而不是我”的人群而产生怨恨。如果你不这样做,你会得到一堆像你的“明星”一样工作的黑客。
In short, unless he shapes up very, very quickly, it's time to drop him, for the health and sanity of your entire development staff.
简而言之,除非他非常快速地塑造,否则是时候放弃他了,为了整个开发人员的健康和理智。
#30
We had a similar problem when I started my current job a little over 3 years ago, our lead developer was a cowboy. He was really smart but very erratic, some of his stuff was very well documented, but so overly complicated it was imposable to maintain, or code first and figure out what he was building later, he would throw out code to see what would stick.
当我3年多前开始现在的工作时,我们遇到了类似的问题,我们的首席开发人员是牛仔。他非常聪明但非常不稳定,他的一些东西都有很好的记录,但是过于复杂,无法维护,或者先编码并弄清楚他后来要建立什么,他会抛出代码来看看会有什么结果。
He left about 2 1/2 years ago, and it's still haunting us when we find some of his old code, and in his defense that's how the development shop here was run back then, in the last 3 years I have been on a crusade to change that mentality.
他大概在2年半前离开了,当我们发现他的一些旧代码时,它仍然困扰着我们,而在他的辩护中,这里的开发商店是如何运行的,在过去的3年里我一直在讨伐改变这种心态。
When you become a star developer it stops being so much about how well you know the system, code, framework, architecture, etc. and more about
当你成为一名明星开发者时,它就不再那么了解你对系统,代码,框架,架构等的了解程度
- Writing elegant, maintainable, flexible, readable code
- Working with the rest of the team: using source control, leading by example, etc.
- Documenting what each method, class, object, etc is doing
- Researching new and better ways to do things for yourself, and your team
编写优雅,可维护,灵活,可读的代码
与团队的其他成员合作:使用源代码控制,以示例为导向等。
记录每个方法,类,对象等正在做什么
研究为自己和团队做事的新的更好的方法
if your not following all four of these at some level your not a star developer, more so if you refuse to try/learn to use them then it's time that that should find other employment opportunities one way or another, I hear starving artist is popular with this time of person (the whole misunderstand genius thing)
如果你不是在某种程度上关注所有这四个,你不是明星开发者,如果你拒绝尝试/学习使用它们更是如此,那么它应该找到其他就业机会,我听到饥饿的艺术家很受欢迎与这个人的时间(整个误解天才的事情)
#1
In my opinion somebody doing such stupid things as you have described above can't be a star developer! To me it seems like he intentionally makes things more complicated as they are, so that nobody else than himself can maintain the code. This makes himself more important than he really is! Talk to him. He has to change it! If he doesn't, replace him with a real star-developer!
在我看来,像你上面描述的那样做蠢事的人不可能成为明星开发者!对我来说,似乎他故意让事情变得更复杂,所以除了他自己以外没有其他人可以维护代码。这让自己比实际更重要!跟他说话。他必须改变它!如果他不这样做,请用真正的明星开发者代替他!
I promise you, in even half a year he will not know how his own code works! Fire him and you can save a lot of time and money.
我保证,即使是半年,他也不会知道自己的代码是如何运作的!解雇他,你可以节省大量的时间和金钱。
#2
The CVS part is easy - an "accidental" hard drive failure will teach him a lesson for a life (make sure you have a backup though so you won't actually lose code)
CVS部分很容易 - “意外”硬盘驱动器故障会教他一生的教训(确保你有备份,所以你不会丢失代码)
#3
That sounds like a tough situation.
这听起来像是一个艰难的局面。
Personally, I would let him go. He may be a star developer, but he isn't a team player. And you need to have a cohesive team that can work together if you want to make a good product.
就个人而言,我会让他离开。他可能是明星开发者,但他不是团队合作者。如果你想制作一个好的产品,你需要有一个团结一致的团队,可以一起工作。
#4
Failing to document is a (very bad) way to ensure job security.
未能记录是确保工作安全的一种(非常糟糕的)方式。
You can do several things to counter this:
你可以做几件事来解决这个问题:
- add documentation as a requirement for the personal performance reviews.
- don't accept software that isn't documented.
- have a word with the developer and find out why he doesn't document.
- Buy a cool documentation tool.
添加文档作为个人绩效评估的要求。
不接受未记录的软件。
与开发人员说一句话,找出他没有记录的原因。
购买一个很酷的文档工具。
#5
Play the bad cop/good cop sketch you have seen from the movies. Let the management be the bad cop and you be the good cop. Let the managament ask for over-kill documentation and per-minute ZIP backups of his work. But you offer him moderate documentation (by doxygen for example) and usual source control check-ins...
播放你从电影中看到的坏警察/好警察素描。让管理层成为坏警察,你就是好警察。让管理者要求他的工作过度杀戮文档和每分钟ZIP备份。但是你提供适度的文档(例如doxygen)和通常的源代码控制签到...
#6
Talk to him?
跟他说话?
If he really is a "star developer" he'll take note of what you say.
如果他真的是一个“明星开发者”,他会注意到你说的话。
It may not change him overnight but it might be that he is just completely unaware that other people dont get it quite like he does.
它可能不会在一夜之间改变他,但可能是他完全没有意识到其他人不会像他那样得到它。
Edit:
It's probably a bit late to change now, but more information is needed in working out a solution. It's impossible for anyone here to actually suggest letting the guy go based on these points alone. If you've been telling the guy every day for the last year that he needs to change or he's out of here, then you can let him go. However, I see no evidence of that.
现在改变可能有点晚,但在制定解决方案时需要更多信息。这里的任何人都不可能实际建议让这个人单独根据这些观点去做。如果你去年每天都在告诉那个他需要改变的人,或者他已经离开这里,那么你可以让他离开。但是,我没有看到任何证据。
A brilliant developer can be taught to use source control, comment and document. If you spend the effort here then you truly will have a star developer.
可以教导出色的开发人员使用源代码控制,评论和文档。如果你在这里花费精力,那么你真的会有一个明星开发者。
#7
You might be focusing on the wrong area here, you are being provided with an opportunity to see some weaknesses in your process.
你可能会把重点放在这里的错误区域,你有机会看到你的过程中的一些弱点。
- works in his own little area of his home directory rather than in the common CVS repository
在他的主目录的小区域而不是在公共CVS存储库中工作
A simple chat will probably suffice here, the benefits of version control speak for themselves and any "bright" person would likely be enthusiastic about those benefits. However it may also be a good chance to look into alternative version control systems that allow greater ease of use and flexibility (take a look at bzr and git). Better yet, get him involved in the selection process, if he really is a "star" he'll probably have good input and be more vested in its use.
一个简单的聊天可能就足够了,版本控制的好处不言而喻,任何“聪明”的人都可能对这些好处充满热情。然而,它也可能是一个很好的机会来研究更容易使用和灵活性的替代版本控制系统(看看bzr和git)。更好的是,让他参与选拔过程,如果他真的是一个“明星”,他可能会有很好的投入,并且更多地投入其使用。
- doesn't document his code
没有记录他的代码
It doesn't sound like documentation is part of your process. People are going to resist having to do extra work and if there isn't a defined process then you're talking about a lot of extra work. Is documentation really needed? If so, is there a process defined for creating it? should you have someone entirely dedicated to it? Should you at least have a tool to facilitate it (maybe something as simple as mediawiki)?
听起来不像文档是您的过程的一部分。人们会拒绝做额外的工作,如果没有明确的流程那么你就会谈论很多额外的工作。真的需要文档吗?如果是,是否有为创建它而定义的流程?你应该有一个完全致力于它的人吗?你应该至少有一个工具来促进它(也许像mediawiki一样简单)?
- doesn't comment his code, e.g. 3,500 SLOC of C with no comments and no blank lines to beak things up
没有评论他的代码,例如3,500 SLOC of C没有任何评论,也没有空白行
Three words: peer code review. Outside of obvious error-catching benefits, this also can provide some peer pressure, which is a strong force and can be a good thing. Wanting to be perceived well by your peers self-generates ownership and quality.
三个字:同行代码审查。除了明显的引人注目的好处之外,这也可以提供一些同伴压力,这是一种强大的力量,可以是一件好事。希望被同行认识得很好,自我产生所有权和质量。
- often overcomplicates things, e.g. uses three shell scripts that call one another to do the work that one simple shell script could do.
经常使事情过于复杂,例如使用三个相互调用的shell脚本来完成一个简单的shell脚本可以完成的工作。
Again, peer code review. You mention that management knows about this programmer's deficiencies. Does he? It's rather difficult for people to change and improve if they don't recognize the problems with the way they're doing things.
同样,同行代码审查。你提到管理层知道这个程序员的不足之处。他呢?如果人们不认识到他们做事的方式存在问题,那么人们就很难改变和改进。
And, perhaps best of all, by coming up with plans to improve your development process (which will likely improve not only your "star" but everyone else on the team) you can probably earn some gold stars for yourself from management.
而且,或许最重要的是,通过提出改善开发过程的计划(这不仅可以改善你的“明星”,而且可以改善团队中的其他人),你可以从管理层获得一些金星。
#8
Doesn't sound like much of a star programmer to me. All the good programmers know that code formatting and use of source control matters. Sounds like although he makes good progress by himself, he's obstructing the progress of the other team members, which might have a net negative effect on the work getting done. Talk to him, and if he refuses to change his practices, let him go.
对我来说听起来不像一个明星程序员。所有优秀的程序员都知道代码格式化和源代码控制的使用很重要。听起来虽然他自己取得了很好的进步,但他阻碍了其他团队成员的进步,这可能会对完成工作产生负面影响。跟他说话,如果他拒绝改变他的做法,就让他走吧。
#9
If he really is that bright and you cannot change his ways, nor do you want to lose him but you still want your code to be documented and commented then my suggestion would be to let a less experienced developer do the documenting and commenting for him. Personally if I were a star developer I would feel prettiy foolish if someone else was made to comment my code and I would start to do it myself eventually. In the meantime while that does not happen the less experienced developer may learn a thing or two.
如果他真的那么聪明并且你无法改变他的方式,你也不想失去他,但你仍然希望你的代码被记录和评论,那么我的建议是让一个经验不足的开发人员为他做记录和评论。就个人而言,如果我是一名明星开发人员,如果其他人被评论我的代码,我会觉得很愚蠢,我最终会自己开始做。与此同时,虽然没有发生这种情况,但经验不足的开发人员可能会学到一两件事。
#10
There's more to being a star developer than just being an excellent programmer. If he doesn't have team skills and is purposefully ignoring team standards it needs to be brought up to him. If he refuses to adhere to them after talking with management, perhaps he's not the right fit for your company.
作为一名明星开发人员,不仅仅是一名出色的程序员。如果他没有团队技能并故意无视团队标准,则需要将其提交给他。如果他在与管理层交谈后拒绝遵守这些规定,那么他可能不适合贵公司。
#11
This question makes me nervous, because while the person you're describing sounds egregious, I can see a little bit of myself in him.
这个问题让我很紧张,因为虽然你所描述的人听起来很恶劣,但我可以在他身上看到一点点。
I think I'm a pretty good team player, and I'm lucky to be on a very good team. However, I do use methods that my colleagues don't understand, though I've tried pretty hard to explain them. There just is a pretty large experience gap, which is no reflection on any of us.
我认为我是一个非常好的团队合作者,我很幸运能够成为一支非常优秀的团队。但是,我确实使用了我的同事不理解的方法,尽管我已经非常努力地解释它们。只有相当大的经验差距,这对我们任何人都没有反映。
Documentation is a broad and tricky subject. I try to follow the DRY (don't repeat yourself) maxim. Documentation that is separate from the code can amount to repeating yourself, so it is liable to get out of date unless you slow yourself down to keep it up to date. My usual approach is to touch it up afterward.
文档是一个广泛而棘手的主题。我试着遵循DRY(不要重复自己)格言。与代码分开的文档可能相当于重复自己,因此它可能会过时,除非您放慢脚步以使其保持最新状态。我通常的做法是随后进行修改。
Often the problem I'm working on is so tricky that I can advance plan and document all I want, but when it comes to the code I often discover that I was wrong and have to re-think it. So the idea that you can document stuff in advance, and just follow that, only works for pretty straightforward problems, it seems to me.
通常我正在处理的问题是如此棘手,以至于我可以提前计划并记录我想要的所有内容,但是当谈到代码时,我经常发现我错了,必须重新考虑它。因此,我认为你可以提前记录内容,然后按照这一点,只适用于非常简单的问题。
Anyway, I think this is an excellent question, and the answer is not at all simple.
无论如何,我认为这是一个很好的问题,答案并不简单。
#12
Is the guy really a rock star? Seriously? Think about it for a second. Is he smart, but doesn't get things done, or is he both smart and able to get things done?
这家伙真的是摇滚明星吗?真的吗?想想它一秒钟。他是聪明的,但是没有完成任务,或者他既聪明又能干完成任务?
Think about it really hard.
想想真的很难。
If he really is a rock star, then maybe you shouldn't mess with him. He's producing incredibly awesome things using his own process. Just because there's a different way of doing things that works best for you, doesn't mean that's going to enable him to produce his best work. Instead of trying to get him to bend to your process, which very well could kill all of his awesomeness, you should try and find a way to accommodate the way he works.
如果他真的是摇滚明星,那么也许你不应该惹他。他用他自己的过程制作了令人难以置信的令人敬畏的东西。只是因为有一种不同的做事方式最适合你,并不意味着这将使他能够完成他最好的工作。你应该尝试找到一种方法来适应他的工作方式,而不是试图让他屈服于你的过程,这很可能会扼杀他所有的精彩。
If he really is as good as you say, you shouldn't mind doing that. If it isn't worth the effort to do that, then he really isn't that good. In that case, you don't have a rock star, you just have a mediocre programmer that doesn't like to play be the rules. Those guys, you should just get rid of. A temperamental rock star is usually worth the pain, though, because of the quality of what he or she can produce. Those people, you should go to great lengths to keep.
如果他真的像你说的一样好,你不应该介意这样做。如果不值得这样做,那么他真的不是那么好。在这种情况下,你没有摇滚明星,你只有一个不喜欢玩规则的平庸程序员。那些家伙,你应该摆脱。然而,一个气质摇滚明星通常值得痛苦,因为他或她可以产生的质量。那些人,你应该竭尽全力保持。
#13
Sounds like a star programmer who's bored of his job and is over complicating things to make it more of a challenge. He'll find something better soon enough.
听起来像一个对他的工作感到厌倦的明星程序员,并且过度复杂化使得它更具挑战性。他很快就能找到更好的东西。
#14
Trying to change things? What do you prefer, a poorly documented working piece of software or a well documented junk? Some people is capable of writing software that requires little to no comments, that is not a reliable indicator of quality.
试图改变一切?你更喜欢什么,一个记录不完整的工作软件或记录良好的垃圾?有些人能够编写几乎不需要评论的软件,这不是质量的可靠指标。
I'm afraid you're going to lose a good developer.
我担心你会失去一个优秀的开发者。
#15
"Hi Star Developer,
“Hi Star Developer,
just a little informal heads-up to tell you that from next week, we'll be requiring documentation of code, and helpful commenting in the code - it's going to be company policy, and there'll be no exceptions"
只是一点非正式的提醒告诉你,从下周开始,我们将需要代码文档,并在代码中提供有用的评论 - 这将是公司政策,并且没有例外“
From then on, you just deal with that failure the same as you would deal with a failure to turn up on time, a failure to stop goofing off during work, etc. Bottom line is if the boss says document, you document or you're not doing your job properly.
从那时起,你只需处理那个失败,就像处理未能按时完成,未能在工作期间停止放松一样,等等。如果老板说文件,你记录或者你是没有正确地完成你的工作。
#16
If he is working like this, he is not a star developer - great software developers understand that maintainability is extremely important. You will probably pay dearly for this in the long run, I would be very direct with him about how serious this is and let him go if he can't start to adjust. I have seen this plenty of times before and it is a ticking time bomb.
如果他这样工作,他就不是明星开发人员 - 优秀的软件开发人员都明白可维护性非常重要。从长远来看,你可能会为此付出高昂代价,我会非常直接地告诉他这是多么严重,如果他不能开始调整就让他离开。我以前见过这么多次,这是一个滴答作响的定时炸弹。
To be perfectly honest, I have seen plenty of developers like this and, unless they are just out of school, they won't change. I say cut your lossless now, its only going to get harder to fire him as he continues to spew out more unmaintainable code :)
说实话,我见过很多像这样的开发者,除非他们刚刚离开学校,否则他们不会改变。我说现在削减你的无损,它只会越来越难以解雇他,因为他继续喷出更多不可维护的代码:)
#17
It's very unlikely that management will get rid of him if he is really bright.
如果他真的很聪明,管理层就不太可能摆脱他。
The whole project may be closed, of course, but there will be no use in CVS and documentation then, anyway.
当然,整个项目可能会被关闭,但无论如何都不会在CVS和文档中使用。
No management will fire a good programmer only to hire a bad one.
没有管理层会雇佣一名优秀的程序员来招聘一名不好的程序员。
Tell him that it will help him to get rid of management whenever he wants to.
告诉他,只要他愿意,就可以帮助他摆脱管理。
What is he wants to change job? He can tell management: "OK, people, everything's just like you asked me: checked in, documented and under you control. I'm done with my part, I pack and leave".
他想改变工作的是什么?他可以告诉管理层:“好的,人们,一切就像你问我一样:签到,记录并在你的控制之下。我完成了我的工作,我打包并离开”。
#18
Can the team be successful with out him? If so push the issue and refuse to accept any code that isn’t properly documented or doesn’t meet other standards. Hopefully this will get the point across but it might just make him angry and cause him to quit. If the team can’t be successful with out him then you’re out of luck until you can train a replacement up to his skill level which may not be worth the time and effort.
团队可以成功解雇他吗?如果是这样,推动该问题并拒绝接受任何未正确记录或不符合其他标准的代码。希望这会得到重点,但它可能只会让他生气并导致他退出。如果球队无法取得成功,那么你就会失去运气,直到你可以训练替补达到他的技术水平,这可能不值得花时间和精力。
#19
+1 to ocdecio - if he is a star developer, then his code should be based on such a high-quality design that it documents itself.
+1到ocdecio - 如果他是明星开发者,那么他的代码应该基于它自己记录的高质量设计。
Having said that, the frustration could be that although he's excellent in technically-demanding areas which are interesting to him, he doesn't muck-in with the delivery of features - only you will know whether this is a problem for your organisation.
话虽如此,但令人沮丧的是,虽然他在技术要求高的领域非常出色,但他并没有擅长提供功能 - 只有你知道这对你的组织是否有问题。
Having a "guru" available can be an absolute life-saver - or at least it used to be, or has * made that role redundant?
拥有一个“大师”可以是一个绝对的救生员 - 或者至少它曾经是,或者*使这个角色多余?
#20
Don't let the code be released until it has passed code review and only allow it to pass if there are enough comments and/or documentation for the code which he has written for the current feature/project.
在代码通过代码审查之前不要让代码发布,只有在他为当前功能/项目编写的代码有足够的注释和/或文档时才允许代码通过。
Edit Bring it up in his appraisal. Documentation / commenting code can be given to him for his "Areas of improvement".
编辑在他的评估中提出它。他的“改进领域”可以提供文件/评论代码。
:-)
#21
You could also add automated quality checks that would prevent him checking-in his code until it was sufficiently documented.
您还可以添加自动质量检查,这将阻止他在完整记录之前签入他的代码。
That is if you can persuade him to check-in in the first place! (Which is ESSENTIAL, imo)
那就是说你可以说服他先办理登机手续! (这是ESSENTIAL,imo)
#22
There's a lot of folks here on the "no comments, so what?" bandwagon here. Literate code without comments is perfectly possible, but just because someone is smart and doesn't comment doesn't necessarily mean that they are writing literate code.
这里有很多人对“没有评论,那又怎么样?”赶时间在这里。没有评论的识字代码是完全可能的,但仅仅因为某人聪明并且不评论并不一定意味着他们正在编写有文化的代码。
So let's clarify. You already said he doesn't document his code at all, either in comments or separate documents, and he doesn't use any source control. How about:
所以让我们澄清一下。您已经说过他根本没有记录他的代码,无论是在评论中还是单独的文档中,并且他没有使用任何源代码控制。怎么样:
- Is his code understandable despite the lack of comments?
- Does your team use any kind of issue tracking (e.g. FogBugz, Bugzilla, etc) which he participates in?
- Is his code under test?
- Is there anyone else on the team who actually is at least somewhat familiar with how his code works?
- Is he willing to at least acknowledge that he could stand to make some changes in the way he works with the rest of the team?
尽管缺乏评论,他的代码是否可以理解?
您的团队是否使用他参与的任何类型的问题跟踪(例如FogBugz,Bugzilla等)?
他的代码是否正在测试中?
团队中是否有其他人至少在某种程度上熟悉他的代码是如何工作的?
他是否愿意至少承认他能够在与球队其他成员的合作方式上做出一些改变?
If the answer to all of these questions is "no", you have a big problem. Just being smart doesn't necessarily make someone an asset. Do you have any guarantee that he won't leave your company tomorrow, or get hit by a bus? How screwed would you be if that happened? Is it worth the risk?
如果所有这些问题的答案都是“不”,那么你就有一个大问题。只是聪明并不一定能使某人成为一种资产。你有保证他明天不会离开你的公司,或被公共汽车撞到吗?如果发生这种情况,你会变得多么紧张?值得冒风险吗?
#23
I think this is pretty typical in any environment. How do you get someone to do what you want? This is exactly what "How to win friends and influence people" is all about. Dale Carnegie was not about manipulation, but managing people.
我认为这在任何环境中都很典型。你如何让某人做你想做的事?这正是“如何赢得朋友,影响人们”的关键所在。戴尔卡内基不是在操纵,而是管理人。
It sounds to me like he's just inexperienced and needs some experience and guidance.
听起来像他只是缺乏经验,需要一些经验和指导。
Do you think you can sit down and talk to him about these issues? Telling someone they're doing something wrong often seems like the wrong thing to do (especially in today's western society where we don't want to hurt other people's feelings) but I think you can get very far by calmly and honestly explaining the issues and talking them through. It helps if the person respects you and your opinion, which is a whole other issue and is talked about in the book mentioned above. Make sure he understands that these are serious issues. Also, that in any future development jobs he'll be expected to do these things too so it's a good idea to practice them now.
你认为你可以坐下来和他谈谈这些问题吗?告诉别人他们做错事常常是不对的(特别是在今天的西方社会,我们不想伤害他人的感受)但我认为你可以通过冷静和诚实地解释问题和通过谈论他们。如果这个人尊重你和你的意见,这是有帮助的,这是另一个问题,并在上面提到的书中讨论过。确保他明白这些是严重的问题。此外,在任何未来的开发工作中,他都会被要求做这些事情,所以现在练习它们是个好主意。
I don't think waiting until the next performance review is a good idea. Piling up a bunch of negative feedback and delivering it all at once is just a bad idea and I really disliked it when that was done to me.
我不认为等到下一次绩效评估是一个好主意。积累一堆负面反馈并立即交付所有这些只是一个坏主意,我真的不喜欢它。
#24
Code documentation is over-rated. CVS training is easy.
代码文档被高估了。 CVS培训很容易。
A good class should reveal its purpose through its methods and properties.
一个优秀的班级应该通过其方法和属性来揭示其目的。
Documenting the model outside of the application is also easier to flow and comprehend.
在应用程序之外记录模型也更容易流动和理解。
I would bring it to his attention, if you can't get it resolved looks like you will be losing a star developer.
我会引起他的注意,如果你不能解决它看起来你会失去一个明星开发者。
Edit: Oops - used CSV instead of CVS, to many imports and i use svn heh.
编辑:糟糕 - 使用CSV而不是CVS,对许多导入,我使用svn heh。
#25
-
Get him to use automated execution-verification tools. (See my answer at "How to ask questions to an obsructionist?")
让他使用自动执行验证工具。 (请参阅我的回答“如何向一个妨碍者提问?”)
-
If he overcomplicates and does not use SCC, he is not an excellent developer -- these things are important parts of software engineering.
如果他过度复杂并且不使用SCC,那么他就不是一个优秀的开发人员 - 这些东西都是软件工程的重要组成部分。
-
In the very unlikely event that he has some irreplaceable brilliance in areas like algorithms, assign him to work in that area, e.g., defining algorithms, and get a real programmer to do the coding.
在非常不可能的事件中,他在算法等领域具有一些不可替代的辉煌,让他在该领域工作,例如,定义算法,并让真正的程序员进行编码。
-
Use static analysis code to understand and clean up his code.
使用静态分析代码来理解和清理他的代码。
#26
Pair programming. Find hima pair that will "complete" him for requirements you just listed. You will solve a problem will source control, documentation, question every his action, etc. You also train other guy by using first guy strength
结对编程。找到hima对,将根据您刚刚列出的要求“完成”他。你将解决一个问题,来源控制,文档,质疑他的每一个动作,等等。你也通过使用第一个人的力量训练其他人
#27
From what you describe, this fellow is distinctly not a star developer. Programming is a team sport, and those who do not play well with others do not add much value to a project.
根据你的描述,这个家伙显然不是明星开发者。编程是一项团队运动,那些与他人不相称的人不会给项目增加太多价值。
Personally, I might not remember code I wrote 6 months or more ago, and very much value a history of the changes in some sort of Source Control.
就个人而言,我可能不记得我在6个月或更久以前写过的代码,并且非常重视某种源代码管理中的变化历史。
If you had regular code reviews with this guy I think you would see that he's not as stellar of a developer as you think he is.
如果你经常与这个人进行代码审查,我想你会发现他并不像你认为的那样对开发人员有所了解。
#28
I agree with most people on this thread. One way to put him on the hot spot is to have Team Code Reviews.
我同意这个帖子中的大多数人。让他进入热点的一种方法是获得团队代码评论。
For the first code review meeting choose code from a team member that is open and will accept the recommendations. The "star" developer will have the chance to see how the code review works and then you can schedule his code to be reviewed next. Give him some time to prepare for the next meeting and by then he should be at least commenting his code.
对于第一次代码审查会议,请选择已打开并将接受建议的团队成员的代码。 “明星”开发人员将有机会看到代码审查的工作原理,然后您可以安排他的代码接下来进行审核。给他一些时间为下次会议做准备,到那时他应该至少评论他的代码。
The intention of code reviews is not to put shame on people but rather to collaboratively identify issues and places for improvement, but it will be a good way to put the star developer on the hot seat.
代码审查的目的不是为了让人感到羞耻,而是为了协作确定问题和改进的地方,但这将是让明星开发人员处于尴尬境地的好方法。
#29
In my opinion, you need to drop this guy. It sounds like his code is unreadable and he is definitely not a team, nor a safe, player.
在我看来,你需要放弃这个人。听起来他的代码是不可读的,他绝对不是一个团队,也不是一个安全的玩家。
It is also a very bad practice to allow someone to see themselves as indispensible. If you let him keep this up, his practices will get worse, not better. When he leaves, for everyone does, you will be left with an enormous headache of tangled code. You need to cut your losses now if he will not shape up.
允许某人将自己视为不可或缺的做法也是一种非常糟糕的做法。如果你让他继续这样做,他的做法会变得更糟,而不是更好。当他离开时,对于每个人来说,你将面临着纠缠不清的代码。如果他不能成型,你现在需要减少损失。
Finally, keeping this developer without reigning him in sets a poor example from junior developers. If you force them to work correctly, you risk resentment from the "why him and not me" crowd. If you don't, you get a bunch of hacks who work like your "star."
最后,保持这位开发人员没有统治他,从初级开发人员那里得到了一个糟糕的例子。如果你强迫他们正常工作,你可能会因为“为什么他而不是我”的人群而产生怨恨。如果你不这样做,你会得到一堆像你的“明星”一样工作的黑客。
In short, unless he shapes up very, very quickly, it's time to drop him, for the health and sanity of your entire development staff.
简而言之,除非他非常快速地塑造,否则是时候放弃他了,为了整个开发人员的健康和理智。
#30
We had a similar problem when I started my current job a little over 3 years ago, our lead developer was a cowboy. He was really smart but very erratic, some of his stuff was very well documented, but so overly complicated it was imposable to maintain, or code first and figure out what he was building later, he would throw out code to see what would stick.
当我3年多前开始现在的工作时,我们遇到了类似的问题,我们的首席开发人员是牛仔。他非常聪明但非常不稳定,他的一些东西都有很好的记录,但是过于复杂,无法维护,或者先编码并弄清楚他后来要建立什么,他会抛出代码来看看会有什么结果。
He left about 2 1/2 years ago, and it's still haunting us when we find some of his old code, and in his defense that's how the development shop here was run back then, in the last 3 years I have been on a crusade to change that mentality.
他大概在2年半前离开了,当我们发现他的一些旧代码时,它仍然困扰着我们,而在他的辩护中,这里的开发商店是如何运行的,在过去的3年里我一直在讨伐改变这种心态。
When you become a star developer it stops being so much about how well you know the system, code, framework, architecture, etc. and more about
当你成为一名明星开发者时,它就不再那么了解你对系统,代码,框架,架构等的了解程度
- Writing elegant, maintainable, flexible, readable code
- Working with the rest of the team: using source control, leading by example, etc.
- Documenting what each method, class, object, etc is doing
- Researching new and better ways to do things for yourself, and your team
编写优雅,可维护,灵活,可读的代码
与团队的其他成员合作:使用源代码控制,以示例为导向等。
记录每个方法,类,对象等正在做什么
研究为自己和团队做事的新的更好的方法
if your not following all four of these at some level your not a star developer, more so if you refuse to try/learn to use them then it's time that that should find other employment opportunities one way or another, I hear starving artist is popular with this time of person (the whole misunderstand genius thing)
如果你不是在某种程度上关注所有这四个,你不是明星开发者,如果你拒绝尝试/学习使用它们更是如此,那么它应该找到其他就业机会,我听到饥饿的艺术家很受欢迎与这个人的时间(整个误解天才的事情)