不管是思维上还是做事风格,以及对待问题的解决方式都有所区别。
今天我就给大家梳梳理一下,科班成为相对于非科班程序员,他们的优势到底在哪里?
第一点那就是算法能力。为什么要强调这一条呢,大公司总是喜欢考算法,平时有些项目也有可能用到算法,总之算法就是衡量一个程序员的一把利器,作为非科班程序员,大部分时间,学习算法都只能靠自己,作为计算机领域的一门难题,没有老师指导,没有一些好的学习方式,那么你在算法上面的成长,可能也会很少。
对于算法问题,即使是科班的程序员往往都很难以去克服,更别说我们这些半路出家的程序员了,记得我当初连数据结构,都不知道是个啥,这种情况下去学习算法,真的就是扯淡,学会了数据结构之后,发现也只是学了皮毛,等真正接触一些面试算法题,才发现计算机的世界原来如此的博大精深。
除了算法之外,更要命的东西来了,就是计算机基础,传说中的四门专业课,我相信这几门课程也是横亘在科班程序员和非科班程序员之间的一道巨大鸿沟,科班程序员基本上在大学期间都有机会接触到这些基础课程,而非科班程序员几乎是无法接触到这些课程的。
一般来说,他们能够掌握一门语言,并且学会了如何做项目之后,就觉得自己已经学的很多了,很多非科班的程序员都不知道,对于程序员来说,这些作为根基的东西也是他们必须需要学习的,比如计算机网络,网络编程的基础,如果我们搞不懂计算机网络的话,你甚至连电脑上的ip配置都搞不清楚。
操作系统则是很多编程语言能够运行的基础,不管你用的是Java,还是C++,你都要对操作系统有一定程度的了解,操作系统是你理解各种高级编程语言的基础,特别是后端编程,我们需要考虑内存管理,考虑并发编程,考虑网络编程,等等等等,这些东西都必须跟操作系统打交道。
数据结构就不用说了,刚才我们在算法里已经提到了。还有一门很重要的课程就是计算机组成原理。你不知道计算机组成原理,你就不知道电脑到底是怎么启动的,更不知道CPU到底是如何运转的,如果你连这些都不知道,等以后你真正遇到这些问题时,再让你从头学起,岂不是天方夜谭?
当然了,非科班程序员也有自己的优势。
比如说,理解事情的能力和解决问题的能力,我觉得科班程序员,他们能够成为一个程序员,是一个非常正常的事情,他们按照自己的原有轨迹去做,毕竟这是他们比较熟悉的领域,并且能够把它们做好,非科班程序员就像是半路杀出个程咬金,可能你不知道他之前的积累是怎么样的,你只知道他现在可以通面试。
这里不得不提一点,就是非科班程序员的跨界能力,非科班程序员大多是自学成才,其实要跨界成为一个程序员,还是比较有挑战的,毕竟我们可以在他们身上看到更多的可能性,他们更加有变通的思维,至少在自学这个方面,他们更加有话语权。
所以非科班程序员往往更有自学能力,他们有很好的技术视野,知道如何去扩展自己的技术边界,毕竟他们知道如何很快的切换到另一项技术,或者是另一个领域。对于非科班程序员来说,这种跨界的尝试会更加的轻松一些。总结了以上这几点,我觉得科班程序员和非科班程序员并没有什么天壤之别,只不过大家开始的时候不一样。
一、知识体系的差别
在大学期间读软件工程或者计算机技术专业的程序员,相比于自学程序员具备更加完善的知识体系。虽然大多数在校期间学习的编程知识还不足以独立完成项目,但是在大学期间系统的学习过软件开发基础知识,在做项目的时候懂得操作系统和编译原理能够更好地理解整个项目,学起东西也更快,从而深入地解决问题。而自学成才的程序员,因为可能会涉及到自己未知的基础概念,而不得不先补基础再学习。
二、就业的差别
对于BAT大厂而言,僧多粥少,为了降低用人风险,他们更倾向于招聘科班选手。而对于初创公司而言,雇佣一个实战型选手是更划算的选择。当然这是假定科班程序员实战性比自学的程序员强基础之上,也不能否认某些自学成才的程序员实战起来确实很强悍。
三、资源的不同
科班出身的同学大学时身边都是学编程的,学习氛围浓厚,大神实时进行技术交流。学院内部机会、老师推荐、同学之间的资源共享,这样丰富的资源也是自学编程的编程爱好者无法比拟的。
主要差距就是科班程序员做的都是核心东西,而非科班的只是打打代码而已。
最明显的差别就是一个是自学,没有系统的理论学习,而科班的是有系统的学习
一般来说,他们能够掌握一门语言,并且学会了如何做项目之后,就觉得自己已经学的很多了,很多非科班的程序员都不知道,对于程序员来说,这些作为根基的东西也是他们必须需要学习的,比如计算机网络,网络编程的基础,如果我们搞不懂计算机网络的话,你甚至连电脑上的ip配置都搞不清楚。