卷首语:Go 语言专家曹大谈十年技术生涯:有理想,但不理想化
作者|贾亚宁
每一个互联网从业者可能都思考过这样的问题:如何能从人才大军中脱颖而出,如何能更高效率地获得成长和发展?关于这个话题,我们对 Go 语言专家曹大(曹春晖)老师进行了采访,一起来看看他的实践和思考吧。
InfoQ:你的职业生涯中印象最深刻的挑战是什么?你是如何解决的呢?
曹春晖:技术的挑战都不算什么大事,工程方面的问题一定可以找到解决方案,找不到方案的那就是世界难题了。在公司里最大的挑战是有 idea 的时候,要说服老板去做(碰到太多次了),因为公司里的老板背景各异,不同的人不可能对一件事情有相同的看法,这时候要达成共识就需要反复沟通,拉齐、磨合、开会,摆出各种软件工程系统架构理论,再搬出硅谷的 FAANG 是怎么做的,很心累。能说服老板的话,其它事情都是小事,这很难避免,因为大公司都是这样的。
InfoQ:方便分享一下你的职业发展路径吗?你认为影响技术人的职业发展的重要因素有哪些?
曹春晖:我的职业发展参考价值不大,其实这么多年看下来,在同样靠谱的前提下,职业的发展顺利与否主要都是看运气……了解了一些公司运作的规律和招人的潜规则以后,很多事情比较无奈,不太好说(真心话)。
学习方面给各位技术人的建议是要养成终生学习的习惯,不要学到某个程度就固步自封,即使是后端技术,五年前和现在其实差别已经挺大的了。我以前写过一篇《工程师应该如何学习》,介绍过一些学习的渠道和方法,可以参考。工作中打过交道的人,其实很多工作十年的人跟刚毕业的学生没什么区别,你看看你们公司的架构师,CRUD 都能搬出 100 种理论来说明为什么要这么设计,这才是真水平。
另外,写代码以外的技能也是要刻意训练的,比如口才、演技等,很多踏实写代码的人其实在大公司里很吃亏,要理解什么是一定程度上的按闹分配。
InfoQ:作为常年在 Go 语言世界里探索的人,你认为什么是学习 Go 语言最高效的方法?
曹春晖:入门的话就看《The Go Programming Language》,最好的学习方法就是把书上的例子都抄一遍。可以翻翻优秀的 Go 项目来学习他们是如何使用这门语言的,前面也提到了,awesome-go 里有很多这样的项目。直到你觉得 Go 的所有语法都了熟于心,就算是入门了吧。
进阶要去学习怎么定位 Go 在线上系统的问题,成为一个 Go 的高级工程师。这部分需要大家了解一些 Go 的底层知识,学习基于 goroutine 和 channel 的各种并发编程模式,以及常用的工具链:比如 pprof 怎么用,怎么用 --base 去找内存泄露,出了性能问题怎么做优化等等。要达到的目标是:线上的 Go 系统出了问题,能够通过自己的知识储备快速定位。Go 的底层知识现在国内比 java 圈还卷,文章很泛滥,可以随意搜搜,择优阅读。
下一步是要通过多接触各种场景(比如大流量,高并发的,业务的,基础设施的等等),同时与其它语言横向做对比,了解 Go 语言在各种场景下的优缺点,不要成为一个语言原教旨主义者,比如我在工作的过程中就看到过不少 Go 其实就没法应付的场景,大家硬着头皮用,硬着头皮 hack,项目搞到最后优化起来也很痛苦,可能还不如直接去用 Rust。尽量多思考,也不要忌讳与其它语言的熟手交流。
相比 PHP 之类的语言,Go 的最大好处是可以跨越很多领域,从业务到基础设施,如果你业务干腻了,技术储备又足够,也可以去玩玩基础设施开发 (当然,我不建议你总是换, 实在手痒可以业余时间给一些开源基础设施项目提提 PR)。也就是大家的工作内容选择范围会大很多,这又需要考验你的智慧了,选择哪个领域才能赚到钱,我没法给出很具体的建议,哈哈。
InfoQ:你是如何做到长期内容输出的呢?对想要开始的小伙伴有什么建议吗?
曹春晖:要给自己设立一个简单的目标,同时不要影响到工作,我之前写了很多年 blog,体感最合适的是一个月两篇文章。内容可以和工作相关,也可以无关。两周一篇,压力也不太大,可以没事想起来就写写。
输出是很重要的,费曼学习法告诉我们,你要把知识讲得明白,才能确定自己是真的会了,只是应付工作里的那点东西,很多时候人会变得懒惰,慢慢也就不想思考了。我曾经在某公司听到一个很高级别的人自豪地说他很多年没看一本书,还很骄傲地讲给他的下属听,我不认为新进入行业的人能够有像这位一样靠公司起飞的运气,还是要把学习当回事的。
因为增加了输入,这些输入一定会在某个时间点对你的工作产生帮助。在某大公司的时候我也看到内网上一些优秀的文章作者,他们基本上都保持了持续内容输出的习惯,这也意味着他们看了非常非常多的书。有些人的读书速度能快到匪夷所思的程度 (一年 68 本),不知道他们是怎么做到的。
多积累一些知识以后的输出是很有价值的,我之前写的系统设计的文章被人看到以后会来问我是怎么做的,说不定聊着聊着就成同事了。
目录
热点 | Hot
JavaScript 框架大战已结束,赢家只有一个
接手了一座年收入 2000 万美元的代码“屎山”,我到底是该重写还是该跳槽?
谷歌推出 Carbon 后,我在思考为什么 Rust 没能成为 C++ 的正式继任者
理论派|Theory
理想汽车:从 Hadoop 到云原生的演进与思考
去哪儿旅行微服务架构实践
推荐文章 | Article
从一线研发到公司创始人,基础软件创业者迷雾中与市场赛跑
作为现代开发的基础,为什么 TDD 没有被广泛采用?
观点 | Opinion
React 老矣,我建议大家用用别的框架
评论 (4 条评论)