我对读计算机软件专业硕士的几点见解


分析得比较深入的一篇好文,原文出处找不到了...算法


就我本身的理解,谈谈我对读研和软件学院的见解,不妥之处一笑了之便可。编程

  若是你有实际开发工做经验,感受本身的水平和实力进入了一个高原期,迫切须要从理论上提升,那么计算机学院是惟一选择。由于计算机学院才能让你在理论上更上一层楼。软件学院从教学计划上就没有把你往这方面带。固然能不能更上一层楼最终仍是彻底取决于你本身。须要特别说明的是,工做经验并不必定等于开发经验,我见过不少工做2-3年的人,可是没有一点开发经验。架构

  你说:“他们都有很强的开发能力,只是不太喜欢读书,也只是但愿混个学历对从此在岗位上晋升有好处”,我能够向你保证,你所说的人绝对不是开发能力很强的人。由于,1)高手不可能不喜欢读书;2)高手不可能想去混一个学历;3)高手不可能认为晋升是由于学历的缘由。函数

  还须要说明的是,考计算机的人未必个个都是高手,严格来讲,大部分都不会编程序。也就是说,庸庸碌碌之辈仍然占绝大多数。研究生毕业的师兄只拿 2500元左右的比比皆是,因此不要寄但愿于拿一张研究生文凭出去赚高薪。可是,对于有实际开发工做经验的人,要想本身在3年之中有一个真正的提升的话,计算机学院提供了广阔的平台。就我所知,每个月拿2万以上的也有(上海育碧,图形特效算法设计)。因此,同为研究生毕业,能力的差距是极大的。因此,不要去问“研究生毕业能拿多少?”,要问“像我这种水平的人,研究生毕业能拿多少钱?”这样人家才可以准确地回答你。工具

  所谓“有实际开发工做经验”是指你目前已经具有下列能力:1)你已经认为C++和汇编语言都是很简单的语言,并可以自如地运用;2)你可以在 30分钟以内想到正确的五子棋AI算法设计思路和方向;3)你彻底理解STL为何这么重要;4)你可以独立地解决全部的编译与连接问题,哪怕你历来没有遇到的问题,你也不须要询问任何人;5)英文网站是你的首要信息来源;6)可以读懂英语写成的国际标准,好比NTFS磁盘格式标准。7)你常常站在集合论的角度思考算法问题;8)可以理解一个简单的驱动程序,可以理解一个简单3D交互程序;9)你可以认识到线性代数和几率论在实际编程工做中的极端重要性;10)你彻底理解COM的设计思想,尤为可以理解COM为何要设计成这样;11)当我说到虚函数的重要做用时,你不会急着去找书来翻;12)你可以说出C++为何比其余语言优秀的理由,记住这种理由应该来自于你的开发体会,而不是由于其余人都这么说。此外还有不少判断标准,但若是你同时具有5条以上,能够认为你已经具有相应的开发经验了。在这种状态下读研,你将取得读研效益的最大值。性能

  读研最重要的是要明白你本身要干什么,不能等导师来告诉你你应该干什么。研究生的优点在于理论功底深厚,思惟具备穿透力,固然编程能力首先要过关,不要读完研究生还不知道MFC程序的WinMain函数在哪里。因此,研究生期间,你必定要作有理论深度的算法设计,好比大规模数据的搜索算法,性能是首要考虑因素。不要奢望SQL函数可以帮你解决问题,全部的问题你都必须本身解决,你必须解决内外存交换的性能瓶颈。再好比极品飞车的3D场景生成,图形变换,碰撞检测,物性模拟,纹理映射,灯光模型等等,这些都是能够保证你能拿到2万以上月薪的技术。若是你认为这些东西太难,不可能作得出来的话,那么你就不适合读研。真的,要是你认为读研以后仍是要去搞通常的程序设计,如信息管理系统之类的软件,那么你读研的价值就彻底不会获得体现,由于这些工做根本就不须要读研。学习

  软件学院宣称培养软件开发人才,恕我直言,我历来没有看见那个高手是培训成功的。成为软件开发高手的路只有一条:自学!软件开发中须要大量的编程实践和独立思考,只有在此过程当中,你才可以逐步成长起来。软件学院宣称培养软件项目经理,这更是搞笑,在某种意义上这是欺骗行为。学院里面可以培养出软件开发经理更是十足的谎话,软件项目经理必须,或者说更强调从战争中学会战争。没有实践经验的项目经理就是绣花枕头一个。网站

  实话实说,软件学院就是一个蒙钱的机构[刺猬: 惋惜我就是软件工程专业毕业的],公关工做作得很好,善于打广告,并且都是打着高薪的幌子,就如同外面的什么北大青鸟培训班同样。两个字:蒙钱!四个字:仍是蒙钱!人工智能

  总之一句话,若是你只想成为软件开发高手(好比认为会编驱动程序或杀毒软件就是高手的那种),建议工做,不要考研;彻底没有工做经验的,也不建议考研,你进来了只有瞎混一通。若是你有上述工做经验且想成为高级软件工程师(可以独立理解并设计出快速傅立叶变换算法的那种软件工程师)的话,那么强烈建议考研。考研让你有3年放松思考的机会,也有3年让你思想和技术积累沉淀的机会。很是可贵的机会。不考研的话,这种机会就是一种奢侈,可望而不可即的那么一种奢侈。设计

  因此,无论你是哪种状况,都不建议考软件学院。除非你是女生,把可以成为一个研究生当着一辈子最大知足的那种女生。

  关于读书的机会成本问题。读研的机会成本的确是很高。任何人均可以简单地计算出来。因此,我也不同意全部的人都去读研。读研只适合那些痛感数学在编程中的极端重要性的人。若是对理论工具和理论思惟的极端重要性没有切肤的认识,那么读研的价值几乎为0;读研的好处在于:A,把你本身放在一个学术和工程的交叉点上;B,让你具有了进入微软等世界顶级软件研发机构的可能性;记住只是可能性。可是不读研这种可能性为0;C,如前所述,若是没有读研的机会,你也就没有静下心来好好钻研几年理论的机会;一边工做拿高薪,一边深刻地学习各类理论,诸位认为这可能吗?我反正认为不可能,我以为学习钻研理论最须要的就是一个长期安静独处的环境,一边工做一边读书是不可能有这样的环境的,你会以为天天都在疲于奔命。而读研正好能够提供这样一个环境。我同时还反对成天跟着导师的屁股后面跑,这样会浪费不少时间。读计算机的研究生,主要依靠本身去查阅最新文献,本身去研读文献,和导师的口头交流一个月一次就足够了,前提还须要导师的水平足够牛。若是导师的水平不牛,这也不要紧,不理他就是了,本身作好本身的事情便可。

  2)关于研究生教学质量问题。坦白地说,全国都是“洪桐县中无好人”,尤为在计算科学领域,大牛极少。那为何还要去读研?大哉问!把读研的收获寄托在名校或名师的名气上,是注定要失败的。读研全靠自学,研究生之间的差距所有体如今自学能力上面。又有人问,既然是自学,为何非要读研?回答是:由于读研就是为你买一份保险,就是买一份你自学三年以后不会失业的保险。这份保险主要是一种心理上的后盾,让你在自学过程当中经得起诱惑,可以从容镇定地去追寻计算机理论发展的坚实足迹,从欧拉,费马,高斯,康托,图灵等巨匠那里寻找方法论的珠宝。假若没有这份保证,你在家里面自学3个月,保证你会被失业的压力压得喘不过气来,何谈安心学习?

  3)关于实战经验与理论学习的优劣问题。这没有定论,如前所述,管理信息系统,设备驱动开发,工具软件开发,软件病毒剖析等等这些工做不太须要创造性,须要的是耐心和经验,须要的是对既有规范的准确理解,这类开发工做最适合在实战中提升,理论学习没什么做用。可是在人工智能,模式识别,图像压缩,虚拟现实,巨量数据检索,天然语言理解,计算机图形学等等领域,理论学习就占据着绝对的统治地位!这些领域的突破对人类的生活的影响是极其巨大而深入的。某些领域处于一个极其快速发展的态势之中,好比计算机图形学,相信诸君可以从众多3D游戏的灿烂辉煌中体认到个人这种说法。在这些领域,若是没有扎实的理论功底,一切都是那么遥远,无论你花了多少时间在编程上面。

  4)关于高级研发人员的知识结构问题。首先声明,我不是一个纯粹理论激进分子,即认为除了理论以外,一切都不重要。我认为,纯熟的编程技能是最基本但也是最必不可少的技能。没有这个基础,一切计算机理论就是空谈(研究图灵可计算性理论的研究者除外)。有了这个基础以后,下列理论学习方向必须重点突破:

  1,科学哲学。这是核心中的核心!惋惜国内不开这门课。不但不开课,并且还做为批判对象来引用,实在是遗憾至极!这是一门教你如何“钓鱼”的学科,在一切科学研究中居于最核心的地位。它是古今科研方法和思惟方法的集大成者,很难想象一个成熟的研究者没有一套本身的方法论体系。科学哲学最须要的是领会与总结,它的思想与启示会伴随咱们的一辈子。

  2,康托集合论,矩阵方法,离散结构,图论方法,群论方法之间的紧密关系。最重要的认识这些理论对实践的重要启示和方法引导。我始终认为,若是你学了一门理论以后,殊不知道这门理论有什么做用,那么你的理论就白学了,你什么东西都没有捞着。因此,学习任何理论以前,先问本身:它有什么用?在哪里用?如何用?带着这些问题去学习理论,你才会真正地学到东西。用这三个问题去问你的理论课老师,他的回答就是判断其实际水平的最佳标准。

  3,思惟要有极强的穿透力,学会看透文献做者没有写出来的动机。绝大部分大师都有隐瞒本身最具备方法论启示意义的思考环节的习惯。牛顿和华罗庚先生都有这个坏习惯。这让你们认为他们是天才,由于不少问题他想到了,咱们想不到。可是为何他们能想到,咱们想不到?他们是怎样想到的?没有人告诉咱们牛顿发现万有引力定律时的思考过程,固然,牛顿能够慷慨地把他的思考结果告诉咱们,可是,他那能够点石成金的“金手指”却没有教给咱们。咱们的任务就是要培养透过文章看穿做者背后意图和动机的能力,在这方面,台湾的侯捷和美国的Donbox是绝佳典范。这两只老狐狸(呵呵,是爱称)凭着其猎犬通常的嗅觉,抽丝剥茧,一个把COM背后的幕后设计动机揭开并暴露到了光天化日之下,另外一个把MFC的宏观架构作了一次完美的外科手术。其非凡的思惟穿透力使人惊叹。

  4,英语。英语自己不重要,可是用英语写成的文献就极其重要了。因此,专门把英语做为一个重头戏列出来。你们不要相信英语无用论的鬼话。对于搞计算机的而言,英语就是你的母语!

  5,其它的具体理论还有不少,可是都不如这三个方面重要,由于我以为这三个方面是最具备根本性,全局性的能力培养环节。须要指出的是,不少高深理论对你的工做是无心义的,小心时间陷进去。必定要把效率最高的时间段用在最具备决定性意义的理论学习上。

  5)关于读研以后的出路是否光明的问题。咱们应该认可,读研以后,你的工做机会不是变多了,而是变少了。并且越是高手,他的工做机会和工做范围就越少。这是由于,越是搞前沿研发的公司,其数量越少,在这个圈子的人也就越少。你找工做的范围就越小,试问:若是微软的OS设计专家出来找工做,可以让他选择的公司能有几家?可是,这种公司数量的减小是以工资待遇的急剧上升为补偿的,同时,你在工做中所受到的充分尊重也是在通常公司中体会不到的。因此不要担忧学了高科技用不上,呵呵,你只会愈来愈感受本身学的不够用。相信接到过猎头公司电话的人会体会获得。真正的高手历来就不会担忧工做的问题,也历来不会到人才市场上去找工做。既然选择了理论深刻,那么就应该把眼光放得更远。

相关文章
相关标签/搜索