你好,我是陶辉。

经过 3 个多月的更新,咱们这门课今天就正式结课了!很感谢你的一路相伴,我有收获很多的分享和故事,这份信任弥足珍贵。

走到今天,我入行已经有 20 年了,那作为结束语,最后我特别想和你聊聊我的一些心得体会,就说说我最看重的两大能力吧,希望能给你的未来发展带来一些正反馈!

每次聊天提到程序员,大部分人的脑海中总会跳出两个词:996 与 35 岁危机,它们都反应了 1 个现实:程序员的竞争压力太大了。**其实,老板是无法逼迫你 996 的,只有大量虎视眈眈盯着你职位、薪酬包的竞争者,才能让你心甘情愿的加班,让你为了度过 35 岁危机而不停地试图突破天花板!**为什么程序员的供给量这么大呢?这既来源于中国庞大的人口基数,也因为资本、人才密集的互联网行业,为年轻人提供了罕见的高薪资、高成长机会。

程序员的平均薪资远高于其他职业,这造成大量职场新人转行入互联网,从 Javascript、Android、Python 等工程师做起(这些语言形成闭环的路径更短,入门更快),寻求更好的个人发展。我有一些半路转行的朋友,经常见到他们凌晨还在提交代码,痛苦的转行过程让他们的自我驱动力无比强大。

各类院校也在为这个职业输送大量人才。在我上大学那会,只有计算机科学与技术这一个编程专业。现在,软件工程、网页设计各类专业层出不穷,而且,计算机课程已经成为各理工专业必修的基础课。

所以程序员普遍年轻,35+ 的我已经是我们团队年纪最大的程序员了,这在其他行业实在是不可思议的事!另一方面,互联网仍然是一个朝阳行业,变化是永恒的主题。在开源盛行的当下,注定会有层出不穷却又不太稳定的新框架,只有深入的学习才能用好、改进它。所以,我们常常会让自己“忙”起来、“学”起来,这样似乎可以忘却焦虑。

**那焦虑是什么呢?在我看来,就是对未来的自己是否仍具备竞争力的不确定感。**如果只是在不停地学习新语言、新框架,那么 35 岁的你,竞争力一定不如 25 岁的你,因为对框架的熟练度是不值几倍薪资差距的。我认为,有两个能力可以消除这种不确定性,它们不会因为新技术迭代,每次都让你数据清零后重新开始。

构建知识体系最需要什么?

**首先,是不局限于一招一式、构建知识体系的能力。**当你还未对某个领域形成知识体系时,只能解决曾经遇到过的相似问题,或者仅涉及单一知识点、能够从网上查询到答案的简单问题。而基于新技术做架构设计,或者定位涉及多个系统的复杂问题时,知识体系是最值得依赖的灯塔,它能指引你前进的方向。

知识体系可以将散落在脑海中的知识,通过逻辑联系在一起,形成庞大的网络。**知识点之间的联系线条越多,网络就越健壮,越能应对不确定性;网络越大,覆盖的领域越广,你能解决问题的价值就越高!**所以,我们需要结网的能力!

比如,你学习了某个人脸识别框架的用法,通过 API 把它集成到系统中,此时该技术与已有知识体系是割裂的。在你了解 CNN 网络,知道它只不过是一种聚类函数后,就能通过数学知识把它联结到知识网络中;在了解到密集浮点运算下保持精度的方案,与主流 IEEE-754 方案间的差别后,你又可以从数值计算维度上与常用的编程语言关联起来;从 GPU、CPU 对并行计算的设计差别上,你还可以在计算体系架构这条线上增强知识体系;从分布式模型训练系统中找到分而治之的思想,你就可以从算法上连接网络,等等。

概括下的话,我认为构建知识体系最需要的其实是底层知识!两个看似无关的技术,可以再往下看一层,找找它们共同的理论基础,建立逻辑关联。我认为,下面 3 个底层知识对结网的帮助最大:

  1. 数据结构与算法,我推荐你精读《算法导论》这本书,程序是由数据与算法构成的,这条线几乎可以连接所有技术点。
  2. 计算机网络知识,它可以连接所有涉及互联网的技术,这也是我推出《Web 协议详解与抓包实战》这门课的初衷。
  3. 最后是操作系统知识,毕竟所有的软件都需要通过操作系统才能操作硬件。

另外,咱们在给知识体系添砖加瓦时,一定要注意知识的正确性,否则网络越密,后续修复成本就越高。我一般建议你尽量去源头寻找第一手知识,虽然有时这并不容易。比如学习 HTTP/3 协议时,我们只能去看那 5 份 RFC 文档,但 RFC 文档的结构设计是作为参考手册使用的,它并不适合首次学习,此时我们还可以借鉴一些权威高手基于一手知识分享的“二手”文章,这能让你更快地看懂 RFC。

好的“表达力”能为你插上翅膀

**第 2 个最能对抗“焦虑”的是表达力。**做技术的同学通常对跟自己技术水平差不多,但因为表达力更好、从而拥有更高职位的同学不屑一顾,我曾经也是这样,总觉得咱靠的是“真才实料”,不是嘴皮子。这是一个很大的误区,它与你的职业发展密切相关。

如果团队里有 3 位同学:1 位技术最好却不擅言辞,1 位擅长管理、调动团队氛围,1 位擅长表达,你觉得谁的职业发展最好呢?其实是最后那位,因为当团队向上级汇报工作时,他最容易让团队的工作得到认可,从而获取更多的资源把事情做成,使人人都有好处。久而久之,他就会获得更多的提拔机会。

我想你多半遇到过那种沟通起来特“费劲”的人,说话总是找不到重点,这样他就只能做一些简单的、不需要协作的工作。现代社会是需要高度协作的,如果没办法说清楚你的工作成果,你的价值就会大大缩水。当然,好的表达力不是无中生有,也不是能说会道,毕竟你面对的都是专业人士。

在职场中,由于沟通对象时间有限,所以采用金字塔方式表达效果最好。比如,当我向老板汇报工作时,我会在第一时间讲结论,然后再按照重要性顺序讲论据。否则,他同时要处理的事务比我广得多,如果我不能快速让他抓住重点,就很容易失去这次沟通机会。再比如我写这个专栏时,大家同时订阅了那么多课程,时间非常珍贵,我必须在每节课起始就开宗明义地给出场景,把各种对立面引发的冲突列出来,如果它能聚焦你的视线,我就会在正文中层层递进地讲下去,每一段总是为了引出下一段,防止在碎片化阅读时代里丢掉你的注意力。

那如果你想学习金字塔表达方式的话,我十分建议你精读《金字塔原理》这本书,这也是写作本专栏时,我的编辑推荐给我的,对我的帮助非常大,现学现卖推荐给你。

总结而言,我希望你拥有“结网能力”。构建广泛、结实的知识网络,可以帮助你提升竞争力、减轻“焦虑”,面对新技术时不用清零重来;但当你无法将新学的知识纳入已有知识体系时,不妨把眼光放低点,从底层技术中找找关联。我还希望你拥有“表达能力”。再硬核的知识体系也需要通过优秀的表达力,转换为动听的语言和精练的文字,再通过互联网跨越时空,让你跳出公司,在整个行业中提升影响力、竞争力。

希望这 2 种能力能帮助你在大的技术洪流中站稳脚跟,从无数的竞争对手中脱颖而出。最后,祝你工作顺利,也希望这门课能成为你抵抗焦虑的武器之一。

最后的最后,我还为你准备了一份毕业问卷,希望你能用 2 分钟的时间填写一下。大胆表达自己,期待听到你的声音!