关闭

澳际学费在线支付平台

美国计算机科学专业就业(三)

刚刚更新 编辑: 美国 浏览次数:400 移动端

  对于学习计算机科学专业的学生将来的就业方向的介绍还是举三个例子方便理解 ,希望能对大家的专业选择有所帮助!

  例子一

  你很喜欢程序语言设计这门课,你深入的学习了如何设计一门语言让别人使用来编程,说起程序语言设计的各种问题,啥type system, scoping, parameter passing,evaluation mechanisms,你头头是道,班上就你一个人拿A。你鄙视了一下班上号称java/C++高手,但是只拿B的同学,然后信心饱满的去找工作。

  有个公司里要找software developer,要求熟练使用某种语言,你觉得通过课上的学习,对常用程序语言设计上的优缺点有了很清楚的了解,你甚至写过一个很全面很深刻的总结,基本的object oriented concepts你还是会的。但是面试的时候,公司的人不跟你讨论任何语言的优劣,人家全是问如何使用某种语言,比如说 JDK某个类的methods有哪些能做什么,enterprise javabeans的知识,如何实现singleton的模式,什么是object oriented perl,给你个现实问题让你现场设计C++ classes,etc etc

  如果你的技术水平不过硬,你立刻就傻眼了,一肚子的理论知识都白搭;而那些理论学习成绩一般的java/C++ experts,反而更容易应付自如。

  学校的课程是讲授理论的,是tell you how to design a language, not teach you how to program in any language。research/theory和technology/application,是不同的。

  例子二

  XML曾经是数据库(DB, Database)的研究热点,多年前这项技术刚出现的时候,学校里的professor们会指导学生研究这个方向,比如研究针对XML的query如何设计如何优化,等你毕业的时候,你以为你是数据库专家了,但是去公司求职的时候,发现市面上还没有处理XML的数据库呢。你强大的xml数据库 domain knowledge就是屠龙之技,无用武之地。

  等这项技术开始成熟了,oracle和SQL Server都决定支持XML存储和查询,招聘大量懂XML和数据库的人去开发,你才有机会;但是开发数据库的就那么几个公司,如果oracle和微软都不要你的话,你走XML+DB的这条路子就暂时断绝了。XML当然是项成功的技术,被广泛应用在各个domain,能query XML的DB engine也早就有了,但是学校里拿来发表论文的东西,有多少在大浪淘沙之后,能被工业界广泛采用?如果你辛苦研究的新颖理论/技术中途死掉了,你在这个小领域上的努力也就接近白费了。

  也许你会说,我还有解决问题的能力啊,但是公司的人会说,我们花钱招你来是让你干活,解决实际问题的,不是让你来发论文的。我们用的就是 SQL的数据库,你说你懂数据库?ok,那我出SQL和Oracle的题目考你,回答的不好,我们不要。SQL的确不难,但是作为成熟的技术,不是novel idea,一些研究DB的研究生可能几年没碰过,万一人家出了个古怪或者复杂的问题,你被问倒了,没拿到job offer,那你不是要哭死?至于oracle这种大型软件,里面的东西就更多了,有些研究数据库的同学,可能用的是实验室自己开发的xml or data stream processing的prototype系统,根本不碰oracle。

  例子三

  你研究的是软件工程,而且是很新颖的用data mining technique或者formal methods来解决某个问题,还发表了一篇牛论文。公司的人乍一听专家来了,很兴奋,仔细一问,就说一句话,方法很好,但是实际上行不同,在工业界没办法应用。因为你的方法/理论做了一些的假设(assumption),而这些假设在现实中很难实现。

  然后公司的人说,你解决问题的能力很强,很聪明,但是我们这里做开发的主要用C++,作为新人,你的编程工作会比较多,我来考你算法设计、设计模式和 C++编程的知识吧。again,如果你在学校里做科研项目用java(或者是更没人用的语言比如Scheme),一堆C++的问题考死你很容易。

  不可否认,并不是所有的理论研究将来都用不上。我也听说有的人研究network performance,有的人研究存储技术,在公司里找到了可以大体上还可以学以致用的位置,因为公司有少数职位的确需要雇佣domain expert。但是通常情况下,工业界需要大量能解决实际问题的人,需要skilled workers,而不是理论专家。所以在面试的时候,很多人不是死在不懂research没有domain knowledge上(公司里大多数职位要求的domain knowledge翻翻书甚至有时侯看看wikipedia可能就足够了),而是死在C++/Java或者是数据结构、设计模式这种很基本但是很实际的东西上。

  读研究生,学校希望能教给你领域知识和设计新方法解决问题的能力,瞄准high level的教育,提高你的理论水平;但是公司希望你能有解决具体问题的skills,懂得low level,down to the earth的具体技术细节,这些东西,最多是你研究生学习时获得的副产品而不是学习目的。这是根本原因。学校的做法没有错,学校就应该教给你理论知识,这样不管外面流行什么技术,你都可以很快理解学会,但是工业界急功近利,希望你来了就能熟练使用各种工具干活。深刻理解这种mismatch,在二者之间找个平衡,是你的责任。

  追究讲谁对谁错没什么意义,这个问题也不是美国学校特有的。学校里当然要教给研究生理论知识,提倡学术研究,否则改成开java认证学习班算了。

  美国有些学校注重工程应用,上课期间布置比较多的projects,学生需要动手解决问题,进行大量的编程工作,很培养能力;有的学校,设置一些很实用的基础课程给硕士生选。这些对于着眼于工业界就业的同学来说,比较有利;如果一门课,老师布置你读无数新发表的paper,那你从这些paper里获得的知识,将来去公司工作,很可能用不上。

  可能有人说我的观点只注重眼前,不考虑长远发展,但是问题是不管是在中国还是在美国,我们的第一目标是先找到第一份工作再说,没工作,啥都免谈。找到工作以后,公司需要什么,我们就学习什么;有了工作,有了工资,啥有用啥流行咱学啥,而且很可能是公司出钱让你学,因为员工的培训(training)本来就是公司支持的。

  以上就是美加百利留学向大家介绍的留学美国计算机专业的学生可以选择的就业方向的介绍,希望能对大家有所帮助!

  • 澳际QQ群:610247479
  • 澳际QQ群:445186879
  • 澳际QQ群:414525537