程式設計師的黃金奮鬥時期是前5年 | 專訪CSDN博主丁威

fans news 發佈 2021-12-08T10:04:30+00:00

今天,CSDN程序人生頻道了採訪了在職場混跡十年,依然對技術全情投入,飽有百分百熱情的丁威老師,他是《RocketMQ技術內幕》作者,RocketMQ官方社區優秀布道師,CSDN 2020博客之星亞軍,「中間件興趣圈」公號號主。

採訪嘉賓 | 丁威 編輯 | 張紅月

出品 | CSDN(ID:CSDNnews)

或是冥冥之中自有安排,亦或是堅持不懈努力得來,你是因何踏入程式設計師這個行業的呢?寫代碼,改Bug,一千個程式設計師,可能就有一千個與代碼的故事……

  • 程式設計師甲,大學專業被調劑,從此深深愛上了寫bug……

  • 程式設計師乙,聽說土木工程畢業不好找工作,於是趕緊轉行學了編程

  • 程式設計師丙,因喜愛玩電腦、拆裝手機,從此走上了編程的不歸路,雖然我會修電腦,可我是真正的程式設計師

  • ……

今天,CSDN程序人生頻道了採訪了在職場混跡十年,依然對技術全情投入,飽有百分百熱情的丁威老師,他是《RocketMQ技術內幕》作者,RocketMQ官方社區優秀布道師,CSDN 2020博客之星亞軍,「中間件興趣圈」公號號主。

丁威

丁威目前在中通快遞研發中心基礎平台擔任資深架構師,主要負責全鏈路壓測、消息中間件、數據同步、緩存等中間件在中通等研發與落地,日常主要關注中間件領域,他認為中間件在分布式架構體系中占據舉足輕重的地位。主流分布式架構體系通常包含微服務、網關、服務治理、消息、緩存、調度、存儲(關係型資料庫、NoSQL)、分庫分表等,每一個領域都會存在多款優秀的中間件,掌握中間件、深入理解各個中間件的設計理念,無疑將極大的提升對分布式架構的理解。

因「找工作」 與Java結緣 開啟程序生涯

丁威大學專業是網絡工程,大一第二學期接觸到了C語言,但真正令他開啟編程之路的則是大三選修的Java。步入大三下學期,離畢業越來越近,大家不得不面對「找工作」這個難題,而當時充斥的信息都說網絡專業不好找工作,丁威表示:「作為一個名貧困生,如果讀完大學無法找到工作,對我這樣的家庭是致命的,經過一番調研,選修了Java課程,正式開啟了編碼之路。」

在談到大學裡的課程是否重要時,他提到:「不是讀書無用,而是方到用上方恨少。」大學大部分專業課程在畢業後第一次找工作或許沒有什麼助力,但隨著程序生涯逐漸深入,才會明白那些課程是多麼重要。

作為離開校園10餘載的程式設計師,他依然對如下幾門課程印象頗深:

  1. 高等數學

  2. 計算機作業系統

  3. 數據結構與算法

  4. 軟體工程

程式設計師奮鬥的黃金時期

作為入行10年,經驗豐富的程式設計師,丁威表示:結合自身工作經驗,程式設計師的黃金奮鬥時期是前5年

回顧自己的程序生涯,他覺得前五年一定要做好職業生涯規劃並付諸努力行動。

  1. 第一份工作真的很重要,如果有好的學歷背景,找工作時不能將就。

  2. 如果沒有好的學歷背景,也無需氣餒,要一開始就為自己樹立一個遠大的目標:一定要憑著自己的努力,勵志進入所處行業的頭部企業。

  3. 有了目標,工作的第一年主要擴大自身知識面,點到為止,以便快速完成日常工作;進入工作第二年後,就要開始打牢基礎,刨根問底,探究原理,快速成長。

此外,他還分享了自己的進入高並發領域的一次面試經歷:「在2016年跳出舒適區去面試的時候,我發現面試官張口閉口就是分布式,高並發,而這又是我極為欠缺的。但能夠進入擁有高並發的業務場景也不是一件容易的事情,想從實戰中學習高並發更是可遇而不可求。」

作為一名沒有高並發經驗的程式設計師來說,要想有機會接觸高並發,唯一能做的是先具備高並發的技能,而學習各個領域中的中間件,無疑能助力見識高並發的編程技巧,並且中間件也是分布式架構體系的支柱,故從2016年9月開啟了中間件的學習之路,持續至今,會一直記錄了我的學習成長曆程。

與Bug打交道的日子

在分享技術之路方面,丁威談到,C語言算是入門語言,而真正把他領入編程之路的是Java,此外,目前在工作中還會用C++、Go、Python等語言。對於準備踏入編程領域的同學來說,認真學好一門語言,後邊可以基於自己的興趣及工作業務需要,再擴展其它語言的學習,這樣會容易很多。

那麼,在編寫代碼時,程式設計師最討厭跟「誰」打交道,那肯定非bug莫屬了。丁威曾在博客發表過《困擾我半年之久的RocketMQ timeout exception 終於破解了》一文,為什麼會這麼久?丁威表示,該Bug之所以困擾半年,並不是說半年一直在處理,其中一個非常重要等因素該問題等定性:重要而不緊急。

對於超時問題,程式設計師很容易根據經驗定性為網絡原因,而且由於他對RocketMQ非常熟悉,有充足的證據證明RocketMQ服務端寫入耗時非常低,將技術問題初步定性為網絡問題,從而將問題拋給網絡組同事,由於跨部門協作,並且該問題不緊急,各個職能部門有自身的OKR,協調起來比較麻煩。

在談到Bug及突發事故的處理流程方面,他表示,面對BUG,或者生產事故,一個非常重要的突破口:詢問是否有變更,優先回滾,優先止血恢復問題,然後才是分析與排查。排查BUG,通常是根據錯誤異常棧,定位代碼,結合日誌分析即可。

技術成就多彩人生

除了擔任架構師一職,丁威還是RocketMQ官方布道師。2017年,阿里巴巴將 RocketMQ捐贈給Apache基金會成為Apache的頂級項目。與此同時,RocketMQ也深深吸引了丁威了關注,RocketMQ性能為何如此高效,背後運用了哪些技術?如何實現刷盤?定時消息、消息過濾等實現原理……

好奇心帶來學習力,彼時,丁威正式開啟RocketMQ源碼研究之路(https://blog.csdn.net/prestigeding/category_7034876.html)。與目前主流的消息中間件Kafka、RocketMQ、RabbitMQ相比,丁威覺得RocketMQ的優質特性有:

  1. 程式語言是Java,眾所周知Java是當今最流行的程式語言;

  2. RocketMQ提供了消息檢索功能,是回懟項目方質疑丟失消息的最佳法寶;

  3. 提供消息重試、定時消息、事務消息、自動位點提交等業務開發必須等功能。

  4. 架構簡單清晰,運維成本低。

布道師也可以理解成技術推廣專家,需要經常分享技術實戰,參與社區組織的技術活動,對此丁威表示,程式設計師參與技術分享,打造技術影響力,拓寬人脈圈,助力職場,形成「品牌」溢價。

他說道:技術分享並不會犧牲工作效益,反而會提高生產力,但我們堅持一個原則,在公司,除非進行與工作相關的技術調研,業餘學習必須利用業餘時間,並且可以優先攻破公司中目前選用的技術棧。

程式設計師如何快速入行中間件領域,他表示:補齊基礎,勇往之前。中間件開發的必備基礎:Java集合、JUC並發包、Netty(NIO)網絡編程。

入職中間件的職業發展方向,丁威介紹到:「中間件方向其實有兩條路線,中間件研發人員(技術創作者)、中間件應用人才(技術架構師),大家根據自身情況選擇即可,都可以成就一番事業。」

最後,丁威也分享了他的座右銘:越努力越幸運,唯有堅持不懈。與讀者們共勉。

關鍵字: