如何正确的理解技术
工人与工程师的区别
在我看来,绝大部分软件开发从业者,其实都和工人无异。因为大家:
- 都是在各种封装好的引擎、框架之上,做一些功能的堆叠、简单流程逻辑的编写
- 遇到问题,直接从网上查询别人想好的方案,然后复制实现
- 对于从事的技术缺乏好奇心,没有深入去了解其运行原理
- 对于计算机软硬件的工作机制不了解
- 缺乏某个特定领域的深度钻研(比如游戏从业者,没钻研过计算机图形学相关的领域)
这样的人员,有如下问题:
- 现在只是依托于行业红利过得比较好而已,一旦发生变化,根本没有应对的策略
- 缺乏技术深度,没有形成核心竞争力,应届生一两年就能追上来,上限极低,有严重的 35 岁中年危机
- 由于没有核心竞争力,可替代性强,所以只能通过加班来维持住工作,对于工作内容和工作时间缺乏议价权
什么样的技术才是应该深入钻研的技术?
本质类的技术,即**CS 四大基础学科**:计算机组成原理、数据结构与算法、操作系统,计算机网络。
计算机应用层的技术是学不完的,而且变化和淘汰很快。但是掌握了本质技术,再去学习这些应用技术,是很快的。
软件开发 = 数据结构 + 算法 + 协议
技术的本质是什么
解决问题。
可能是在公司中解决商业问题,也可能是解决你自己出于兴趣爱好要做某件事时,遇到的问题。
竞争力本质是什么
能人所不能。
当然,不是说你要超越所有人,而是说你在当前工作环境中,能人所不能,那么就能在当前环境保持竞争力了。
掌握本质,就能一通百通
这是有感于最近我学习 Three.js,我发现之前我学的时候是很懵的,对于一些 3D 和图形学的概念不知道,在看 Three.js 的书籍的时候就很难理解。
最近对计算机图形学感兴趣,看了一些概念知识后,我昨天又去看了 Three.js 书籍的最后两章,结果发现根本不用调试代码,很快就看过去并且 Get 到这些知识点了。
所以掌握本质,能够让你触类旁通。具体的实现都是一样的,都是基于本质的一个具象化而已。
只有专家才能凭借技术度过中年危机
如果只是业务开发,或者常规的基础开发,是肯定到不了专家级别的,都会面临中年危机。
但是你看做芯片的,博士起步,哪里存在什么中年危机?
有中年危机,归根到底还是你不具备稀缺性。
思考:如果我在某个兴趣方向能达到博士的水平,那么是否就可以安然度过中年危机了?