技術團隊的學習方法:每天學習 100 分鐘,成功寫出 2 本書

作者:李樂

  • “雷哥,我感覺我工作 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 掉底原因定位。

2018 年 8 月我們開始了《Redis5 設計與源碼分析》一書的編寫。團隊總共 9 位成員,陳雷、方波、黃桃、李樂、施洪寶、熊浩含、閆昌、張仕華、周生政。有些人是已經是第二次寫作了,有些人是第一次寫作。

第一次寫總是煎熬的,寫一行,不理想,刪了重寫,再寫還是不理想。將近一個月過去了,有些人僅僅寫了半頁。沒有目標的前行果然是緩慢的。我們再次的確立了目標,10 月初每個人完成各自第一章的編寫,11 月初完成各自第二章的編寫,11 月底到 1 月初全員參與校稿,與出版社簽訂合約 1 月底向出版社提交第一版書籍。有了目標,效率確實提升了;週末甚至是國慶假期都能看到大家來公司寫書。有小夥伴說,10 月 4 號國慶假期去公司寫書,完成了一章,一看時間都晚上 11 點多了。

寫書的過程是煎熬的,校稿的過程更是煎熬的。週末需要全體成員來公司,大屏幕投屏,每一章節、每一句話都需要一起審覈,表達是否正確、是否清楚、是否有語法錯誤。很多時候可能因爲一句話大家討論好久。

理工科學生往往是不善於寫作的,寫完書校完稿後,有夥伴都打趣說寫作能力提升了不少。

2019 年 8 月份,《Redis5 設計與源碼分析》書籍正式上架,這也是我們團隊的第二本書。在此感謝幾位兄弟在學習和研究過程中的陪伴與合作,本書是幾位兄弟共同合作的結晶。

早讀會也持續了三年時間了,時間不會虧待努力的人:

  • 聽衆變成了講師,菜鳥變成了大神;
  • 思否(segmentfault)上發表了 101 篇文章,收穫了 5000 聲望,4000 粉絲;
  • 建立了 LNMPR 源碼交流的微信羣,從最初的二三十人的討論羣,到現在的將近 500 人的大羣;
  • 早讀會從 10 個人到 20 個人,再到 50 個人;從滴滴到學而思網校;從後端到前端工程師;從雲平臺團隊到基礎架構團隊;

……

有人問我,學習源碼對平時工作有什麼幫助呢,在這裏我以團隊成員黃桃爲例。入職時只是 D5 的初級工程師,只會做模塊的開發,對於線上問題不知如何下手定位,方法論不足。堅持不到兩年的學習後成長爲 D7 的資深工程師,不僅能快速定位問題,更能從原理源碼層面解釋清楚,已經成長爲團隊的技術標杆。

我想告訴大家的是:

  • 每天一點成長,積聚起來就是巨大的收穫;
  • 永遠都要有學習的習慣,把成長作爲最重要的事;
  • 對於技術問題,要打破沙鍋問到底,越問會發現自己不知道的越多;
  • 人類對事物的認知是從無知→知道→瞭解→熟悉→掌握→精通 6 個階段,堅持學習是唯一的道路;
  • 希望更多的人一起來堅持學習,一起來堅持成長。

未來的我們計劃:

  • 明年出版《Swoole 5 應用與原理》;
  • 明年出版《Nginx 源碼分析》;
  • 培養幾位精通 PHP、Redis、Nginx 等方面的專家。

附上兩本書的照片和鏈接:

clipboard.png
《Redis5 設計與源碼分析》https://item.jd.com/12566383....
《PHP7底層設計與源碼實現》https://item.jd.com/12355605....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章