编程语言作为严格的工作要求有什么用?[关闭]


22

最近,我参加了一个“招聘会”,我惊讶地发现工作场所似乎对考生所熟悉的编程语言有多大的重视。

根据我的经验(虽然有限),虽然真正掌握一种编程语言可能要花费数年,但对于已经拥有其他语言经验的人来说,将其学习到一个合理的水平是一件相当简单的事情,并且绝对可以满足雇主通常分配的时间范围初始加速。

我认为雇主会更在意我熟悉多少种语言/范例,或者我在算法/软件设计方面的经验,而不是我目前熟练的特定技术。

假设我已经知道Java,C ++,Smalltalk和Prolog ...依赖Objective-C的工作场所是否应该真的认为我没有资格,因为我缺乏使用该语言的经验?这是招聘方法上的缺陷吗?如果是,我该怎么做才能说服工作场所我缺乏对Objective-C的经验并不重要?我是在假设性地询问,而不是具体地提到所提到的编程语言。

另外,我的经验有限,我承认我可能会缺少一些东西。以前使用编程语言的经验是否比我认为的更为关键?担任初级或高级职位会有所不同吗?应该有所作为吗?


2
你去一个招聘会,所以你必须是一个学生......
工作

@工作正确,我是一名研究生。我确实有几年的行业经验,但是我现在绝对才刚刚开始我的职业生涯。
橡树

6
我只想对所有归咎于HR的人士提出一般性的看法。在我工作过的公司(没有多少公司)中,HR没有提供任何技术人员的聘用,除了发出最终的工作机会。特别是,他们从未进行过简历筛选。
尼尔·巴特沃思

就我而言,当我在回答中说HR时,我的意思更像是“一个不太真正理解撰写职务说明的技术的人”。那可能是委派秘书从笔记中键入工作描述,或者可能是一个倒霉的经理,他并不真正了解他想要的是什么。
2011年

@oak顺便说一句,您能解释一下“强调”是什么意思吗?您是说工作说明中列出了语言,还是您在招聘会上遇到的人都对此表示不满?如果只是前者,那么我认为您有点过分敏感了。
2011年

Answers:


24

与新闻稿相反,现在是雇主的市场

这意味着他们可以简单地挑剔他们的要求。这意味着他们可以要求.NET 4.0体验,而不仅仅是3.5体验...这意味着他们可以要求具有Django的体验,而不仅仅是Pylons等。

当然,您可以在几周内学会所有需要了解的有关Ruby的知识,Rails可能需要花费几个月(只是猜测)才能精通...

但是,雇主可以选择已经精通Ruby&Rails 的人员的简历。

TL; DR:Econ 101 ... 不要相信关于程序员短缺的炒作


3
我必须指出,程序员的市场非常依赖于位置。我在哪里(碰巧是在一个大大学城里),我面试过的所有地方都说,他们现在很难找到候选人。
Tesserex 2011年

15
Tesserex -应该翻译为“我们无法找到程序员知道所有的我们的技术字母汤,在价格,我们都愿意付出。
红泥土

21
有大量的程序员。优秀的程序员现在很难找到(就像往常一样)。
tdammers 2011年

10
相反,作为雇主,我可以告诉你,这绝对是一个雇员的市场,至少对于有才华的人而言。对于优秀的程序员,一如既往,需求远远超出了供应。另一方面,我不认为具有“几个月”经验的人是程序员(或木匠,医生或任何其他熟练技术人员),因此您的数字可能与我的差异很大。
Rein Henrichs

2
@Rein-您可以说所有您想要的,但是简单的econ并不能证明这一点。如果这样做的话,那么您会发现顶级程序员的薪水要高得多。一位高级医生或律师每年将赚取500,000美元……google的一名高级软件工程师的平均工资为130,000美元(glassdoor)。我认为你是什么意思说,是,你不能找人3倍富有成效的平均工程师的价格。
红尘

14

主要问题是没有人真正知道如何雇用优秀的程序员。第二个问题是程序设计工作吸引了很多申请人。

鉴于有大量的简历,能够梳理它们并挑选出优秀的程序员会很好,但是没人知道如何做到。大多数公司的工作方式通常是由人力资源部门负责。人力资源人员对Smalltalk或C ++一无所知,除了需求列表中列出的以外,不像软件人员可能会想到“ C ++ AND Smalltalk-这个人对Objective-C不会有任何问题”。

即使是招聘经理人选,也很可能太面面俱到,无法面试所有人,因此招聘经理不得不出于某种原因而丢掉简历。如果这是一项C ++工作,并且有5年以上的C ++工作人员超出了经理认为的面试范围,那么经理可能会丢掉所有没有C ++的简历。这不是获得绝对最佳人选的方法,但是没人知道如何聘用绝对最佳人选,而且如果简历上的内容限制了您的决策能力,那么具有C ++经验的人至少会稍微好一点下注。


1
好答案。小小麻烦:我不知道是不是真的没有人会聘请好的程序员,还是人事部门和招聘人员没有,而且大多数公司都有以人事为主导的招聘流程。我同意没有人真正知道如何聘请优秀的程序员而不花大量时间。
Tom Anderson

@汤姆·安德森:据我所知,最好的方法是避免雇用不良程序员。鉴于有大量的申请者,以及优秀的程序员大量申请的理由,这已经足够好了。例如,我读过的所有Joel的建议都是这样的。
David Thornley

4
@汤姆·安德森(Tom Anderson)我想说的是,没有人会通过看简历来告诉一个好的程序员和一个糟糕的程序员,也没人会比面试更多的人。人力资源部领导,技术招聘人员或招聘经理本身都没有关系。
杰里米

8

让我们扭转一下-如果您了解目标C,那么您会用作C ++程序员吗?我会说,不,您不会,语言太不同了。对于像C这样的简单语言,我想在雇用C ++几年之前要有6个月的工作经验。

几年前,我自学了PHP。我会说这是几个月之后,我才能有所建树,可以在图书馆中找到自己的出路,了解常见的习语等。而且我已经知道很多语言。


2
好的公司通常会在员工身上进行投资,而在大多数行业中,花几个月的时间来加快工作速度是很普遍的。不幸的是,只有少数软件公司遵循这种做法。同样(巧合的是???),它们似乎是最好的公司之一:Google,facebook,Microsoft等...
红尘

3
“”“您应该至少非常了解一种编程语言,并且最好是C ++或Java。C#也可以,因为它与Java非常相似。您应该至少在一些访谈中写一些代码。您应该会了解有关自己喜欢的编程语言的大量详细信息。“”“ steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
red-dirt

2
经验丰富的程序员可以在大约8个小时内学习C ++……只需阅读“有效的C ++”,并理解它。这使您超过了市场上90%的C ++程序员。了解STL使您处于前3%。
凯文·克莱恩

3
@kevin反讽?讽刺?什么?
尼尔·巴特沃思

2
@kevin:很明显,您不知道您在说什么。C ++是最复杂的语言之一,其古怪之处超出了您的想象。任何人都不可能在8小时(一天的工作!!)中学习它。那时您甚至无法学习类似PHP的语言。
Thomas Bonini 2011年

8

它取决于上下文的各个方面。不仅角色的级别,而且项目和公司的状态。

在最简单的层次上,任何大括号命令式语言都与其他命令几乎相同。

如果您可以使用命令式代码,则可以使用命令式代码。是Java,C#,C,C ++甚至是javascript。有了一本不错的参考书(可能还需要一些样板),您应该可以在下午的任何其他时间敲除一个小程序。

无论您的历史如何,您都了解循环分支和函数,并且它们的语法几乎相同。如果您的历史是OO,那么您还将了解对象,类和接口。

但是,我已经看到太多仅命令式的程序员在用声明性或功能性语言编写简单的程序而挣扎。如果我经营一家Erlang商店,我强烈希望拥有Erlang或至少具有Prolog的人比拥有C ++的人有经验。


它如何取决于角色级别:

招聘初级职位:

如果我选择一名从事C ++工作的程序员,那么我会想确保应聘者能够避免某些陷阱,例如需要注意内存或数组的长度,只是为了避免不要用脚开枪射击自己(和我自己)。如果他们从未做过C或C ++,那么我必须在面试中解决。

对于高级职位:

高效编程的关键之一就是知道您不应该编写自己的东西。关键是标准(和事实上的标准)库。关键在于经验。您不能只坐了一周的“自学Java”,马上就将自己从10年的C ++程序员变成了10年的Java程序员。


它如何取决于项目/公司的状态

给定一个几乎是干净的Java项目。我希望新聘的高级职员对Java生态系统有很多了解,并能够就不同的可用技术提供建议。

给定一个成熟的Java项目,我很乐意考虑一个经验丰富的C ++开发人员,对于高级Java角色几乎没有Java经验。大多数生态系统决策已经解决,新员工将能够获得Java库方面的经验,而该公司将利用程序员在OO软件开发方面的经验。


我认为您提到生态系统时非常重要。这是可以发挥巨大作用的,我想通常需要经验丰富的X平台开发人员来熟悉X的生态系统。仅学习新的语法和一些新的范例可能不会减少它。
橡木桶

我与Oak在一起-您很好地说明了,做一个优秀的X程序员除了选择语言X之外还需要很多生态系统知识。
2011年

4

这取决于工作场所。如果他们很忙,他们可能没有时间等待您赶上您可以在Objective-C中工作的地步-他们可能希望有人可以扎根。

如果某些工作场所看到您熟悉其他语言,并且具有扎实的基础知识和业务领域知识,则可能愿意冒险冒险。这实际上取决于他们的开放程度,以及您说服招聘人员承担风险的能力。


4

招聘很难;雇用优秀人才更加困难。我已经完成了招聘工作,在那里我面对着500多个简历。对于我们来说,我们将那些经验最少的人过滤掉了,他们希望将堆栈缩小到合理的大小。这对没有碰巧会说这种语言的优秀候选人公平吗?但是,如果我能找到100名确实具有我所寻找的资格的人,那么我真的不会花很多时间在400名没有资格的人身上-不管他们有多出色。

现在在招聘中,我可能有很长的要求清单,但通常只有一两个是破坏交易的人。而且,如果您没有找到想要面试的初始资格清单的人(或者稍后,如果他们都没有通过我见过的面试),那么通常他们会回头看看那些缺少某些人的人不太重要的资格或具有相似但又不同的人。在这种情况下,您通常会寻找一些有关人员的经历的信息,以使其比拥有所有技术资格的人更适合您的工作。例如,如果她在我的业务领域有经验,我会考虑一位在不同企业数据库中有经验的数据分析师(实际上,如果我看到所有简历,那么该人可能会做出我的第一份工作)。与C#和Java类似。如果此人正在从事相似程度的复杂性工作,尤其是在相似的业务领域中,即使他们使用另一种语言,他们也可能是很好的候选人。

但是,除非我有针对入门级人员的相当正式的培训计划,否则我不太可能从那些不符合我的最低语言技能要求的人员中聘用。几乎从来没有一群人没有我想要的东西。没有经验的人很少能拿到一些抵消性的资质,而很少有往绩证明他们可以用任何语言进行专业水平的工作。他们有足够的知识来学习第一门专业演奏,而无需了解我们使用的最重要的语言。雇用他们的风险更大,因为您可能要几个月才能从他们那里获得有用的工作。

如果招聘官员正在将团队转移到新技术中,则还有进一步的作用。如果团队中没有人是该技术的真正专家,而我也必须聘用新人,那么我将寻找聘用具有该技术的专业知识的人,因为他们有一个想法,“地雷” ”避免。

最后,即使您不满足所有规定的条件,也要申请您感兴趣的工作(但要设法满足其中的一些条件,雇用官员不希望将时间浪费在永远不会被雇用的人身上)。您永远不会知道您将要从事什么职业竞争,或者最能打动筛选简历或进行面试的人们。即使您在纸上有类似的要求,也可能使您无法在公司A进行面试,这是使您无法在公司B进行面试的原因。此外,他们的工作可能会更符合您尚未公布的资格。但是,如果他们不了解您,您将永远不会被考虑担任这份工作。


3

应该吗 号 呢?是的,可悲的是。这就是“紫色松鼠”综合症:该公司希望自己也吃蛋糕,并让他们能够在他们需要或可能需要的阳光下做所有事情。通常但并非总是如此,因为他们要么是A)不知道真正需要什么发展,而只是假设满足所有标准的某人可以胜任这项工作,B)他们挑剔是因为他们可以摆脱困境,或者C)他们计划从内部申请H-1B /绿卡/晋升,但必须使其看起来像是在宣传真正的工作。


3

“说我已经知道Java,C ++,Smalltalk和Prolog ......依赖Objective-C的工作场所是否真的认为我不合格,因为我缺乏使用该语言的经验?”

如果您在20种以上的3种或4种语言中具有与Objective-C相似的功能的经验,那么我可能会雇用您去做Objective-C,并希望您在6到8周内有所收获。(这是基于我几年前学习Objective-C的个人经验)。

如果您刚从学校毕业后就没有任何实际的实际操作经验,那么您很可能不会被雇用去做一些您完全不熟悉的事情。

在这里,Objective-C是一个有趣的稻草人。它要求您非常了解C,它要求您非常了解面向对象的分析和设计,在大多数情况下,它要求您非常了解C ++,因为您可能希望与之进行接口的C ++库。

它要求您了解手动内存管理以及自动内存管理/垃圾收集的工作方式以及何时在同一程序中使用每种技术。

您不仅需要了解Cocoa和POSIX,还不仅需要Objective-C,因为面对它,Objective-C对于所有实际目的在Apple环境之外都是无用的,您还必须了解Cocoa。

当Cocoa使您失败时,您需要能够在无法使用Cocoa包装器执行所需操作时知道要使用哪些POSIX API。

这也意味着您也应该对Unix有所了解。


2

取决于语言/个人。

如果我是C#场所,并且有JAVA / J2EE经验的人可以申请,我会给您一个机会。C#和JAVA之间的语法没什么不同。编码是编码,我认为一旦他们习惯了某些差异,它们就会很好。

JAVA-> C#也是如此。

现在,如果您是C#人士,并且申请了C ++职位,我想看看经验。差异太多。

是的,这取决于情况


3
语法是学习语言的这样的一小部分..
鲍里斯·扬科夫

@鲍里斯是对的,但他说的话仍然在某种程度上适用,无论是样式,库还是其他……
tylermac 2011年

2

尽管我认为OP尚无法解决具有许多范例经验的程序员如何轻松地添加一个新东西,但这全都归因于雇主对风险的厌恶。不熟悉其工具的潜在雇用者是通配符;它们可能确实很棒,但也可能失败,如果他们不能深入询问所使用的技术,那么面试官很难说出区别。

我绝对不是说这是看待这一问题的正确方法,而是某些雇主的做法。聪明的人利用这一点,并挑选了具有30年C ++经验的杰出程序员,而愚蠢的人则因为缺乏15年的Ruby on Rails经验而拒绝了他们。程序员也可以通过避免与如此不了解情况的雇主一起工作来利用这一点。毕竟,谁想在一个系统地做出糟糕的招聘决定的地方工作?


1
+1表示“如果面试官无法深入询问所使用的技术,这将比平常人更难告诉差异”,这听起来像是一个很好的理由。
橡树

1

这在一定程度上是因为人力资源管理人员并没有真正了解其角色,因此他们在工作描述中加入了流行语。这就是为什么您偶尔会遇到一份职位描述的可笑的情况,该职位描述说明了仅存在6个月的3年技术经验。

至于是否应该有所作为,这实际上取决于角色和所涉及的个人。几乎所有正在招聘的经理(当然是所有聪明的经理)都将指示人力资源部让他们通过在大多数领域都具有实力的应聘者,即使他们在职位描述中缺乏一两个要点。但是,这通常不适用于应届毕业生。我说的是像具有很多出色工作经验的人与客户或领导团队进行互动的事情。


0

我认为雇主会更在意我熟悉多少种语言/范例,或者我在算法/软件设计方面的经验,而不是我目前熟练的特定技术。

您是否曾经看过构成开发堆栈的所有元素?例如,构成某人用来创建软件的环境的IDE,测试框架,持续集成,版本控制,开发方法和代码范例。这可能是一些公司可能希望某人已经知道而不需要从头开始的许多工具。Ironcode关于雇主市场的观点是这里的另一个因素,因为在某些情况下,职位的竞争非常激烈,因此公司可以瞄准天空并有可能赢得竞争。

仅举一个有关该环境的具体示例,这就是我的工作范围:Visual Studio 2008主要使用C#,nUnit,Cruise Control.Net,Subversion,Agile / Scrum和程序,OO混合来进行ASP.Net。 ,并且功能取决于所看的地方。如果我想改用Java,这可能意味着要习惯于使用许多这些功能的新工具,而这可能不是雇主想要吸收的雇用该职位的费用。还有一些棘手的要点,那些具有该版本经验的人可能比其他人更了解,并且避免了某些陷阱,否则这些陷阱可能会使某人离开,“他们为什么要以这种方式构建它?”


但是,有趣的是,通常在源代码控制解决方案/ IDE /测试框架方面的经验将排在编程语言经验的基础上(尽管它当然可以帮助您找到工作)。
橡树

-2

不,看。这些要求不是IT部门综合考虑的。它们是由人力资源人员整合在一起的。HR人员获得要求的方式是在IT人员来回交错到咖啡机时向他们大喊问题。

他们说:“您需要什么?” 最后随机回答的傻笑说:“一个程序员。需要几年的经验。例如,我不知道4岁,如果他知道.Net会很好。” 合理的回应。

但是它被翻译成“ .Net 4的4年经验”,也就是.Net 4,因为当您使用Google .Net时,第一个链接将带您到一个谈论.Net 4的页面。

还有一种可能性,并且我已经碰到过几次了,他们有特定的语言要求,因为他们想朝着这个方向发展,而且他们认为,如果有经验丰富的员工会更顺畅。


1
这是一个非常痛苦的答案。您描述的场景可能是少数几家公司成立,但大多数公司并非功能失调。
2011年

不同意。我工作的最后几家公司甚至没有人力资源人员。当我们为新员工做广告时,我们需要使用开发语言和平台的商业经验。为什么?因为除非有这样的经验的候选人(除非有),否则为什么要花额外的时间与没有经验的人交谈,希望您会发现一个很好的人,愿意等一会儿他们学习了?
Carson63000 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.