架构师的学习
随着脑科学的发展,刻意练习、深度工作等方法理念的普及,关于学习方法的讨论已经很多了。笔者这里不想对这些理论做过多的阐述,而是想结合自己的经历,谈谈自己在学习中的一些体会。这里列举笔者的三个学习例子。
案例一
笔者从小学到高中从没考过第一,高三上学期一次模考终于得了第一,于是,飘了。。。
从那凡是觉得会的题目只是草草看一眼,不再认真的思考复盘。于是接下来的两次模块排名和分数连续下降。此时距离高考还有两个月。于是,痛定思痛,开始认真学习。
每道错题一定会反复琢磨搞懂后,在错题本手推一遍。对于理综题目会将做过的所有题目分类,归类整理,总结解题思路,能动手过一遍绝不放过。
从那之后的三次模块加高考,笔者一直都是第一,最终矬子里拔将军,是我们班唯一一个一本。
案例二
开始学习 Kubernetes 时是读的《Kubernetes in Action》,越往后读觉得各种资源对象的字段忒多了,就懒得细看了,后来又考了 CKA/CKAD 认证,于是,又飘了。觉得自己已经会 Kubernetes 了。
直到一次皓哥和我说,过段时间要给星巴克中国做一个 Kubernetes 的培训,自己尝试预讲后,发现讲的毫无深度。此时还有一个月的时间,于是沉下心来,在这一个月的时间里参考文档和各类资料,自己写了 10 篇 K8s 的文章,按照集群架构、Pod 原理、Controller 使用、网络、存储、配置、调度等 10 个主题将所能想到的内容都整理了一遍。自此之后,对 Kubernetes 的掌握才算是真正上一个台阶,培训内容也得到了客户的好评。。
案例三
Kubernetes 中网络是非常重要的一块,自己买了《TCP/IP 详解(英文版)》、《深入理解 Linux 网络》等书籍通读了一遍。但读完后,水过了无痕,实际系统出问题时依旧没有思路。
于是我改变了策略,既然读不懂,那我为啥不写一本。
对于 TCP,自己参考老师傅的例子,写程序,做实验抓包,看源码。把 TCP 的各种场景全部跑了一遍,把相关知识点总结成系列文章:
- 【动手实验】TCP 连接的建立与关闭抓包分析
- 【动手实验】TCP数据的发送和接收
- 【动手实验】TCP传输延迟分析与性能优化
- 【动手实验】TCP半连接队列、全连接队列实战分析
- 【动手实验】TCP orphan socket 的产生与消亡
对于Linux 内核网络,我参考《深入理解 Linux 网络》的目录,按照系统初始化,数据收包、数据发包、监控优化的流程,读内核源码,学习相关理论。最终整理成了系列文章:
- 【深入理解 Linux 网络】关键术语
- 【深入理解 Linux 网络】内核初始化流程
- 【深入理解 Linux 网络】收包原理与内核实现(上) 从网卡到协议层
- 【深入理解 Linux 网络】收包原理与内核实现(中)TCP 传输层处理
- 【深入理解 Linux 网络】收包原理与内核实现(下)应用层读取与 epoll 实现
- 【深入理解 Linux 网络】数据发送处理流程与内核实现
- 【深入理解 Linux 网络】配置调优与性能优化
虽然对 Linux 网络的掌握还有很多欠缺,但在分析数据包时,脑海中已经有了一副地图记录着数据包应该到了哪个地方,以后如果有问题就可以按图索骥,对地图中任意一点做深入的学习。
借助自己的几个案例,笔者想表达的是:技术学习没有捷径。凡是笔者下笨功夫,系统性实践的技术,都掌握的相对扎实,而很多粗浅浏览的知识基本都是水过了无痕。
在云原生时代,对技术人员的要求越来越呈现两级分化的状态。对业务开发人员的技术要求会越来越低,只需要在架构师构建好的模块下编写业务逻辑即可;而对架构师的要求达到了匪夷所思的程度,从底层的 Linux、Kubernetes,到各类中间件、服务治理、流量质量、可观测性、DevOps 等等,要求架构师对这些技术都要有一个系统的了解和掌握。
对此架构师应当更加注重自己的学习,无论是深度还是广度。庆幸的是我们生活在 AI 时代,ChatGPT 就像一个身经百战的老师傅,当我们在知识的苦海求索时,始终站在一旁指点迷津。笔者的 Linux 网络内核分析系列文章就是在 ChatGPT 的帮助下完成的。是的,AI 即不是淘汰我们的杀手,也不是让我们可以不学习的灵丹妙药,而是助力我们更进一步的法宝,
人工智能只是供人驱使的工具,而学习环节中最难的是将知识塞进你的大脑。这个过程要耗费二十年时间,是最痛苦的,没有捷径。如何快速塞入知识?这项技术在短期内看不到任何突破。