一个软件工程师到底有多远
从高中毕业生,到一个软件工程师的成本是多少呢?这得分是什么软件工程师。
如果是批量培训,学习某种语言的语法,针对特定领域(主要是网页)进行编程。大约需要六到八个月,差不多就是北大青鸟培训生这样的。这种软件工程师拿来基本没法用的,即使是打磨变成熟练工后,最多也就是消耗品。基本每年这个水准的人都会出来数十万,个个新鲜热辣精力充沛不怕压榨。
如果是常规软件工程师,需要一年的基础课程,软件工程导论,计算机系统原理,高等数学等。一年语言和实践,C语言,数据结构,离散数学等。一年系统学习和工程方法论,编译原理,操作系统,数值算法,软件工程学。最后一年的第二语言和实践。java,软件实际开发等。如果顺利,并且用功的话,一个常规软件工程师大约需要本科四年。
中国软件专业毕业学生据说150W之多,有多少能达到常规软件工程师的水准,并留在中国呢?大概一万出头。八成以上的学生由于学习靠混,或者实践不足,因此实际上处于批量培训略强的地步。有些还不如批量培训生。软件毕竟属于工程学科,是门硬功夫。虽然不如数学那么硬气,但是靠混是混不到软件工程师的,混软件销售还有点希望。这也是为什么很多软件专业出来的学生不做软件的原因。
当然,其实还有部分人是因为水准问题,考研或者出国了。
如果能完全掌握上面的一堆东西,那其实是相当牛的一个人了。加上一定的经验,基本可以胜任任何软件公司中层以下职位。可惜中国奇缺的就是这种人,10多年软件产业发展下来,总共积累了不到20万人。
如果在普通软件工程师的基础上,钻研某个细节领域,并且有所突破呢?研究生?错了,你成不了研究生,最多当上研究员。软件业在中国发展不过20多年30年的事情,没有任何一所学校有足够的学科积累,能够领导某个领域的发展。(当然有少数几个例外)我们用的流行网络协议,有多少是美国大学领导开发的?多少是中国大学?底层核心算法中,有多少是中国学校发明了去美国申请专利的?所以如果你在某个领域有所突破,最多被相关公司看中,招进去当研究员,活的很滋润。如果真有了本事去考研——你自己看结果吧。
程序员的最高境界是什么?那基本是Donald Kunth,Richard Stallman这种的。要么将计算机科学基础发展到极限,要么将某种哲学引入计算机领域,并且改变世界。
这种程序员,中国一个没有。十年内也不会出。