讨论:科班和非科班出身的程序员有何差别?
来源:公众号【编程珠玑】
作者:守望先生
ID:shouwangxiansheng
之前在《公众号文章主题征集:你问我写》中,有读者留言说现在有很多非计算机专业的转行程序员,普通工科出身程序员与计算机专业出身程序员之间有什么差距?以下仅一家之言,不供参考,欢迎补充。
有一说一
说实话我也不知道。我本身是学通信工程的,所以严格说也不算科班出身。不过我问了一下计算机专业出身的同学,他的大意是:
由于有完善的课程体系:基础编程语言,数据结构,算法,操作系统,计算机网络,软件工程等,计算机专业的毕业生可能对相关的只是有更广的认识,虽然上课时不一定认真听,也许在深度上并没有什么优势,但是对于一些基础的内容都有认知,对以后想往某个方面作深入的了解都有帮助。
也就是说,起码别人是知道自己不知道什么,而非科班的通常是不知道自己不知道什么,可能一些基本的概念完全没有听过。
同时,计算机专业的通常对整个计算机体系有一个整体的认识,不至于有较大程度的断层。这里推荐《深入理解计算机系统》。
不同人眼中的程序员
有的人觉得想要成为程序员,就是学习:
C语言
C++
Java
JavaScript
Python
PHP
Go
……
以及其相关的各种框架或工具的使用。
而计算机专业的人觉得,想要成为程序员,要学习:
数字逻辑电路
线性代数
概率论
离散数学
计算机导论
计算机体系结构
面向对象程序设计
C语言
编程语言
数据结构与算法
汇编
编译原理
计算机组成原理
计算机网络
操作系统
数据库系统
软件工程
设计模式
颈椎病防治综合指南
……
当然他们知道要学,至于学不学那就是人各有志了。看起来好像差别不小?
语言不重要吗
当然重要,但不是最重要,毕竟企业雇你大多数时候就是需要你使用某种语言完成某种功能开发,这是基本。不过仔细看一些公司的招聘会发现,语言这里通常会说:
熟练掌握xx/xxx/xx语言中的任一一种
而关于语言方面的要求从来不会少,但是基本只有一条!也就是说,其他的要求通常和具体某种语言无关,但是通常是可以由语言扩展出来的。
就拿很多大厂来说,他们通常更多地考察一些操作系统,数据结构与算法,计算机网络等相关内容,而有了这些内容作为基础,学习新的东西,如一门新的语言,也是比较快的。
如何弥补?
1.知道自己不知道什么
2.让自己知道这些不知道的
3…….
知道自己不知道什么
善用搜索引擎
留意别人踩的坑
关注前人总结的经验
参考别人给的建议
不必一定认同,但是都可以看看。比如公众号【编程珠玑】以及本文的内容,比如本文留言区。
实际上,你在工作中就会遇到很多的问题,比如为什么这个程序运行内存占用这么大?为什么处理这么慢?为什么网络这么卡?为什么挂死了?为什么这样就可以了?为什么又不可以了?仔细回想一下,就会发现,原先自己不知道的还有很多。你可能某一次搜索完,诶不知道怎么的就解决了,然后就say goodbye了。
让自己知道这些不知道的
一般自学的通常在学习完某种编程语言之后,基本就是通过网络上零零散散的内容进行补充学习,在大多数时候,其实都够用了,毕竟企业花钱雇你来是干活的,不是来学习的,你能完成它给的任务就够了。而如果自己不甘于此,自然就是建议阅读成体系的好书,内容包括但不限于上面所提到的。同样的,网络上也有很多自成体系的优秀的系列文章或者视频教程,也是一个不错的选择。
至于公众号文章,网络回答之类,可以作为快速上手,扩展或补充,而非系统学习的资料。当然,你要学会自己过滤一些没有用的信息。
自此之后,还能有什么差别呢?
实践总结不可少
光看不练假把式。不过,一口吃不成大胖子,我现在也挺瘦的。
灵魂拷问
以上仅仅是很小的一个方面。所以到底有何差别?
相关精彩推荐