作者:学而思网校 陈雷
大家好,我是陈雷,网校事业部互联网研发系统的负责人。今天分享的主题是“研发工程师该如何成长”。
很多年轻的研发伙伴都有关于“研发工程师该如何成长”的困惑,大家普遍对如何成长为技术专家、如何在繁忙的工作中持续学习充满了困惑,这其实是每一位研发伙伴成长过程中的必经之路。我来网校小一年了,这一年里一直致力于“打造学习型组织”,经过一年的摸索和尝试,有了一点点的成绩和心得,在新一年的开始,我想对2019年做一个总结,也跟大家分享一下我的心得。
初到网校,我跟不少伙伴做过1对1的沟通,伙伴们普遍对自己的成长充满焦虑:工作太忙,甚至每天都在加班,没有时间学习;需求太琐碎,做了很多工作但是并没有感到自己有什么成长;希望有牛人带一下,但是貌似缺少这种导师;整个团队的技术氛围不是太强,没有什么提升的方法。
所有的这些都是对成长的焦虑。
其实这种适度的焦虑是非常好的事情,这是我们对成长的渴望,只是这种渴望在内心中映射成了焦虑;适度的焦虑对一个人的成长是有很好促进作用的,这种焦虑驱使我们定位一个问题到深夜,这种焦虑驱使我们攻克一个个技术难点,这种焦虑驱使我们把一个个需求做到极致。相反,有些伙伴失去了这种焦虑,甚至部分伙伴变成了抱怨,如果没有这种焦虑,那么可能已经陷入了“舒适区”,这种舒适会让我们失去成长的动力,错失很多好机会;如果焦虑变成了抱怨,那更是非常危险的,抱怨的人很难去主动解决问题,很多时候大家坐在一起,欢乐地调侃和吐槽半天,但并不解决问题。
那么,如何将适度的焦虑和渴望转化为成长的助力呢?
我总结方法为:自我管理-结伴学习-学以致用-总结反思。
1 自我管理:自律更自由
首先最重要的一点是自我管理,很多促进成长和学习的事情都是反人性的,如何控制和管理本性上的“懒惰”,核心思路就是自我管理(自律)。我非常喜欢Keep App的Slogan:“自律给我自由”。 丘吉尔在25岁的时候说:“我渴望自由”;过了25年以后,他说“自律很重要”;又过了25年,他75岁的时候说“自律就是自由”。
用在我们研发伙伴身上又何尝不是呢?很多时候,我们看到一些牛人的成长很励志,于是下决心要去坚持每天晚上阅读技术书籍,但是坚持了3天,意志开始下降,“要不看会儿抖音再看书吧?”,“今天先休息一下,打一局游戏,明天一定继续看书”……;这是不能自律的表现,很多时候我们管理不好自己,被惰性主导自己的思想。我也是一样的,很多时候都“犯懒”,那么我是怎么管理自己的呢? 我自己有个excel做记录,见图-1:
图-1 读书记录
新年伊始,大家总会立一些Flag,我一般会设定大大小小50个目标,包括工作、学习、健身和家庭等方面,以图-1中读书记录为例,会精读或者粗读工作中需要的书,并伴有仪式感,每读完一本书,就会拍照录入到excel中,这样会促使自己坚持下去。随着时间的推移,会发现这件事会给自己带来很多收获,遇到一些问题思考时,貌似在哪本书里见过类似的场景,即可翻出来看一下,结合实际去解决。除了读书以外,自我管理还包含运动的管理,见图-2:
图-2 运动/健康管理
图-2是我最近一段时间跑步的记录和体重的管理,作为一个研发人员,从大学时期就养成了熬夜的习惯,随着年纪的增长,头发日渐稀少,健康问题也越来越严重,脂肪肝,高血脂;另外形象也越来越差,大肚腩,弓背探头;有一次一个伙伴跟我开玩笑说:“快点减肥吧,不然都影响网校研发形象啦”,于是我开始了减肥健身之旅,每天坚持“stay hungry”,保证每顿饭只吃6-7分饱,基本不吃碳水,每天无论多晚到家都坚持走/跑40分钟,微微出汗,坚持了两个多月,肚子就小了很多,(PS:带一下货,这个走步机是在拼多多上买的,只要500元,噪声也不大)。另外在拼多多上买了驼背矫正器,每天坚持穿上,争取把驼背探头的毛病改掉。
自律很难,但是真的是“自律更自由”。
2 结伴学习:一群人走的更远
第二点就是结伴学习,设定目标后,一个人去坚持自己的目标真的很难坚持到底。早在3年前,我和团队就采用结伴学习的方式去研读内外部代码,一起探讨和丰富技术知识。来到网校以后,在网校也发起了“早读会”,让我自豪的是,从2019年3月7日起,我们一直坚持到现在,每天9点-10点半,中间除了重要会议或者搬家暂停几次外,没有间断过,并且我们使用讲座的技术录了视频,见图-3:
图-3 后端早读会
图-3是后端研发伙伴在这10个月中的学习,大家一起学习了PHP的底层源码,Redis的源码,Nginx的源码,Twemproxy的源码,Swoole的源码,以及分享和探讨了网校商城的架构设计,CRM系统的设计,活动编排系统等等业务的设计和代码。大家一起学习和探讨,还有部分伙伴会做大家的讲师,这些伙伴不断地精进自己的技术、表达能力和思维能力。思否上链接如下:https://segmentfault.com/a/11...
前端伙伴们的梦想是“把好未来的前端(FE)团队建设成为行业内极具影响力的前端团队”,从2019年5月8日开始,每天都交流和探讨前端的技术。大家都知道,前端技术的特点是变化特别快,一段时间不学习就容易跟不上,无法精进和更新自己的技术。所以前端的伙伴们非常积极,建立了知识分享抢占机制,每周五会抛出下周5天的分享名额,大家踊跃去抢,这样几乎所有的伙伴都可以成为分享讲师,展现自己,提升自己的演讲能力,精进对技术理论的理解。图-4是前端伙伴的早读记录,早读会时间是9:30到10:30:
图-4 前端早读会
最近一个月,在集团技术委员会的指导下,我们建立了集团的PHP群、Java群、Go群和大前端群,为了更多的伙伴一起学习和探讨,我们开始了钉钉直播,方便一些伙伴早晨通勤时能够一起学习,见图-5:
图-5 PHP/GO/前端钉钉直播
另外,我们对于比较好的课程做了升级,在网校开办了知更鸟课程,课程内容落地到了思学堂上(内部学习网站),见图-6:
图-6 知更鸟课程
以及在集团开办了PHP精英课程,课程内容落地到了TTC上。PHP精英课程2019年举行了8期,分别讲授了设计模式、Swoole应用、高性能服务设计、PHP7底层实现以及MySQL应用,见图-7,学员对课程反馈良好。
图-7 PHP精英训练营
结伴学习的好处是,当一个人被“懒惰”控制时,会有一起前行的伙伴一起监督和拉拽。正如“一群人走的更远”这句话,结伴学习能让我们甩掉惰性,坚持学习技术理论。
3 学以致用才是真的学会
纸上得来终觉浅,绝知此事要躬行。在学习了丰富的技术理论之后,如何把理论知识用到工作中呢?这就需要 “学以致用”。而技术成长最重要的就是“学以致用”。
很多伙伴抱怨需求太多,工作太忙,压根没有时间学习,其实工作和学习本身,是密不可分的,工作本来就是学习的一部分,是学习的实战,是学习的反馈,学习如果脱离工作的实战,是没有任何价值的。
经常有伙伴问我一些问题,比如“学习PHP/Redis底层源码,我是不是要先把C语言和Linux的基本知识全部学一遍”,其实这是个误区,如果花费大量的时间去学习和准备,可能在学习这些基础的时候就放弃了,或者当你用到的时候也忘得差不多了。最好的办法是用到什么知识难点时再去补充学习,这样会更高效,更有针对性。
再比如,还有伙伴问我“学习PHP/Redis底层源码,对平时工作有什么帮助呢”,举几个例子:
我们生产环境每天凌晨2点50,所有机器同时报警CPU负载过高,追查下去发现这一时刻所有FPM进程重启导致的,这就涉及到我们学习过的FPM进程管理模型,可以思考下还有什么方案能够避免FPM同时重启呢?
我们都知道502/504等状态码含义,曾经生产环境网关偶尔的会出现502报警,这种偶然现象该如何定位排查呢?这离不开我们对TCP协议,HTTP协议等的理解以及抓包实践过程。另外看到伙伴周报提到,周末双活演练过程中,发现存在偶尔超时现象,最终定位同样是由于TCP配置不合理造成的。
Redis是我们工作中不可缺少的缓存数据库,相信学习Redis源码后,对应Redis命令的使用会更加得心应手,同时避免一些不合理使用;下半年我们将Redis的使用从单实例模式升级成集群模式,这时候结合学习过的Redis源码与Twemproxy源码,可以更好的理解我们这么做的意义。
技术研发工作是一门实践科学,从书本上得到的理论和知识,如果没有在实战中应用和检验,基本上是没有价值的。彻底搞明白自己工作的技术和所在的业务领域,是最务实高效的做法,工作和学习割裂,会导致工作和学习都做不好。
另外还有一个非常重要的点,不同的领域之间其实是触类旁通的,当你对一个领域能够熟练掌握,以至精通,并且能总结出方法论后,很容易就能上手别的领域,花3-5年时间彻底研究透一个领域,对于刚工作的伙伴来说,是非常非常重要的,甚至是必须的,所以伙伴们需要沉下心来,厚积薄发,在一个领域打透,之后再去拓展自己的知识面,做到“举一反三”。
学以致用才是真的学会,才能真的成长。
04 学会总结和反思
最后要培养总结反思的习惯。
有一个理论,叫“刻意训练10000个小时,就可以成为某个领域的专家”,所谓的刻意训练,其中有个非常重要的方法论是“总结和反思”,这个跟我们好未来文化很是匹配。
在增研前端晨读会中,发现一个很有意思的现象:前端伙伴们每周五会抛出下周5天的分享名额,需要伙伴们去抢占分享机会。为什么会出现这种情况呢?因为他们明白,分享离不开总结与反思,分享是一个技术成长,以及锻炼思维能力和表达能力的好机会。
写文章同样是一个非常好的总结与反思过程,同时也是一个提升自己知名度的过程。今年上半年我们的“学而思网校技术公众号”诞生了,每周都会有伙伴积极投稿,发表自己优秀的文章。下半年TTC社区发布,至今看到了非常多的高质量文章。
学习不应该只是被动的接受书本上的,接受别人的知识。在学习过程中,凡事要多问几个为什么,需要明白的是任何方案、任何决策都有其背后的逻辑存在;比如在Redis切Twemproxy时,思考下单实例切集群的意义在哪?多种集群方案Redis/Codis/Twemproxy各自的特点都是什么?
在工作中反反复复去实战,检验自己学习的理论知识,不断精进和提升自己对理论的理解,建立自己的经验库和方法论,这个过程中训练出来的思考能力、总结能力和反思能力是最宝贵的,也是自身价值提升最重要的部分。
新年伊始,伙伴们可以给自己树立一些目标,然后加以行动,对自己要“狠”,要自律,跟一群志同道合的伙伴一起,朝着目标去学习,去实战,在工作中落地,在过程中不断总结和反思。
新的一年,希望跟好未来研发的伙伴们一起:
奋斗更快乐,自律更自由!
一群有梦想的人走得更远,活得更充实。
学以致用,刻意训练自己10000小时。
不断地总结和反思,一起成长!一起用科技推动教育进步!
好未来技术委员会开发子通道主席 陈雷
2020年1月7日
有疑问加站长微信联系(非本文作者)