你好,我是唐扬。
时间一晃而过,四个月的学习已经接近尾声了,在 103 个日夜里,我们共同学习了 45 篇高并发系统设计的相关文章,从基础篇,逐渐扩展到演进篇,最终进行了实战分析和讲解。
这段日子里,我们一起沟通交流,很多同学甚至在凌晨还在学习、留言,留言区里经常会看到熟悉的身影,比如 @小喵喵,@吃饭饭,@Keith。还有一些同学分享了一些新的知识,比如 @蓝魔,是你们的积极和努力鼓励我不断前进,让我明白知识无止境。在写稿之余,我也订阅了几节极客时间的课程,也买了几本相关的书籍,努力为你们交付高质量的内容。这 103 个日夜虽然辛苦,但也是充满感恩的,在这里,我由衷感谢你的一路相伴!
我知道,有一些同学希望多一些实践的案例分析,我是这样思考的,古人常说“源不深而望流之远,根不固而求木之长,不可”。一些理论基础是必要的,如水之源、树之根,是不能跨越的。另外,一个实践案例不能完全涵盖一个理论,相反一个理论可以支撑很多的实践案例。正所谓授之以鱼不如授之以渔,我们上数学课不也是要先讲公式的来源,再解决实际问题吗?相信对理论知识活学活用后,你在实际工作中,会收获难能可贵的经验财富,也会做出更好的技术方案。
回顾这些年的工作,我想和你分享几点我个人的看法。我刚开始工作时,经常听别人说程序员是有年纪限制的,35 岁是程序员的终结年龄,那时说实话我心里是有一些忐忑的,可随着年龄不断增长,我看到越来越多的人在 35 岁之后还在行业中如鱼得水,我想,35 这个数字并非强调个人的年纪,而是泛指一个阶段,强调在那个阶段,我们可能会因为个人的种种原因安于现状,不再更新自己的知识库,这是非常错误的。
化用《礼记》中的话,首先,我们要博学之。 你要不断革新知识,所谓的天花板其实更多的是知识性的天花板,活到老学到老才是你在这个行业的必胜法宝,所以,我们应该利用各种优质平台以及零散的时间学习,但是同时你要注意,现在的知识偏向碎片化,如何有条理、系统地学习,将知识梳理成体系,化作自己的内功,是比较关键和困难的。在这里我给你几点建议:
基础知识要体系化,读书是一种很好的获取体系化知识的途径,比如研读《算法导论》提升对数据结构和算法的理解,研读《TCP/IP 协议详解》深入理解我们最熟悉的 TCP/IP 协议栈等等;
多读一些经典项目的源代码,比如 Dubbo,Spring 等等,从中领会设计思想,你的编码能力会得到极大的提高;
多利用碎片化的时间读一些公众号的文章,补充书里没有实践案例的不足,借此提升技术视野。
其次要慎思之。 诚然,看书拓展知识的过程中我们需要思考,在实际工作中我们也需要深入思考。没有一个理论可以适应所有的突发状况,高并发系统更是如此。它状况百出,我们最好的应对方法就是在理论的指导下,对每一次的突发状况都进行深入的总结和思考。
然后是审问之。 这种问既是“扪心自问”:
这次的突发问题的根本原因是什么?
以后如何避免同类问题的再次发生?
解决这个问题最优的思路是什么?
同时,也应该是一种他问,是与团队合作,头脑风暴之后的一种补充,我们说你有一个苹果,我有一个苹果我们相互交换,每个人依然只有一个苹果,但是你有一种思想,我也有一种思想,我们相互交换,每个人就有两种思想,所以不断进行团队交流也是一种好的提升自我的方式。
接着是明辨之。 进行了广泛的阅读,积累了大量的工作案例,还要将这些内化于心的知识形成清晰的判断力。某个明星微博的突然沦陷,社区系统的突然挂掉,只是分分钟的事情,要想成为一个优秀的架构师,你必须运用自身的本领进行清晰地判断,快速找到解决方案,只有这样才能把损失控制在最小的范围内。而这种清晰的判断力绝对是因人而异的,你有怎样的知识储备,有怎样的深入思考,就会有怎样清晰的判断力。
最后要笃行之。 学了再多的理论,做了再多的思考,也不能确保能够解决所有问题,对于高并发问题,我们还需要在实践中不断提升自己的能力。
相信你经常会看到这样的段子,比如很多人会觉得我们的固定形象就是“带着眼镜,穿着格子衬衫,背着双肩包,去优衣库就是一筐筐买衣服”。调侃归调侃,我们不必认真,也不必对外在过于追求,因为最终影响你职业生涯的,是思考、是内涵、是知识储备。那么如何让自己更精锐呢?
我想首先要有梯度。我们总希望任何工作都能有个进度条,我们的职业生涯也应该有一个有梯度的进度条,比如,从职场菜鸟到大神再到财务自由,每一步要用多久的时间,如何才能一步一步上升,当然,未必人人能够如鱼得水,但有梦想总是好的,这样你才有目标,自己的生活才会有奔头。
有了梯度的目标之后,接下来要有速度,就像产品逼迫你一样,你也要逼迫自己,让自己不断地加油,不断地更新、提升、完善,尽快实现自己的职业目标。
具备了这两点,就有了一定的高度,你是站在一个目标高度俯视自己的生涯,是高屋建瓴,而不是盲目攀爬。之后你需要做到的是深度,有的朋友总想横向拓展自己的知识面,想要学习一些新奇的知识,这会提升技术视野,原本是无可厚非的,可如果因为追逐新的技术而放弃深入理解基础知识,那就有些得不偿失了。要知道,像是算法、操作系统、网络等基础知识很重要,只有在这些知识层面上有深入的理解,才能在学习新技术的时候举一反三,加快学习的速度,能够帮助你更快地提升广度。
你还要有热度。我们白天和产品经理“相爱相杀”,晚上披星戴月回家与家人“相爱相杀”,如果没有足够的工作热度,这样的日子循环往复,你怎么可能吃得消?而只有当你在自己的行业里规划了梯度、提升了速度、强化了深度、拓宽了广度,才会有足够的自信度,而当你有了自信,有了话语权,那时你就有了幸福感,自然会保有热度。在热度的烘焙下,你又开始新一轮规划,如此良性循环,你才会在工作上游刃有余,生活也会幸福快乐。
在文章结尾,我为你准备了一份调查问卷,题目不多,希望你能抽出两三分钟填写一下。我非常希望听听你对这个专栏的意见和建议,期待你的反馈!专栏的结束,也是另一种开始,我会将内容进行迭代,比如 11 月中旬到 12 月末,我有为期一个月的封闭期,在这期间没有来得及回复的留言,我会花时间处理完;再比如,会针对一些同学的共性问题策划一期答疑或者加餐。
最后,我想再次强调一下为什么要努力提升自己,提升业务能力,直白一点儿说,那是希望我们都有自主选择的权利,而不是被迫谋生;我有话语权,而不是被迫执行,随着年纪的增加,我越发觉得成就感和尊严,能够带给我们快乐。