软件工程:研发/测试
软件研发方面,主要是工程性的东西,多实践就好,本科的理论水平足矣,从公司招聘的岗位要求就能看出来。研究生因为学的时间更长,上研期间一般会跟着导师做项目,所以有优势,学历本身倒不是很重要。
对于学习能力比较好的人,软件研发上手很快;而目前互联网发展迅速,需求大,工资也不低。如果感觉技术水平不够做不了研发,可以尝试软件测试方面,要求低一些(因为研发是在创造,测试则是在寻找问题并完善)。
软件方面也有很多具体的分类,例如移动客户端(Android/iOS/WP),Windows客户端,Web开发(前端/后端)等,具体可参考公司(特别是互联网公司)网站的招聘信息。
做软件工程写代码,往往难度一般,做了几年就没有太多成长空间了。在国外有些人因为兴趣一直坚持了下来,但是国内比较少(往往是现实因素约束)。
算法/科研方向
做过ACM/数学建模之类的可以考虑算法方面,ACM做的特别好的,还可以尝试面试谷歌等国外互联网公司。算法一方面要求大脑灵活;另一方面,也需要一定的理论知识,特别是数学知识。有些算法对于理论要求不高,本科水平基本就够了。
有些算法偏科研方向,本科生的理论水平往往达不到要求。这方面做的主要是理论研究,然后将理论成果转化成算法,对于编程本身要求并不高。例如人工智能,图像处理、语音识别等。推荐一本科普书籍《数学之美》,里面就说的是语音识别相关的知识,可以作为开阔视野、了解这个领域的相关内容所用。
这方面具体的岗位如:算法工程师、数据挖掘工程师等。
工程/理论
总体说来,软件研发偏工程,算法偏理论。工程与理论,有点像物理与数学的关系;同等水平的物理和数学,物理当中用到的数学简单很多,更多的关注实际问题,每个简单式子都可能涉及很多背景知识。
单片机/嵌入式
本科生做单片机/嵌入式方面也可以。嵌入式算工程方向,理论要求不高;难度较大,主要因为涉及的东西多,包括软硬件。本科阶段有限的时间里,嵌入式能学到的内容比较有限。但是只要好好学,本科毕业足以找到一个还不错的工作了,例如2014年美团的嵌入式岗位,待遇很不错,和软件方面的安卓研发差不多。
关于嵌入式的具体介绍,可参考:
《嵌入式科普:基本概念,设计流程,开发特点,如何学习》 https://www.hainter.com/embedded
纯硬件
纯硬件方面,包括模拟电路设计、射频、天线、开关电源设计、PCB设计、电磁兼容、可编程逻辑电路设计(FPGA之类)、芯片版图设计(专用集成电路ASIC)、集成电路设计制造等。
纯硬件特别是模拟电路、射频这类,难度较大,需要较多理论知识,还有大量经验积累。经验很丰富的硬件工程师非常难得,年薪百万都不成问题。另外学习硬件需要成本较高,比较烧钱(最好通过实验室和竞赛进行学习)。
有关模拟电路的一些特点可参考:
《模拟电路设计:理论的神话与残酷的现实》 https://www.hainter.com/analog-circuit-design
《我对模拟电路课程的理解》 https://www.hainter.com/analog-circuit
电赛流程可参考:
《2013电赛总结【西电专用】》 https://www.hainter.com/nuedc
技术学习的思路方法可参考:
《大学期间如何成为技术大神》 https://www.hainter.com/tech-study-in-college
学习存在感
个人感觉不像互联网和应用软件,偏底层的嵌入式和纯硬件的学习存在感比较低。有嵌入式大神自己写了好几个月的BootLoader,外行人问他在做什么,竟无言以对……当然自己感兴趣就好(但是不可否认,存在感有时候也是学习的一个动力)。
这里还有个故事。程序员Linus写了两个月的终端仿真器,终于成功了。兴奋的给妹妹看,妹妹盯着显示器看了大约五秒钟,看着屏幕上输出一串字母A和B,说了声「很好」,然后就没有然后了。这是使用广泛的Linux操作系统最开始的创造过程。
社会发展趋势
因为近几年互联网非常热门,很多从事软件的都能轻松找到工作,并且工资不低;相比而言,同样的技术水平,硬件稍有劣势。如果能一直坚持做硬件,经验积累的多了,感觉会很有前途(当然还是要看发展形势和社会需求)。
互联网公司做的,基本都是大家会用到的App、网站这种大众产品,大家都知道。而硬件公司中除了华为、小米这种做大众数码产品的,很多都不为人所熟悉。例如德州仪器(TI,全球领先的半导体公司),直到大学我才知道(又想到了存在感)。
工作的重点还是看社会需求。社会是不断变化的,谁也说不准未来会怎样。我上大学的时候,都说通信是非常好的一个专业,但是在大学里碰巧我自己学的东西和通信没有密切关系,学了安卓开发,碰巧发现互联网很火,所以找到了不错的工作,人品大爆发。
对于未来的趋势,网上有很多的介绍。目前互联网很火,智能硬件也在发展,还有很多比较大的概念,物联网、云计算、大数据、人工智能等等。
我比较看好的方向,首先还是互联网(目前很好,但是再过个三五年就不好说了);云计算之类的概念,越来越多的依赖服务器和网络,所以服务器方面的需求仍然会很大;软件有云端化的趋势,本地应用将有可能逐渐被云端应用替代,所以网站方面的技术会是不错的选择(Chrome OS云操作系统)。
智能硬件、可穿戴设备、软硬件结合是一种趋势,在未来的几年可能会发展的很好,到时嵌入式就有优势了;自动化控制、机器人、机械这类,不会很快被淘汰;模拟电路设计也是“历史悠久”的技术(电路这种东西不会轻易被淘汰,虽然电路可能没有太多进步空间了,但是总是得有人来做的);人工智能应该在很长的时间里,都是一个热点问题,因为创造出智能程度和人相当的“生物”或是“机器”,一直是人类的梦想。
就目前来看,很多热点问题例如人工智能、大数据,往往技术上都需要一定的理论支撑,本科生的理论基础不够。可以考虑转行从事管理等方向。而如果想研究前沿技术,继续学习理论是有必要的。有机会出国比较好,一方面在国外能开阔视野,另一方面能接触到国外相对先进的教育和技术。
另外,德国“工业4.0”概念也是很值得关注的内容,具体可上网搜索。
工作企业/研究所
工作的企业有很多种,央企、国企、私企、外企等。其中,央企是直接由中央政府监督管理的企业,国企一般是由地方政府监督管理的。在这两类企业工作的特点一般是,工作稳定,相对轻松(基本上不会加班),工资相对低一些;另外如果是党员,可能会有优势。而私企、外企就不一定了,有些公司特别是互联网公司,加班都比较多,压力大,但是工资高;政治面貌一般没有什么直接影响。
下面要说到科研问题。按我的理解,科研首先投入很大,各种科研仪器非常昂贵;其次不确定性或者说是风险也大,可能某项研究投入了很多资金和人力,也没研究出来什么成果。正是因为这样的特点,往往是研究所、学校、国有企业、实力强大的公司,才有更多的可能做科研;小公司往往没有那么多的资金,也承担不起这样的风险。
研究所一般就是做学术科研的,所以对理论知识水平和学历要求高,一般至少是研究生。如果完全按照研究成果来发工资,不少科学家估计都要饿死了,有些科学家一辈子也没能研究出来什么成果。如果是党员,进一些研究方向与国家有关的研究所,可能会有一定的优势。
科研工作成果难以考核,所以研究所一般最基本的工资还是有保障的,也因此会有人工作不积极。从这个角度来说,如果想偷懒,研究所可能会比较轻松。但是国家需要有更多的人,认真专心的做学术科研。学术腐败造假什么的,听说的也比较多,不止国内,国外肯定也有。
因此有人担心进了研究所,体制和环境会限制科研,不能很好的实现自身价值。虽然并不了解具体情况,但是我觉得可以争取进一个比较好的研究所;如果真能潜心做研究,条件上的问题可以克服。