大学与计算机科学

今天闲暇之余刷QQ空间,无意看到自己发的说说。顺着时间轴往下拉,曾经的自己映入眼帘。

当初的无知,幼稚,年少轻狂跃然于屏幕上。

我很感谢上苍能给我上大学的机会,也感谢自己高三时期的努力,毕竟万事并不是努力了就会有回报。

我也感谢同学们,老师们,我曾喜欢过的人,还有大学期间与我相识的所有人。他们让我的青春充满了回忆。

回忆起整个大学生涯,环境是及其封闭的。

内江这座城市并没有IT产业,作为学生,我们无法更好的了解社会,也无法了解到技术的发展进程,更无法和在职人员进行深入的交流。

学校与社会的这种滞后是致命的。

我在大一的时候就意识到这个问题。在封闭的环境下,我只能通过互联网去了解世界。

没有前辈的指点,我只能跟随自己的兴趣。在大一选择专业方向的时候选择了网络工程方向。

这不仅是我的兴趣,还是擅长的领域。

我高中就读的是职业中学,所学专业是计算机应用专业,并在高中期间受老师的影响,对网络产生了浓厚的兴趣。

那个时候,我就对网络有一定的理解了,知道什么是HTTP,FTP,DHCP,DNS等,并能运用相关工具搭建服务。在老师的点拨下,学会了CCNA的一些基础知识。

尽管当时对于我家乡这座小县城来讲,电商还不发达,快递也并不像现在这样百花齐放。我依然通过网购书籍自学,学会了VB编程。我依然记得我满怀期待的等了半个月才收到书,当时易语言和Delphi还很流行,真是怀念那个时代。后来我在技能大赛中获得了二等奖,全国中小学生编程竞赛中拿到了县上的第一。

我在选择专业方向的时候,把专业介绍来回读了好几遍,反复比较了开设的课程,最终觉得网络工程方向的课程更感兴趣。

其实,从宏观上来看,我们系开设的课程都大同小异,专业公共课都是一样,例如数据结构,操作系统,编译原理,数据库系统。唯一的区别是一些专业的特色课程。像我们网络工程会有TCP/IP协议分析,路由与交换,Linux等,软件工程会有软件工程导论等。

因为如此,毕业的时候我才知道我们系软件工程和网络工程两个专业发的学位证书,都是计算机科学与技术。

当时我的目标是网络工程师,所以对C程序设计,Java程序设计,Android移动开发等课程都没放在心上。倒是对计算机网络,TCP/IP协议分析,路由与交换技术等课程比较上心。尤其是对数据结构,操作系统,编译原理,数据库系统比较排斥,因为我觉得未来从事网络工作用不着这些。

后来因为种种原因,我毕业后并没有成为网络工程师,而是成为了程序员。

我想是因为一些机缘巧合吧。也许是因为后来参加了校企合作,也许是因为网络工程师的薪资待遇不如程序员。

从现在的工作中,我越发的意识到曾经大学开设的专业基础课的重要性。尤其是数据结构,操作系统,数据库系统,计算机网络。

曾经的我觉得这些都是理论,脱离实际且枯燥无味。现在我觉得正是这些理论,才指导了自己的实践。

尤其是在对项目进行性能优化的时候,通过这些理论的指导,我会把优化的过程拆开成多个的模块,从不同的角度去分析性能瓶颈,而不是一个独立的整体。

正是这些理论,塑造了我解决问题和分析问题的能力,而不是仅仅依赖于百度和谷歌。

正是这些理论,才能让我快速理解并掌握新技术。

如果在将来我需要设计操作系统,数据库,或者是创造自己的私有协议,都离不开这些理论的支持。

我对曾经的想法感到好笑,单纯的认为这些理论没有实际作用。我想这与我职高出身息息相关吧,因为职业教育是重实践的,而本科教育是重学术的。

我觉得大学的课程就像是在研究刷子,而不是教你怎么用刷子。也许你掌握了怎么用刷子就能成为油漆工,但你掌握了怎么造刷子却可能成为画家。因为当你知道刷子不好用的时候,知道该怎么去改进和创造新的刷子。

大学是教你如何成为计算机科学家,而不是教你成为技工。成为技工,那是技校和培训机构干的事情。

我越发的觉得我们是站在巨人的肩膀上。我们所用的C,Java等,都是无数前辈心血的结晶。当C语言因为指针操作内存不方便,开辟了内存空间容易忘记释放,于是便诞生了Java。Java充分吸收了C的缺点,引入了自动回收,让编写的程序更加健壮。

除此之外,还有Python,以及后期之秀的Go,Ruby,他们无不是站在巨人的肩膀上,在已有编程语言的基础上,去其糟粕,取其精华。

但是在现实的生活中,让我失望的是大部分公司需要的是技工,而不是计算机科学家。这些公司只需要你运用一两种编程语言,实现业务逻辑。你不需要去创造新的框架,只需要理解。当出现新的框架了,你只需要会用他们干活。当你通过阅读过框架的源码,深入理解了原理,就能成为高级工程师,成为大牛。任何复杂的逻辑算法,数据结构,都给你封装好了。你只需要去调用即可。甚至编程可以不动脑子,直接复制粘贴。

于是就有培训机构宣传:零基础学IT,月薪过万不是梦。然而培训周期只有短短的几个月。

整个IT圈都非常浮躁,大家都忙着赚钱,谁管技术怎么样。对于技术,够用就行。当Java12推出,还有公司在用Java6.

大家都在赶风口,追随潮流,得抓紧一切世间研发出产品并抢占市场。加上培训机构的推波助澜,每年量产大批人涌入人才市场,当供需关系被破坏,于是便有了996。除了收入下降,为什么不反对996呢?因为你走了有的人是人愿意来接替你继续工作。

我认为任何一个合格的程序员,都应该具有计算机科学的思想。当你遇到连接异常,难道还会认为是代码逻辑的问题吗?难道不知道可能是网络问题吗?当你的web服务器抛出HTTP 404,难道你还会去检查代码吗?当你在公司,同事给你一个192.168开头的IP地址,难道你还会想回家再去连接吗?

如果不具备这些思想,没有足够的理论基础,我觉得成为一个优秀的程序员是非常困难的。

我常常在网上看到有人提问,他们高中生,甚至是初中生,听说工资高,想转行学编程。我的回答一般都是劝他们参加高考,考个好大学的计算机科学与技术专业。对于一些专科学历的学生,我也会劝他们学习一下数据结构,操作系统,数据库系统等课程。

大学太重要了,一个好的大学更重要。大学学的不仅仅是理论,而是计算机的灵魂。

在一所末流本科大学,计算机科学学院排名倒数,老师讲课都是按照PPT照本宣科,甚至你的提问都回答不明白。学生玩手机,老师混工资。上课不听讲,期末划重点。

我也是在毕业那年参加校园招聘才知道好大学和末流大学的差距。人家参加的是ACM竞赛,而我们参加的是蓝桥杯。人家在大学时期就跟着导师做项目,积累了丰富的项目经验,而我们还要另外花钱靠培训机构,靠校企合作积累项目经验。人家把毕业院校写到简历的首页,而我们却只能写在简历的末尾。

我仍然相信努力是可以弥补学校之间的差距的,虽然努力了不一定会有结果。就像是瞎子很难成为画家,聋子很难成为音乐家。但开设的课程都大同小异,只是学校的要求不一样罢了,好的大学要求更严格一些,学生的基本功更扎实一些。

至于未来如何,看努力,看造化,看运气。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注