45 研发经验:如何成为某个领域的专家?
你好,我是文强。
这节课我想来聊聊我在技术方面的一些学习经验。篇幅较短,因为我始终觉得技术成长的路径和方法大家或多或少都懂一些,不想重复太多的经验和套路。
工作多年,我遇到了很多人和事,总会感慨生活不易,也常常奋发努力。希望我的分享能给你一些参考和帮助!
深入某个领域的好处
工作时间越长,大家总会不自觉地思考:是不是可以通过深入研究某个领域来提升自己的竞争力,从而延长职业生涯呢?
我的答案是肯定的。但我认为在这个事情中,能让你延长职业生涯的不是你选择研究的这个领域和方向,而是你在这个过程中所锻炼出来的能力,比如打破自己舒适区的能力、长期坚持做一个事情的能力,还有过程中扩展出的视野,结交到的优秀朋友,保持的持续学习习惯,提高的技术能力等等。
当我们能够长期深度研究某个领域时,你自然而然会发现,这些收获很重要。
那要如何深入某一个领域呢?我自己的方法就是“坚持”。这个答案有点通用,甚至还有点庸俗,大家都知道要坚持,问题是怎么坚持下来的呢?
技术人的坚持
说实在的,我也没答案。在我看来,“坚持”这个事情因人而异,有人觉得简单,有人觉得很难。学习了很多方法,最后依然坚持不下来,这才是生活的常态。这里我想分享两个我最近感触比较深的事情。
第一个是疫情以来,互联网裁员已是常态,找工作已经是“买方市场”,人多岗位少。最近听到过这样一句话:2023年以来,互联网求职二八原则非常明显。头部优秀的人还是能拿到一堆offer,中尾部人才就很挣扎,甚至没有面试机会。我观察的事实也是如此。
第二个是我之前参与的一个技术社区,大概2019年的时候我就加入了,但是因为工作重心在产品发展上,花的精力很少,到了今年年初才发现,同年加入的一个台湾大哥已经成为了社区的 PMC。我翻看了一下,他这两年来很活跃,一直在贡献,说实话我当时很羡慕。
不禁感慨,在技术圈里,拼的真的就是体力和坚持。如果你想做出成绩,干就对了,别说那么多。
我一直觉得,技术成长是一件很有确定性的事情,你投入的时间掷地有声,只是其带来的经济收益不确定,可能你研究的方向市场很小,或者已经被新的技术代替了。那如何选择一个可坚持的领域呢?
如何选择一个领域
先分享一个有趣的现象:在一些还不错的技术社区,比如消息队列、数据库、时序搜索引擎、流计算等等,我发现有一批在校生和刚刚毕业的代码贡献者,他们很活跃。我一开始还蛮惊讶的,现在的小同学这么强的吗?
后来我还专门结交了几位去聊了聊,发现这事儿并不难,他们真的就是愿意花时间去研究,也是真的有兴趣。
我当时就觉得,面临选择,热爱是第一驱动力。
所以,在选择领域上,我建议首先是根据自己的兴趣去选择。如果有特别感兴趣的领域和方向,也就不存在这个问题了。不过大多数人恰恰是因为没有特别感兴趣的方向,或者是不了解,那么这种情况,我就建议你研究一下最近比较热门的技术方向、热门的开源项目,或者就业领域比较稀缺的方向,然后根据自己的兴趣、工作内容、成长规划等等来确定领域。
这里我推荐几个我自己比较感兴趣的领域,或许能为你提供一点参考。因为技术背景的原因,我感兴趣的是基础架构、Serverless、AI 这三个领域。我本身就是基础架构和Serverless领域出身的,另外我认为 AI 是未来,所以一直对这几个领域保持关注。那在细分方向上,我比较感兴趣的是各种数据库(时序数据库、OLAP、OLTP)、消息队列、数据集成、Serverless引擎、AI 大模型的应用工具等等。
那如果我们对某个领域感兴趣,应该如何成为这个领域的专家呢?我给自己下半年定的目标就是能够精通 Rust 这门语言,所以我就基于自己的规划来聊聊看法了。
如何成为领域专家
先看一下我的规划。
- 把业界能找到的 Rust 资料全部看一遍,并做好总结和笔记。
- 写 50000 行 Rust 代码。
- 参与一次 Rust 相关大会的分享。
- 整理输出 20 篇 Rust 相关的文章。
总结来说,就是高强度的学习实践和可衡量的结果输出。
因为互联网、自媒体、技术社区的发展,学习资料肯定不会成为卡点,重点是将学习的东西落地实践的过程。比如我学 Rust 这门语言,重要的就是去写,写多了自然就会了。然后再去理解语言的底层原理。我感觉基本就到位了。
那学习实践后,如何衡量自己的成果呢?这点是大家比较容易忽略的。大部分人学习实践后,并没有系统地输出,这样其实很难衡量自己的水平,更不用提查漏补缺了。所以通过文章和分享去输出自己的成果,是一个非常好的途径,系统且还能巩固学习成果。
最后,基于上面的思路,我想再分享一下学习消息队列的方法,毕竟咱们这门课就是带你学习这个领域。
- 先选择一款消息队列,建议选择 RocketMQ、Kafka、Pulsar等近几年发展起来的消息队列,架构上会有先进性。
- 把能找到的资料都学一遍。优先应该是图书、在线课程、官网文章这种系统性的知识,然后再补充学习一些网上的技术文章或者大会分享。
- 想办法找到一个落地实践的场景,比如公司业务侧用到的消息队列。如果没有这个场景,那么可以去社区帮人义务解决他们遇到的问题,这是一个快速积累经验的有效方法。
- 在2和3反复学习实践一段时间后,再去看源码。源码一定要放到最后,提前看源码一点用没有,还浪费时间。
- 对原理和源码有了基本了解后,再尝试参与社区的一些开发工作,来加深对这款消息队列的理解。
- 完成 1~5,这个时间估计至少得一年了,所以重要的是你得有耐心。此时就可以参与深度运营某一款消息队列了。如果做好 1~5,想找一个这个方向的工作,一点问题都没有。
等你完成了 1~6,其实你已经深度了解这款消息队列了。此时,如果你还想继续深入理解消息队列这个领域,只要使用这个方法去学习另外一款消息队列,再做到这个程度就可以了。当你了解完两款消息队列后,后面的就不需要我说了,你自然就会形成自己的方法论。
从技术学习上来看,上面说到的这个方法其实完全是通用的,也是我学习新技术的方法,供你参考。
总结
我们常说,万变不离其宗,这里的“宗”,我觉得就是一个词:坚持。坚持去学习、实践、输出!
我始终认为,工程方向的技术学习就是体力活。只要付出的时间够了,一定会有成果,这是一个确定性的结论。如果非要说有什么方法,那就参考我学习 Rust 和消息队列的路径吧。
最后,我还想延伸一个话题:什么叫“卷”?
在互联网圈,你长期坚持某个事情,可能慢慢就会让你周围的人觉得你有点卷。那这个标签好吗?
我觉得,“卷”不是一个贬义词,但它是褒义也有前提。
- 卷自己不卷别人
- 卷有意义的事情,不为了卷而卷
- 聪明的卷,不埋头卷
卷自己不卷别人,是我自己一贯的坚持。生活中每个人都是独立的个体,大家所追求的东西是不一样的。比如你认为工作就应该做到100分,每天加班到半夜,但是有人认为工作只是生活的一部分,做到60分就行了。卷的前提,是尊重每个个体,只追求你想要的,而不要主动或被动地强迫别人追求他不想要的。比如工作上你可以把你那部分做到100分,但你做到100分的同时,要考虑一下会不会给队友带来压力。
卷有意义的事情,才能让自己感到快乐。当你为了升职加薪不断地卷工作、卷队友的时候,这个状态是不长久的。因为升职加薪本身是不确定的事情,不是卷了就能出结果,还要结合自己的能力和判断。卷的工作是没办法给人带来成就感的,你本身也会很痛苦,很难长期坚持。而卷有意义的事情,大家通常会认可并加入,无形中还可以提升你的领导力或者影响力。
聪明的卷,让卷有一个好结果。有收益的卷,才能有持续卷的动力,比如升职加薪、影响力、成就感等等。所以我们要基于前面两点,找到能让自己得到收益的点,再去卷,比如攻克工作中的某些难题,了解业界新兴的技术方向、技术发展趋势等等。所以需要抬头看路,听别人分享,结合自己的判断,选一个好的方向去努力,不要埋头苦干,避免无用功。
而在我看来,所谓的坚持,也是在说“技术能力还是卷出来的”,只是强调姿势要正确!
思考题
在最近的工作或者技术成长中,困扰你的问题是什么?我会针对你的问题,谈谈自己的看法。
期待你的分享,如果觉得有收获,也欢迎你把这节课分享给身边的朋友。我们下节课再见!
上节课思考闭环
前面有个例子说,要帮用户改代码。那么从这就可以延伸出一个有意思的话题,“有人说商业化产品要跪着赚钱”,对于这个观点你怎么看呢?
这个问题,每个人的看法是不一样的。
在我看来,是需要的,因为从用户的角度看,他需要解决这个问题才能上云,从我们服务方的角度看,需要他上来才能赚钱。所以从双赢的角度出发,帮他解决问题无可厚非。
那是否要跪着赚钱呢?在我看来也是需要的,这点可能有点争议,大家可以自由发表意见。
因为在商业化服务中,用户群体是多样的。有可能拿下用户是人际关系问题,所以我们需要的是搞定用户的某些关键人物。也有可能我们要用技术能力征服他,用产品和功能去让他信服。但是有时候这些还是不够,我们还需要主动服务,主动帮他们发现问题、解决问题,甚至有可能他们自己都不知道问题在哪里,我们发现并帮他们解决了,他们就用我们了。这也是我想强调的用户思维。
- 贪嗔痴 👍(0) 💬(0)
认可老师的学习方式。
2024-10-23 - windy 👍(0) 💬(0)
认可老师的学习路径:理论+实践,坚持进行刻意练习,日拱一卒,功不唐捐,迟早会“卷”出更好的技能和自己
2024-07-29