驳《一个假程序员的心里话 》——不要看不起研究生

今天在CSDN看了一篇文章——《一个假程序员的心里话》,本来以为是谈假程序员和真程序员的区别,谁知一看之下,满篇都在批驳master和doctor。实在是忍不住了,想要为master和doctor说两句公道话。

我现在是一名在读研二学生,在成都一所电子方面还不错的学校读书,学的不是计算机专业,而是信号与信息处理。但由于课题和平时兴趣,计算机方面知识还是有点,不过在那篇文章作者眼里,我连假程序员都不是。

先来说说现今研究生教育。普通研究生入学后,一般第一年学基础课,第二年进教研室做课题,第三年第一学期开始找工作,第二学期忙答辩。总的算下来,真正做课题的时间也就是一年左右。大家都是本科毕业出来,水平也差不多,第一年学的基础课基本上是理论方面的,真正动手的也不过一年时间,而这一年的时间大部分精力都花在了课题上,和课题相关的当然了解就比较多了,其它方面最多也就比本科生多一点。你想别人在一年时间内成为全才吗?

相比之下,如果本科毕业就进了家好点的公司工作,三年的时间都不断做项目,动手能力绝对比一个刚毕业的master多。这没什么好稀奇的,我们从来不认为比有几年工作经验的老手强,相反,我们对他们都很尊敬,知道要学的东西还很多。

但是,光从这点就否认研究生教育,那就大错特错。我们的基础课理论不是白学的。工作很多地方用到的都是应用方面的知识,就算不会,也可以边学边做,但是基础不是那么容易学的。举个例子,我认识一位在深圳某公司工作的程序员,月收入过万,在我看来很牛了,他自称有独立编写10万行代码的经验。现在在搞图像处理,大叹难以下手,还在狠补信号理论,模式识别的几种方法基本不会。自学吧,看公式都可把你看吐血。所以说,虽然我们在动手方面还有不足,但我们有基础,学一样东西可以很快上手,这就是学习能力的差别。当然,和智商无关,取决于基础。

文章作者还说到,面试了很多master和doctor,觉得很失望,说别人不懂数据结构和算法。那我要告诉你,你很可能面试的不是计算机科班出生的master。像我们这个专业,要用计算机方面的知识很多,但也停留在应用方面,没有过多的去考虑底层实现问题。就像我们做项目,导师反复强调的是项目算法的重要性,至于你用什么实现,在他看来都是小问题,编程嘛,本来就是件工具。那么,对于我们来说,有可用的现成算法(我是指编程方面的),就不会自己再去做一遍。现在很多公司面试都喜欢考排序算法。我觉得很奇怪,懂几个排序就表明功底强吗?我不认为自己写出来的排序会比c++中的泛型算法强。如果我在面试前看几个例子,对答如流了,就证明我编程功底提高了吗?自欺欺人而已。还有,说我们不懂算法是很不负责任的,至少在我们专业,搞算法的最多,只是我们搞的你不懂而已。这次我们一个师兄面试一家公司,把一个排序算法搞错了,面试人员很鄙视的问:你到底懂不懂算法啊?我听说后很是气愤,我师兄课题是《基于外辐射源的无源雷达定位》,一年多时间全花在算法上了,结果最后被别人鄙视说不懂算法。我问师兄,你当时怎么不反问他懂不懂,让他去推个公式看看,不说7倍音速的导弹,他能推出3倍音速我就拜他为师。所以不要认为懂了几个编程中的简单算法就以为很了不起了,买本书看看大家都会。而有些算法,把公式推导出来你也不一定编的出来。

再说数据结构,说实话,我不是科班出身的,懂的也很少,就几个最基本的你让我表述一遍我都给不出准确的定义。但是,在用到的时候我也能查资料写出来,这本来就不是很难的事情。反而有些面试官,比我们还浮躁。也是个例子,我们教研室一个师兄去面试中兴,他课题是在ARM上做一个消防控制的终端,自己写了个微核操作系统,主要做任务调度。结果面试时还没讲完,一个30岁左右自认为很牛的面试官就不让师兄说了,说别人不懂堆和栈的区别。师兄出来后也很郁闷,说我连内存管理都做了,能不懂这两者的区别吗!我估计师兄是面试时没能把两者的准确定义给出来,所以被鄙视了。但实际上,师兄做这个操作系统时很细心,在做内存动态分配时,想省一个4字节的指针所占的空间,和我讨论了好久。说我们浮躁,真不知道是谁在浮躁。

这也反应出一个问题,就是中国现在的IT行业眼光实在狭窄了点。仿佛要搞IT个个都必须是程序员,没有一个公司重视理论方面研究。而中国的研究生教育仍是苏联模式,着重于理论。像我现在在做一个VOIP网关,想毕业也必须把毕业课题放在《网络性能与自适应纠错》上。教育和市场脱节,却单纯的指责我们混日子、虚度青春,实在是不负责。这样说的人,让他来天天推公式,用matlab仿真一年的算法,就知道这日子也不好混了。

再说说其它的。《一个假程序员的心里话》作者说到写c编译器,好像要会这个才像个程序员。诚然,写一个编译器会对编程的认识有很大的提高,但一定是必须的吗?反正我是没这个兴趣。一方面人笨,怕弄不出来闹笑话;另外也确实没这个时间。但我旁边牛人多,一个同学用FPGA实现了java虚拟机,虽然借助了国外一位博士的经验,但我觉得也够牛了。我对java了解不多,FPGA也只是用过,不精通。不知道一个java虚拟机和一个c编译器谁难,但我认为能用硬件实现,做成个专门的微处理器,实现了几十条伪指令,应该有J2ME的功能了吧。呵呵,这方面我的确不懂,说错了请各位高手指点。

说了这么多,都是说我们非计算机科班的。但我想,既然我们非科班出身的都能做到这些,科班出生的master、doctor就更不用说了。至少我不相信别人连几个排序算法都不会。

最后再说两句语言之争,虽然事实证明了争论这个毫无意义。但因为我最早学的是vb,所以看到有人说它坏话还是忍不住想说两句。《假》一文作者说道:“我真的不敢叫他们是程序员,以为会点vb,能拖一些控件在上面就能叫程序?如果这样想,真的完了!”会点vb就不能是程序员了吗?程序员这个头衔有什么值得炫耀的吗?我是5年前学的vb,3年前转做c++了。我就是只会用vb拖点控件写程序,因为我实在想不出用vb不用控件干嘛。用sub main写个不要窗口的程序吗?那我不如用vc写,毕竟在vb里用api远不如用vc来的方便。但是,vb写出的程序一样可以很优秀。我这个连假程序员都不是的人也可以拖几个控件写一个单片机的开发平台,虽然编译器不是我写的,我也写不出来,用的是keil c里汇编和c的编译器,但我至少完成一个开发平台的功能,还具有某种程度上的软仿真。我觉得,用vb完成的一些复杂程序反而比用c++完成的更应该受人尊重。毕竟能在语言有所限制的情况下做出复杂的程序,往往更能体现出编程人员的水平。比如我们现在做的一个消防监控中心,就是用vb写的,里面的电子地图囊括了矢量图操作大部分功能,而矢量地图编辑器也是vb做的,这难道就不是一个真正程序员做的吗?人家李维老师对Delphi如此精通,Delphi也不见得比vb高级到哪儿去,你能说别人不是程序员吗?

再补充一点,搞IT的不只是程序员,没硬件你程序哪儿跑去。可能也只有中国才简单的把IT=程序员。果真如此的话,我们那10几块DSP组成的运算阵列不知道算是什么。

好了,说了这么多,肯定有很多偏颇之处,只是小弟个人的一些观点,不吐不快。说很多master连专科生都不如,那是可能的。至少我知道有些学计算机的master(不是我们学校的)搞了一个月也没用sockets发出信息,但这毕竟是少数。中国有个古老的成语,是这样说的:如果你用一把牛刀去杀一只鸡,会发现反而不如一把菜刀好使。同样,有些工作只需要专科生做,你让一个研究生去,也不要指望他就一定比专科生做的好。但是反过来,你见过用菜刀杀牛的吗?


(以上观点如果有过激之处,请大家包涵。我个人绝对相信能力比学历重要。我也绝对相信大部分master、doctor是谦虚的,我们知道还有很多东西要学,经验往往是最重要的。仅以此文驳斥对研究生有偏见的人们)

阅读更多
下一篇在Linux下实现comer的TCP/IP协议--写在前面的话
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭