其实这是两个问题
1 学科划分
2 划分后的知识
回复中不少人,聊的是数学问题,计算机行业是一个工程行业,需要一定的数学基础,但是总体来说,都比较简单。更复杂的数学问题,是数学专业干的事情。当然,少数计算机专业的同学,也在做这样的事情,但是总体来说并不主流,主流的程序员还是在做工程应用。
在这个前提下,当然也需要很多基础知识。
1 基本的工科知识 (数学啊,物理啊之类的,高中水平完全足够了)
2 数据结构算法,操作系统,网络等等。。计算机基础知识
3 设计,架构知识
4 工程知识
不同人做的工作不同,侧重点完全不同,有的人做很底层的技术,有的人做中间层技术,有的人做纯业务。那么要求是完全不一样的。但是就国内小公司来说,不管做什么工作,及格的比例其实很低。
举几个常见的例子:
和一些做 web 后端、做游戏的同学聊过一个常识,就是数据库事务,很多人是一脸懵的。很难理解天天要遇到的东西,居然全然不知,那么就可以马上脑补,他们在解决这类问题时用的奇淫技巧。
公司的同事,总是喜欢聊高并发,大数据,性能优化。聊一会就发现他们连基本的内存模型,多线程模型,异步 io,数据库索引,之类的都是模糊的。那么也可以脑补,他们的优化手段是什么。甚至该优化哪里,都是在碰运气。更可怕的是项目一开始重点就已经在聊优化问题了,做出来的设计真的让人害怕。
还有很多细节方面,如何写好一行代码,如何写好一个函数,函数参数该如何定义,如何分解函数,如何分解类,如何解耦,这些基础的设计问题,大多也都不及格。基本上都是老夫一把梭的姿态。旁人也不好说什么,就算是说出来了,得到的答案就是能跑就行了啊,何必在一这些细节,最后反过来给你扣帽子
我觉得计算机方面的知识,如果足够的话,除了很冷僻的领域,理论上,可以通过短暂的学习,就具备该领域中等水平。因为对一个陌生领域的建模,本身也是计算机基础知识。
@
MinQ 说几句大言不惭的话,虽然现在强调终身学习。根据我的观察,一般来说,一个 25 岁的程序员,如果不具备足够的基础知识,那么他或许这辈子都很难具备了。同时基础知识会在很大程度上影响到思维模式。但是这个问题我思考了很久,到底是不同人的思维模式不同,导致有的人关注系统化的知识,有的人不关注。还是因为系统化学习,导致思维模式不同。