InfoQ

新闻

特定的技术知识对于招聘开发者重要吗?

作者 Niclas Nilsson译者 郭晓刚 发布于 2007年8月8日 上午11时55分

社区
Architecture,
Agile
主题
培训/认证,
大学项目
标签
人力资源,
评论
在这个招聘广告中充斥了热门技术名词的时代(有时候对一项技术的经验要求还比这项技术存在的时间长),Dan Creswell发现了一份有趣而特别的Amazon招聘高级研究工程师的广告。Dan问道:

注意到什么有趣的地方了吗?没错这是在招聘相当重要的分布式系统工程师,再仔细看看。你看到里面有提到一丁点技术吗?J2EE?JavaScript?Ruby?没有,对吧?这多奇怪呀?你见过哪个职位要求是像这样的吗?懂不懂JBoss或者Websphere、Java或者Erlang或者Ruby真的那么重要吗?

尽管不是每个人都能够直接在Werner Vogels(Amazon的CTO)手下工作,Dan反思了软件行业目前的情形:

就我最常看到的职位要求,其中的关键就是要雇用一个不管用什么工具坐下就能疯狂编程的工程师。为了达到这个目的,这些公司在职位要求里塞满不切实际的技术要求,然后在面试的时候问些语法和API调用的细节。但如果公司的下一个项目要使用其他技术又怎么办?刚刚雇佣的这些工程师一下就没用了,他们没有新项目需要的技能,等他们学习又浪费时间。或者我们应该炒掉他们重新雇佣一批新的?

我们为何会落入如此境地?

很多年以前,大学里的计算机科学课程关注的是深入计算机科学底层的原理,但这个传统似乎正逐渐衰亡。许多人认为这对我们这一行是个威胁。Joel Spolsky曾经写过一篇文章叫作《Java学校的咎由自取》,里面讲述了他在宾州大学学习Scheme课程的经历:

……我看到很多甚至大多数学生都过不了关。资料太难了。我给教授写了一篇信,诉苦说这太不公平了。大概学校里什么人接受了我(或者哪位诉苦的同学)的意见,因为这门课现在用Java来教了。

我宁愿他们当初不要听我的。

现在Joel搞招聘的时候,他看到了硬币的另一面,他意识到许多开发者根本就不知道什么是函数式编程(Functional Programming)、递归、或者Lambda演算,这些对解决真实世界的问题仍然非常有用的概念。

不理解函数式编程,你就不可能发明MapReduce,这个让Google得以支撑海量规模的算法。

他们甚至很难理解指针。

我坦率地承认现今90%的代码都不需要用到指针来编写[……]但对于一些最激动人心的编程工作来说,指针仍然是重要的。如果不能彻底理解指针,你连Linux、或者任何操作系统的一行代码都没法看懂。

Joel作结说:

我无法理解为什么计算机科学院系课程委员会的教授们要把他们的课程的难度降低到这种程度,不但没法培育出合格的程序员,连能拿到博士学位跟他们竞争教授职位的合格CS研究生都培育不出来。

业界在抱怨学校没给学生传授业界需要的东西(即目前最热门的技术)。学校就更改课程来取悦业界,但在这个过程中一些比较困难的部分被丢掉了。当企业招募这些学生,这些没有像以前的学生那样学过各种不同思维方式的学生的时候,如Dan所写,下面的情形就司空见惯了:

当然多半的情况是,这些公司确保他们不使用新技术。他们强迫新项目采用以前用过的相同技术。这是设计上的灾难,因为技术不再服从设计和软件需求的需要。按照这种坐下就能编程的信条行事的公司里只有死路一条,毫无职业前途可言。

最后,当公司变成一家Java公司或者.NET公司,需要招募更多开发者的时候,要想招募到具有相应知识的人是很容易的

查看英文原文:Does specific technology knowledge matter when recruiting?

3 条回复

回复

个人看法 发表人 gpy good 发表于 2007年8月8日 下午9时27分
Re: 个人看法 发表人 Xiaogang Guo 发表于 2007年8月13日 上午12时48分
个人看法 发表人 joy jiang 发表于 2007年8月8日 下午10时40分
  1. 返回顶部

    个人看法

    2007年8月8日 下午9时27分 发表人 gpy good

    自然重要啦.
    只有真正掌握了特定的技术,例如某门编程语言,有了一定实际经验后,在回头来看数据结构及其算法,才能够深刻理解其思想.

    否则,只能是纸上谈兵,即使是教授,也是百无一用的.

  2. 返回顶部

    个人看法

    2007年8月8日 下午10时40分 发表人 joy jiang

    现在社会的需求是这样的啊,又有什么办法呢?

  3. 返回顶部

    Re: 个人看法

    2007年8月13日 上午12时48分 发表人 Xiaogang Guo

    在学校里自然学不到什么实际经验,只能要求尽量掌握一些理论。如果连理论都丢掉了,那还学个什么东西?现在的CS就是连理论都丢掉了啊!

独家内容

专访开源项目Amoeba架构师陈思儒

DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。

使用JSF、Ajax和Seam开发Portlets(2/3)

作为三期系列文章的第二部分,本文延续了上一期内容,介绍了RichFaces,包括如何把RichFaces集成到之前提到的示例应用中、如何部署RichFaces porlet和RichFaces的多种特性和功能。

Jeff Barr谈论Amazon Web服务

Amazon Web Services(AWS)的传道者Jeff Barr讨论了SimpleDB、S3、EC2、SQS、云计算、Amazon的不同服务如何与应用交互、AWS的起源、SimpleDB和微软SQL Server Data Services、AWS cloud的全球化、三月份的AWS停机。

用Erlang实现领域特定语言

Erlang的并发模型很有名,它的健壮性也很有名。但其他方面呢?在这篇文章里,Dennis Byrne演示了如何用Erlang建立内部DSL。

基于Rails的企业级应用剖析

本视频主要以FreeWheel为例,对一个基于Rails的企业级应用进行了剖析。其中包括:FreeWheel的架构、部署、数据库的问题、REST API、敏捷开发过程、如何去写测试以及持续集成等等。

JavaFX技术预览

JavaFX显示了Sun的Java系列产品市场方向的一个重大转变。随着1.0版的即将发布,InfoQ以JavaFX预览版为参考,与Sun高级工程师Joshua Marinacci探讨了即将发布的1.0正式版。

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。