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