如何正确的理解技术

工人与工程师的区别

在我看来,绝大部分软件开发从业者,其实都和工人无异。因为大家:

  • 都是在各种封装好的引擎、框架之上,做一些功能的堆叠、简单流程逻辑的编写
  • 遇到问题,直接从网上查询别人想好的方案,然后复制实现
  • 对于从事的技术缺乏好奇心,没有深入去了解其运行原理
  • 对于计算机软硬件的工作机制不了解
  • 缺乏某个特定领域的深度钻研(比如游戏从业者,没钻研过计算机图形学相关的领域)

这样的人员,有如下问题:

  • 现在只是依托于行业红利过得比较好而已,一旦发生变化,根本没有应对的策略
  • 缺乏技术深度,没有形成核心竞争力,应届生一两年就能追上来,上限极低,有严重的 35 岁中年危机
  • 由于没有核心竞争力,可替代性强,所以只能通过加班来维持住工作,对于工作内容和工作时间缺乏议价权

什么样的技术才是应该深入钻研的技术?

本质类的技术,即**CS 四大基础学科**:计算机组成原理、数据结构与算法、操作系统,计算机网络。

计算机应用层的技术是学不完的,而且变化和淘汰很快。但是掌握了本质技术,再去学习这些应用技术,是很快的。

软件开发 = 数据结构 + 算法 + 协议

技术的本质是什么

解决问题。

可能是在公司中解决商业问题,也可能是解决你自己出于兴趣爱好要做某件事时,遇到的问题。

竞争力本质是什么

能人所不能。

当然,不是说你要超越所有人,而是说你在当前工作环境中,能人所不能,那么就能在当前环境保持竞争力了。

掌握本质,就能一通百通

这是有感于最近我学习 Three.js,我发现之前我学的时候是很懵的,对于一些 3D 和图形学的概念不知道,在看 Three.js 的书籍的时候就很难理解。

最近对计算机图形学感兴趣,看了一些概念知识后,我昨天又去看了 Three.js 书籍的最后两章,结果发现根本不用调试代码,很快就看过去并且 Get 到这些知识点了。

所以掌握本质,能够让你触类旁通。具体的实现都是一样的,都是基于本质的一个具象化而已。

只有专家才能凭借技术度过中年危机

如果只是业务开发,或者常规的基础开发,是肯定到不了专家级别的,都会面临中年危机。

但是你看做芯片的,博士起步,哪里存在什么中年危机?

有中年危机,归根到底还是你不具备稀缺性。

思考:如果我在某个兴趣方向能达到博士的水平,那么是否就可以安然度过中年危机了?