计算机科班出身的优势?
我是纯科班出生,项目组有几个改行来的。我的感受有以下几点:
1. 非科班往往是“实用”导向来安排学习路线。比如先学一门语言,学写一些小项目,然后再去刷刷算法面试题。那些很不实用,但是用来构筑计算机科学体系的课就没怎么学,也没怎么有时间来练习。一方面是数学吧,举个例子,非科班出身很少有人去专门学离散数学。另外一方面是计算机原理,操作系统,体系结构,编译原理这些课,很多非科班出身的没碰过。就算碰,很多也是浅尝则止。没多少非科班的花时间写过内存管理,编译器,去搞懂指令集流水线吧。
2. 写业务逻辑层面的代码,科班和非科班出身的工作效率差别不大。但是要系统层面优化,找疑难BUG,差距还是能体现的。所以项目技术负责人往往还是科班出生的。最近一个例子,数据库出现了read-after-write的问题。非科班出身的那个小朋友直接两眼一抹黑了,因为在他看来数据库就是个黑盒子,他会用数据库,但是里面原理就没概念了。
3.如果知道要学啥,科班非科班都能学会。但是非科班往往需要科班的提示,才知道往哪个方向走。举个没那么恰当的例子,要做个系统去除广告垃圾流量,我一看可以知道可以尝试傅立叶变换把时域转化为频域来解决问题。虽然我这些变换丢老师也很多年了(大三选修课),但是我知道再把书捡回来看看这个就可以搞定。我让组里面非科班出身的去学这个,他们很快也搞定了。但是,我想,最开始定方向时,他们完全没概念应该看啥方向的书来解决这个问题吧。
4. 以上差距都是可以用时间和经验来弥补的。我见过最厉害的一个程序员,是化学本科硕士博士,但是转行多年,经验丰富,非常牛。我想,前面提到的数据库问题,虽然非科班的第一次不会,第二次可能就懂了。至于傅立叶,要不是我刚好选修了,我可能也不知道。而且,不知道一个问题怎么解决是很正常的,集思广益,总能找好办法的。
回答请先登录