具体的编程语言技能和经验对于求职者来说是否重要?

时间:2009-06-12 04:00:18

标签: programming-languages

这种情况与Specialist vs. Generalist questions有关,我知道 Both 是正确的答案,但我从不同的方向来看它。我为新的软件开发候选人进行面试,目前我们对特定的语言技能和知识进行了大量评估,并将特定的语言经验作为招聘标准之一。我们也期待候选人成为一名全面的通才,但这是次要的他们是一位伟大的专家。这一切都很好,我们聘请了许多非常棒的程序员,并且不会雇佣任何其他人。

但我一直在想。如果我有两位候选人,第一位是我们语言的专家,但很少有其他经验(可怜的通才),而另一位候选人是梦幻般的通才,只用我们的语言传授知识(但在具有类似特征的其他语言中专业化),而其他一切都是平等的,这将是一个更好的雇用?

我们没有切换语言的计划,因此其他语言技能不能直接应用。一般来说,我倾向于专家,因为他们学习的东西较少,但我想知道梦幻般的多面手(和其他专业)是否一样好,如果不是更好的选择。

我的想法是完成这项工作所需的技能:

  1. 特定于框架的体验
  2. 语言特定体验
  3. 一般软件开发技巧
  4. 一般软件调试技巧
  5. 良好的设计技巧
  6. 领域特定知识(或目标行业)
  7. 了解现有代码库
  8. 列表开头的那些记录比列表末尾的记录更好(因此更容易和更快速地学习)。更重要的是,我会说一位擅长#3,#4&的通才。 #5比只有#1&的技能的人更有价值。 #2(即使这些技能非常深),因为这些很容易通过参考文档发现。当然,似乎不太可能有人在#1&amp ;; #2没有#3,4& 5。

    #7& #6是最难获得的,这使得现有员工比新员工更有价值,无论他们在前几个领域的技能有多好。

    在我以前的工作中,他们雇用我的部分原因是为了我的特定语言经验,但在我被聘用后不久,他们找到了一位新经理,他决定喜欢一些新的闪亮的微软语言,所以我们开始重写所有内容。我的特定语言技能不再具有相关性,但我仍然发现自己被提升为首席开发人员,而不是其他具有更多特定语言技能的开发人员。

    所有事情在概括上是相同的,当使用特定语言时,聘请具有专业化的开发人员更有意义。

    问题:

    足够解释我的立场。我很好奇Stack Overflow的共识是什么。雇用语言特定技能更重要吗?语言特定技能是否应该成为招聘的标准?开发人员一旦被聘用就专注于使用一种语言进行开发,或者是否应该在使用不同语言的不同项目(在同一域中)之间移动?如果您的项目使用不同的语言,但是相同的域名被取消,那么开发人员是否应该被解雇,或者在另一个使用完全不同语言的项目中进行再培训,而这些项目是否具有技能?

    谢谢!

14 个答案:

答案 0 :(得分:8)

一般来说,这位出色的多面手更有可能迅​​速获得特定的领域知识,并且成为领域专家的变化比利基开发人员成为一名出色的多面手更好。而且,通才不会更好地在盒子外面思考,而是通才思考的方框比专家更大。通才为团队带来更多潜力。但是,我同意这两种类型相互补充。

答案 1 :(得分:7)

我会总是和一位出色的通才一起去。如果我能同时拥有这两个,但如果只有一个,我会选择这位出色的通才。

您需要灵活性,开箱即用的思维,从多个角度看问题的能力以及在不同软件环境中的经验。

这至少是我的看法。


如果商店专注于一种语言/平台,语言特定技能应该是重要的。如果该平台发生变化,开发人员至少应该选择迁移到该平台,并接受学习曲线。不要忘记他们在您的特定业务中有经验。如果他们只是不想使用新平台,他们可以自己做出决定,否则你可以在几个月后与他们一起审查。

答案 2 :(得分:4)

这在很大程度上取决于候选人的技术和其他方面。如果我需要核心内核C ++,我绝不会聘请一位出色的C#专家。我也不会雇用拥有大量JavaPerlRuby和数据库技能的人。

你可以向一个聪明到能够快速学习的人传授很多关于特定语言的知识,但是“足够聪明,快速学习”的重要性不仅仅是知道具体的事情。

答案 3 :(得分:4)

熟练的程序员是语言无关的。例如,如果我正在寻找一名Ruby程序员,我会倾向于一个知道C,PythonJava的有才能的人,而不是Ruby,而不是'OK'开发人员,知道Ruby进出。

答案 4 :(得分:4)

使用特定语言或技术的技能与招聘人员和人力资源无人机似乎认为无关紧要。

我确实与招聘人员进行了一次谈话,其中包括:

他:我看到你有8年的Java经验。你有J2 S E经验吗?
我:J2SE,而不是J2EE?
他:这是对的。
我:呃... 8年。

话虽如此,技能和经验也无关紧要。事实上,技术在不断变化,程序员可能总是需要在工作中掌握新技能。只要计算机出现就可能就是这样。

关于技术变更的问题,请保留团队,除非他们没用,可能就是这种情况。如果新版本取代旧版或新版项目甚至只是在同一行业,那么投入该团队的领域知识是巨大的,远远超过任何语言或技术差距。

我见过一个成功的配方,以前使用承包商来基本上将技能传授给现有团队(我是其中一个承包商)。 8个承包商中只有不到1个,实际上效果非常好。

在知道Java而不是C#之类的小东西上抛弃广泛的领域知识,就是纯粹的疯狂。

答案 5 :(得分:2)

到目前为止,我会选择这位出色的通才。我付给他两倍的钱。

我怀疑任何一个“一种语言专家,但很少有其他经验”的人实际上是用这种语言编写真正高质量的代码。我不认为用一种语言的经验足以发展解决问题技巧的广度和深度,这些技能对于诚实的工作是必不可少的。

答案 6 :(得分:2)

我很乐意说'和通才一起',但我在这个决定中有这个潜伏的问题。请原谅我反对这个线索的一般情况...

掌握语言是任何形式的交流中最宝贵的资产。它是向观众/用户清楚地传达想法的手段。我不会聘请一名通才作为专职编码人员,就像我不会聘请一位伟大的思想家作为演讲撰稿人一样。我会聘请通才作为我的想法/原型人,但我会寻找能够通过特殊代码作为我的最终产品资产来传达想法的人。语言毕竟是沟通的艺术。

面对这个决定,我会问 - 是专家能够采用特殊代码来实现这个想法的人。如果他们不能用“共同”语言传达他们的想法,那么通才会有什么用?如果他们难以用选择的语言表达他们的想法,那么价值就会丧失。就像在口语中一样,一个好的词史密斯就是负责传达信息的人。

答案 7 :(得分:1)

我也会选择这位出色的通才。我认为如果这个人很聪明,在一个月左右的时间内,他或她可能会快速掌握语言和平台,但如果这个人写了草率或杂乱的代码,他或她可能会引入需要几个小时的bug找到并且其他人可能需要为他或她修理它。

此外,如果他或她无法适应其他需求(例如在执行JavaScript工作时需要写一些jQueryPHP),则可能会出现问题。

答案 8 :(得分:1)

我在某处读过( Code Complete ,我认为),通常一个人需要大约两年时间才能掌握编程语言。我曾经被聘请在一家使用.NET平台(C#语言)的公司工作,而我只有JavaC++背景 - 在我服用的第一周一个ASP.NET类(非常好),过了一段时间我和其他开发人员一样多,虽然我做了一些新语言/平台新手常见的错误。

但是,无论如何,我会聘请通才 - 但是如果你的公司已经熟练掌握你正在使用的语言/平台,并且如果你有一个有效的代码审查/辅导过程,它会更好地工作帮助新人快速加入团队。我认为专家会为任何新事物而烦恼 - 一个新的开发范例,一个新的源代码控制库,一个新的库存储库,一种访问数据库的新方法等等。

正如Jeff Atwood在他的博客中指出的那样,没有专家。

答案 9 :(得分:1)

我认为一个团队需要通才和专家,但不能采取相同的措施,所以你选择哪一个取决于该特定团队中通才与专家的当前平衡。

专家将能够直接进入您的代码库,只需要更少的指导和教学,这使他/她成为一名优秀的ROI人员,因为他们能立即提高工作效率。

通才可能需要更多的指导,但是通才可能会有更好的全面体验,并且可能会因为问题而对问题产生不同的看法。他在其他语言/环境中的经验,那些只使用过您的主要语言的程序员可能会错过。

与任何团队一样,您需要混合不同的个性,以充分利用相关人员。但是,你不希望用新语言训练每一个新员工,因为这需要时间远离其他开发人员,否则他们可能会很有效率,所以我认为拥有通才和专家非常重要,但是正确的比例。

可能有一个最有效的比例被发现,但作为猜测,例如,雇用70%的专家和30%的通才会给你足够的外部经验是有益的,但也没有花费很多时候训练通才。

答案 10 :(得分:1)

我会考虑你正在招聘职位的高年级。如果是初级职位,那么语言特定的技能可能不值那么多,因为你可能期望这个人不像已经发展多年的人那样意识到。另一方面,在高级职位上,您可能需要具有深入语言技能的人,因为可能会有快速解决的代码优化挑战。

关于转移开发人员,这取决于域名的广泛程度。例如,在我的网络世界中,ASP Classic中有VBScript,C#/ ASP.NET中有.NETVB.NET,JavaScript,CSS,HTML和XML我有点期望在每一个方面都有一些知识,但后来我开发了足够长的时间,从微软堆栈中了解大部分内容对我来说是有意义的。

关于最后一个问题,我的建议是,这可以归结为再培训是否比重建开发团队更加昂贵的权衡取决于外部因素,好像公司将要创建他们的然后,如果没有人掌握新语言的技能,那么解雇开发人员可能没有意义。

答案 11 :(得分:0)

如果你想让这个人跑到地上(工作),那就雇用专家。从第一天起,您将获得物有所值。

答案 12 :(得分:0)

作为一名出色的通才(我希望:P)我可以告诉你,在实践中,这是专业人士。责怪语言测试。责备招聘人员。

有些理解他们正在做的事情的人正在寻找一个优秀的程序员,一个优秀的程序员在元语言中认为而不是实际的。在其他条件相同的情况下,一个也有经验的优秀程序员当然会在没有经验的情况下被聘用,但根据我的经验,招聘更常见的是勾选方框并让试用期解决

答案 13 :(得分:0)

我想将此置于未来时态,因为这对于这个行业来说是一个非常糟糕的方式。 100% 完全没有 问题。

此处仍有人能够使用Borland C++ 4.5撰写OWL 5.0 / 6.0来维持生计......任何人都可以吗?

好的,作为一个.NET开发人员1.x 2.x ......更多的人仍在这样做......他们还是专家吗?我们现在有3.0,3.5,4.0和Silverlight或其他任何将成为下一个“伟大”的版本。这仍然是专家吗?

如果我们所有人都“能够”在单一语言/图书馆工作超过10年,我就能理解这个问题。但这些产品没有这种寿命。我们这些已经走了这么长时间的人意识到了这一点。

当您了解它时,许多大多数开发产品在概念和功能上都非常相似。

只是词汇和力学是不同的。哎呀,即使工具完全相同,你也可以在不同的代码库之间纠结。有一些奇怪的东西,许多商店真的很自豪...我已经看过很多次了,作为一个更高的枪“顾问”我必须坐在那里,或者“同意”或轻轻地粉碎梦想。

真正的底线......独家专家是新手或笨蛋。但是,通常它们很便宜。获得20年的编码经验然后打电话给我,如果你想争论这个。我保证没有争论,因为没有一个开发人员在20年内成为专家...... COBOLJCL被排除在外。

另外,那些正在寻找专职人员职位的经理人通常不适合工作的人。他们不希望自己的人民增长或扩张。只需编码并让我一个人待着。工作便宜,不要让我思考,不要创新,不要做得更好 - 只是编码这些盒子。直到我外包你。不,专家不会有未来。

不,

但是,如果你要成为一名专家......最好明智地选择。不要选错了工具。如果它在5年,10年或15年后逐渐消失,您将不会成为专家,也不会从事有酬工作。询问Borland,业务对象,ClipperdBase III开发人员。你根本不想成为一名专家。

请记住,这是你的生活,而不是你的经理。你的责任是保持技术和就业。具有感染力,制作出色的产品,使其快速,并使其准确。