非科班程序员和科班程序员的差距到底在哪里?
阅读本文大概需要 5 分钟。
作者:黄小斜
作为一名典型的非科班程序员,我在学习和工作一段时间之后,发现了自己跟科班程序员还是有很多的的区别,不管是思维上还是做事风格,以及对待问题的解决方式,都感觉有些差强人意。
今天我就给大家梳梳理一下,科班成为相对于非科班程序员,他们的优势到底在哪里?
第一点那就是算法能力。为什么要强调这一条呢,大公司总是喜欢考算法,平时有些项目也有可能用到算法,总之算法就是衡量一个程序员的一把利器,作为非科班程序员,大部分时间,学习算法都只能靠自己,作为计算机领域的一门难题,没有老师指导,没有一些好的学习方式,那么你在算法上面的成长,可能也会很少。
对于算法问题,即使是科班的程序员往往都很难以去克服,更别说我们这些半路出家的程序员了,记得我当初连数据结构,都不知道是个啥,这种情况下去学习算法,真的就是扯淡,学会了数据结构之后,发现也只是学了皮毛,等真正接触一些面试算法题,才发现计算机的世界原来如此的博大精深。
除了算法之外,更要命的东西来了,就是计算机基础,传说中的四门专业课,我相信这几门课程也是横亘在科班程序员和非科班程序员之间的一道巨大鸿沟,科班程序员基本上在大学期间都有机会接触到这些基础课程,而非科班程序员几乎是无法接触到这些课程的。
一般来说,他们能够掌握一门语言,并且学会了如何做项目之后,就觉得自己已经学的很多了,很多非科班的程序员都不知道,对于程序员来说,这些作为根基的东西也是他们必须需要学习的,比如计算机网络,网络编程的基础,如果我们搞不懂计算机网络的话,你甚至连电脑上的ip配置都搞不清楚。
操作系统则是很多编程语言能够运行的基础,不管你用的是Java,还是C++,你都要对操作系统有一定程度的了解,操作系统是你理解各种高级编程语言的基础,特别是后端编程,我们需要考虑内存管理,考虑并发编程,考虑网络编程,等等等等,这些东西都必须跟操作系统打交道。
数据结构就不用说了,刚才我们在算法里已经提到了。还有一门很重要的课程就是计算机组成原理。你不知道计算机组成原理,你就不知道电脑到底是怎么启动的,更不知道CPU到底是如何运转的,如果你连这些都不知道,等以后你真正遇到这些问题时,再让你从头学起,岂不是天方夜谭?
想到这里,我不禁两行清泪,我的计算机基础其实也是靠自己恶补补回来的,虽然说现在也只是个半桶水,但是也已经算是非科班程序员中做的还算不错的了,即便如此,我还是经常在遇到实际问题时,因为对计算机基础掌握得不够好而走弯路。当然了,非科班程序员也有自己的优势。
比如说,理解事情的能力和解决问题的能力,我觉得科班程序员,他们能够成为一个程序员,是一个非常正常的事情,他们按照自己的原有轨迹去做,毕竟这是他们比较熟悉的领域,并且能够把它们做好,非科班程序员就像是半路杀出个程咬金,可能你不知道他之前的积累是怎么样的,你只知道他现在可以通面试。
这里不得不提一点,就是非科班程序员的跨界能力,非科班程序员大多是自学成才,其实要跨界成为一个程序员,还是比较有挑战的,毕竟我们可以在他们身上看到更多的可能性,他们更加有变通的思维,至少在自学这个方面,他们更加有话语权。
所以非科班程序员往往更有自学能力,他们有很好的技术视野,知道如何去扩展自己的技术边界,毕竟他们知道如何很快的切换到另一项技术,或者是另一个领域。对于非科班程序员来说,这种跨界的尝试会更加的轻松一些。总结了以上这几点,我觉得科班程序员和非科班程序员并没有什么天壤之别,只不过大家开始的时候不一样。
大学的时候由于学校原因,我没有选择计算机专业,但是我在读研的时候,仍然选择了我当时想要选择的计算机专业,也有很多人是为了高薪进入互联网公司,也有很多人是因为自己的热爱而开始自学。
不管出于什么目的,不管是如何开始的,非科班程序员和科班程序员在未来的道路上都会逐渐的越走越近,最终他们之间可能没有太大的差距,我想他们各有各自的优势,也各有各自的缺陷,你说呢?