Redis成书记:记一个团队的涅槃与思考

Redis成书记:记一个团队的涅槃与思考

 “雷哥,我感觉我工作2年了,天天都是在用PHP写业务逻辑,CURD,CURD,CURD,虽然很努力也很累,但是感觉自己也没什么成长……”

—— 团队的一个小姑娘

“隔壁团队搞基础架构的兄弟好像很厉害,比我成长得快很多……” 

—— 团队的一个兄弟

“掌握的技术感觉很不错了,能搞定所有业务了,自我感觉良好,但是每次晋升答辩都不知道讲啥……”

——技术晋升失败的一个兄弟

成长的烦恼每个人都有,有些人选择用行动消除,有些人依然沉沦。

幸运的是,我们是前者。2016年,我们团队开始了每天早晨08:50—10:30的100分钟早读会,主要研读工作中用到的开源软件,比如PHP、Redis(Codis)、Nginx和MySQL等。我们的规矩是团队成员自愿参加。

问题也随之而来了,五分钟热度与两天打鱼三天晒网,怎么办?

  • “重在参与”:一个人引导,大家一起讨论;不是分享,是提问和探讨;主动思考才是正道。

  • 设立阶段性目标:每天沉淀wiki,有了大量的学习笔记;设立一段时间的目标,比如未来2周弄懂PHP基本变量;长远目标,写一本书(2017年我们的第一本书《PHP 7底层设计与源码实现》已上架)。

  • 组织者以身作则:“以身作则”,每天按时到公司;前一天晚上用2个小时准备第二天要讲的内容;一个人带动三个人,三个人带动整个团队;团队其他成员在成长,自己不成长就是“退步”。

  • 21天养成一个好习惯:4个星期后,参加者会持续参加,养成了习惯;想偷懒,或者其他原因不参加,内心会“焦虑”。

2018年3月份,我们开始了Redis源码的学习。从数据结构学到命令解析,再到应用与实践;从第一遍的抓主流程脉络,到第二遍的扣源码细节,到第三遍的提升实战高度。

一些好的学习方法分享给大家。

  • 打破砂锅问到底:凡事多问几个为什么,任何方案、任何决策都有其背后的逻辑存在。比如,SDS结构为什么这么设计?为什么要采用渐进式Rehash?过期健删除策略怎么决策?epoll为什么这么受欢迎?

  • 总结与沉淀:积硅步以至千里,积怠惰以致深渊;记录每天的学习笔记,多输出优秀的博客文章;每天学一点,一年大不同。

  • 举一反三:以内存管理为例,对比PHP/ malloc/Redis/Nginx内存管理各自的特点,思考PHP Chunk为什么需要2MB字节对齐;学习网络编程,对比Nginx、Redis、Swoole网络模型以及定时事件模型。

  • 学以致用:源码学习不是纯粹的理论,设计、思维、应用都很值得我们细细品味;比如学习这些源码后,在日常工作中,团队伙伴的问题处理能力提升了很多——日志切分导致fpm延迟上涨问题;PHP日志打印混乱问题;Nginx 502和504问题定位;线上fpm idle掉底原因定位。

Redis成书记:记一个团队的涅槃与思考

2018年8月我们开始了《Redis5设计与源码分析》一书的编写。团队总共9位成员,陈雷、方波、黄桃、李乐、施洪宝、熊浩含、闫昌、张仕华、周生政。有些人是已经是第二次写作了,有些人是第一次写作。

第一次写总是煎熬的,写一行,不理想,删了重写,再写还是不理想。将近一个月过去了,有些人仅仅写了半页。没有目标的前行果然是缓慢的。我们再次的确立了目标,10月初每个人完成各自第一章的编写,11月初完成各自第二章的编写,11月底到1月初全员参与校稿,与出版社签订合约1月底向出版社提交第一版书籍。有了目标,效率确实提升了;周末甚至是国庆假期都能看到大家来公司写书。有小伙伴说,10月4号国庆假期去公司写书,完成了一章,一看时间都晚上11点多了。

写书的过程是煎熬的,校稿的过程更是煎熬的。周末需要全体成员来公司,大屏幕投屏,每一章节、每一句话都需要一起审核,表达是否正确、是否清楚、是否有语法错误。很多时候可能因为一句话大家讨论好久。

理工科学生往往是不善于写作的,写完书校完稿后,有伙伴都打趣说写作能力提升了不少。

2019年8月份,《Redis5设计与源码分析》书籍正式上架,这也是我们团队的第二本书。在此感谢8位兄弟在学习和研究过程中的陪伴与合作,本书是几位兄弟共同合作的结晶。

早读会也持续了三年时间了,时间不会亏待努力的人:

  • 听众变成了讲师,菜鸟变成了大神;

  • 思否(segmentfault)上发表了101篇文章,收获了5000声望,4000粉丝;

  • 建立了LNMPR源码交流的微信群,从最初的二三十人的讨论群,到现在的将近500人的大群;

  • 早读会从10个人到20个人,再到50个人;从滴滴到学而思网校;从后端到前端工程师;从云平台团队到基础架构团队;

……

有人问我,学习源码对平时工作有什么帮助呢,在这里我以团队成员黄桃为例。入职时只是D5的初级工程师,只会做模块的开发,对于线上问题不知如何下手定位,方法论不足。坚持不到两年的学习后成长为D7的资深工程师,不仅能快速定位问题,更能从原理源码层面解释清楚,已经成长为团队的技术标杆。

我想告诉大家的是:

  • 每天一点成长,积聚起来就是巨大的收获;

  • 永远都要有学习的习惯,把成长作为最重要的事;

  • 对于技术问题,要打破沙锅问到底,越问会发现自己不知道的越多;

  • 人类对事物的认知是从无知→知道→了解→熟悉→掌握→精通6个阶段,坚持学习是唯一的道路;

希望更多的人一起来坚持学习,一起来坚持成长。

未来的我们计划:

  • 明年出版《Swoole 5应用与原理》;

  • 明年出版《Nginx源码分析》;

  • 培养几位精通PHP、Redis、Nginx等方面的专家。

  

Redis成书记:记一个团队的涅槃与思考

点击上图了解及购买

Redis成书记:记一个团队的涅槃与思考

点击上图了解及购买

Redis成书记:记一个团队的涅槃与思考

你与世界

只差一个

公众号