结束语 | 从业 IT 20年后,我将最看重什么?

你好,我是陶辉。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

精选留言

  • 我来也

    2020-08-03 12:04:24

    感谢老师的辛苦付出!

    作为一名大龄程序员,我现在在二刷数据结构与算法的两个专栏.
    每天坚持刷点leetcode题目.
    不知道现在才夯实基础晚不晚.

    另外,希望能有机会二刷老师的Web协议详解专栏.
    相比之下,web协议比nginx的适用范围还是广点.
    (还是因为个人精力有限,得做取舍.)

    表达能力也是我的短板.
    虽然与人沟通时,也知道重要的事情放在前面说.
    但感觉还是不太会包装自己做的事情,让领导认可完成的工作.
    作者回复

    你好我来也,经常看到你的精品留言,很高兴与你在留言区相会^_^
    我觉得表达能力并不是“包装”,而是在于以下3个方面:
    1、有没有针对受众的特点去组织你的言辞或者文字,比如他的知识背景、性格特点等;
    2、是否找到受众最关注的点。比如,架构师关注扩展能力,项目经理关注迭代速度、BUG率等,产品经理更关心用户体验,老板很关心IT成本、人力成本;
    3、以用户最舒服的接收信息方式,将上述信息交付给他。

    2020-08-03 13:46:12

  • leslie

    2020-08-03 02:14:34

    最近一段时间刚转型,人员没有到位,一人身兼数职,虽然已过35且大多平凡靠着多年的底子转型PM,就是实在没有经历学习转型外的课程;新人到了也就有点精力学点东西。
    不知不觉自己入行十余载:35+的从业者对于技术的越多能力、化繁为简的沟通能力、人员协作的调度能力还是能有自己的生存空间。
    拼学习能力和精力完全不可能与二十左右的年轻人去比,如何扬长避短且高效学习与工作才是35+的生存之道。比如年轻人可以每天3-4小时睡眠且精力十足,这个对于老同志就做不到;效率和稳定优先可能是不一样的选择。
    拉下的课程只能等这个月没那么忙了再补上,一个人全栈-思维的切换确实消耗太大,剩下的一点时间还给了团队。。。
    虽然很辛苦很痛苦,不过明白了更多,收获了更多;愿老师未来一切更好,谢谢。
    作者回复

    谢谢leslie的祝福与分享!
    沟通能力与协调能力涉及很多硬实力,从知识的广度到深度,都能持续沉淀下去!人其实是在感性中活着的,一旦涉及情绪,很多有逻辑的理由就不再成立了,能够处理好这些需要做很多准备!祝你转型成功,扩大能力圈!

    2020-08-03 13:53:29

  • liu-dan

    2020-08-08 12:25:59

    入行六年,非常认可这些建议,可惜都是自己悟出来的,早点知道就好了,不过应该不晚。程序员是一个需要持续学习的行业,个人知识体系主动构建,核心基础能力提升,表达能力提升这些随着工作的深入,越来越觉得重要和缺乏,个人觉得还有英文能力,所以一直在持续提升自己这些能力,希望自己能够在35岁后保持十足的竞争力。
  • 汪鹏

    2020-08-03 16:32:36

    想咨询一下老师,要想学好操作系统,是不是要先学好c语言呀?
    作者回复

    首先,要对基本的理论有全面的了解,比如文件系统、进程调度、内存管理、IO等,此时不需要了解C语言也可以做到的。
    如果还想进一步学习,需要从系统调用入手,根据自己实际工作中的场景,优先选择最急需了解原理的模块去阅读源代码,这时才需要学习C语言

    2020-08-04 08:45:23

  • 许凯

    2021-09-03 13:46:15

    还要把身体锻炼好,犀利身体、锤炼大脑、真诚沟通
  • Geek_5227ac

    2021-06-24 17:39:06

    ----好的“表达力”能为你插上翅膀----
    深有体会,血的教训。曾经在某司,解决问题产品功能做的比旁边人多,结果下半年新来了领导不看好,之间嫌隙越来越大,终于出局了......
  • J.Smile

    2020-08-03 08:54:40

    陶辉老师的课思路很清晰,文章写的很不错,期待老师多写一些类似本专栏的课程。
    作者回复

    后续还会写一些加餐^_^

    2020-08-03 13:46:50

  • Geek_78d3bb

    2020-10-22 22:33:15

    比较优质的网课,讲的比较有深度,老师还认真回答留言,可见对网课态度是很认真负责的
    作者回复

    ^_^

    2020-10-28 14:00:59

  • Hank_Yan

    2020-09-08 08:45:57

    真的是佩服老师,希望我工作5年,10年后也能对这些知识信手拈来。从现在开始打造自己的知识网络,加油!
    作者回复

    加油!

    2020-09-08 16:58:19

  • 🎧重返归途

    2020-08-03 22:58:12

    受益匪浅,就是我现在的处境啊!虽然自己也明白道理,但是看到这样的内容也是透彻了很多,看开很多,多些分享
  • 许童童

    2020-08-03 14:01:14

    老师的专栏质量真高
    作者回复

    谢谢:-)

    2020-08-03 15:33:28

  • 忆水寒

    2020-08-03 06:41:01

    专栏很好👍,收获蛮多的
    作者回复

    ^_^

    2020-08-03 13:47:18

  • 夜空中最亮的星

    2020-08-03 01:45:42

    不舍
    作者回复

    ^_^

    2020-08-03 13:53:43