從 1998 到 2022,20 餘年開源路上的堅持與熱愛
作為一名 70 後程式設計師,桑樹多與開源的故事最早可以追溯至 1998 年。彼時才從哈爾濱工業大學畢業不久的他進入了一家科技公司,正式開啟了自己的程式碼職場生涯,也開啟了奇妙開源世界的大門。
從開始使用 Linux 桌面環境,到自己動手為新的硬體裝置移植驅動軟體,再到後來陸續參與了 Linux Kernel、MeeGo、Ubuntu 等開源軟體的開發,桑樹多的開源之路走得越來越深,與開源技術也結下了長達 20 餘年的不解之緣。
“從 Red Hat Linux 5.0 開始,我接觸到開源,然後一步步從使用者成為愛好者,最後成為了一名貢獻者。回顧過往 20 年參與開源的經歷,真的不得不感嘆一句受益良多。”
對於做開發的同學來說,“開源”這個概念並不陌生。近年來,伴隨著雲端計算、大資料、人工智慧等數字技術的快速發展,開源模式的熱度也在不斷攀升,日漸成為數字技術創新和產業數字化轉型的重要模式,開源軟體也成為了各大網際網路企業背後的支撐力量。
從科技發展的軌道來看,參與開源的重要性不言而喻,但仍然有很多開發者以工作繁忙等為理由來閉目塞聽。事實上,這並不是一件多麼困難的事情,桑樹多用他的親身經歷進行了說明。
“你可以先成為使用者並積極參與社群討論,透過學習其他人解決問題的方法和程式碼熟悉開源軟體的架構和設計思想,再進一步發展自己提交 Patch 和 PR 解決問題,成為 Contributor——在其他使用者遇到自己解決過的問題時主動幫助他人,在有能力時積極貢獻程式碼。”
“而對於開源小白來說,你可以從自身的技術興趣出發來選擇想要參與的開源方向,如果對資料庫感興趣,那 TDengine 就是一個非常適合上手學習的開源專案,如果是對訊息佇列感興趣可以選擇 Kafka。”
入門容易堅持卻難,我們不妨從桑樹多的經歷中探尋一下堅持的理由。參與開源究竟給他帶來了什麼?
從開發者到 Contributor,尋找參與開源的獲得感
開源究竟是什麼?參與開源的意義又在哪裡?
“簡單來說,開源的意義就是打破傳統軟體研發自上而下的研發模式,更多應用自組織開發模式快速迭代打造精品軟體,如果你還想更加深入地從文化和理念的角度去理解開源,那可以學習一下《大教堂與集市》這本書。”
作為一個資深的開源軟體開發者,桑樹多的開源經歷也向我們展示了參與開源到底能夠帶來哪些改變和幫助。
“可以負責任地講, 參與開源一定會增加自己的職場競爭力,因為這可以讓你更容易接觸到先進的技術,像 Linux Kernel 之類的很多開源軟體,程式碼已經經過千錘百煉,透過閱讀這些程式碼就可以學習其背後的設計思想。而且你還可以在開源社群內進行討論學習,讓自己能夠更快地收穫成長。”
此外,桑樹多還認為, 如果能成為一名 Contributor,透過自己編寫的程式碼給關注的開源軟體帶來提升,那將是一件非常有自豪感的事情。首先自身技術實力在專家 review 的環節可以得到他人的認可;其次在 review 過程中進行觀點交流也可以幫助自己學習他人的觀點,發現自身的疏漏和不足;在有了一定經驗之後,你也可以去幫助別人 review 程式碼,以此實現教學相長。
在這個過程中,桑樹多跟一些專家建立了深度聯絡,也交到很多志同道合、熱愛開源、喜歡開發的朋友。由此可見, 參與開源的獲得感是一種多維度的、從內到外的提升,這不光體現在技術層面,在情感層面也能獲得滿足感。
“還有一個參與開源的好處,那就是方便‘跳槽’”。雖然聽起來不太正經,但是確實是一個行之有效的方法,因為很多公司的 HR 或者獵頭都會透過開源專案來尋找一些有經驗的開發者,在開源這條路上越走越深也就意味著有越來越多的工作機會向你在招手。
閱讀到此,大家可能會有所好奇,桑樹多與濤思資料就是這麼結緣的嗎?當然沒有這麼簡單,下文中將會為大家揭曉答案。
因開源結識 TDengine,他選擇為國產開源軟體添磚加瓦
2019 年中一次偶然的工作契機,桑樹多成為了 TDengine 的 Contributor。可能是出於對一位 50 歲大齡程式設計師兩個月寫出一萬八千多行程式碼的震驚和敬佩,也可能是因為對國產開源軟體投入了越來越多的關注,總之在種種原因的作用之下,不久後他選擇加入濤思資料。
“ 當我瞭解到年屆 50 的 Jeff(濤思資料創始人陶建輝)還在繼續寫程式,並且打造出 TDengine 這個產品的經歷後,我就開始在 GitHub 上關注 TDengine,然後驚喜地發現中國的團隊也能開發出精品開源軟體。在深入地瞭解下我越發覺得,TDengine 並不是一款被憑空創造的產品,而是真正地在解決現實中的實際問題,而且正是憑藉這一點,其使用者和市場規模也都在穩步增長。”
目前桑樹多在濤思資料主要負責 TDengine 的生態應用研發工作,致力於讓更多人能夠在更多場景和環境下更容易使用。儘管已經擁有很豐富的工作經驗,但猛然調轉方向到一個自己涉獵並不是很深的技術領域,如桑樹多這般的技術老將也不免需要適應一段時間,“遇到最大的困難主要是之前技術方向不在資料庫,對資料庫的學習需要從頭開始,但好在透過大家的熱情幫助和自己的努力也算是摸到資料庫的邊兒了。”
對於桑樹多而言,從加入濤思的那一刻開始,自己的全部精力就投入到了 TDengine 的最佳化和發展中。由於 TDengine 是使用 C 語言開發,對很多開發者而言門檻略高,對此桑樹多也提出了一些不同的看法。
“TDengine 的程式碼質量很高,模組之間劃分總體上比較清晰,文件也較全,社群相對也很活躍,遇到問題能夠及時得到幫助,對於有志於學習資料庫核心程式碼的同學來說門檻高不是一個難以攻克的問題。 如果你對 C 語言並不熟悉,那我建議你也可以從學習 TDengine 生態應用軟體的原始碼開始,還可以透過學習 TDengine 的測試指令碼來學習如何對基礎軟體進行測試。”
目前 TDengine 支援 Java、Go、Python、C#、NodeJS、Rust 等多種語言的聯結器,發展至今,其程式碼量也越發龐大,想要充分理解其整體的設計也是一件比較有挑戰的事情。 如何才能對 TDengine 的設計和模組進行一個快速且深入地瞭解,桑樹多也作了相應解答。
“首先 TDengine 不僅進行了程式碼開源,文件也實行了全面開放,其中不僅是使用文件,連設計文件都是公開的,靜下心來閱讀完這些文件會給到你很大的幫助。此外 TDengine 的編譯和部署過程極其簡單,自己就可以實現程式碼下載編譯執行,還可以透過 GDB 等除錯工具看到所有執行過程,和程式碼對照起來學習會非常容易。”
正如桑樹多所說,開源軟體本質上就是要擴大影響力,積極打造生態社群,遵從業界規範,使軟體之間可以更容易互通和互操作,繼而進一步推動科技和行業的進步。在桑樹多等一眾濤思人的努力下,作為國產開源軟體的一員,TDengine 正在向著這個方向加速攀登。
而回過頭來,我們從桑樹多加入濤思資料的經歷中也能悟出一個道理,只要擁有一顆樂於學習的心和一雙善於發現機遇的眼睛,年齡就不會成為限制自身前進的阻力,反而經年累月積攢下來的經驗和見識會成為縱橫職場最鋒利的“武器”。
從 20+ 到 35+ 程式設計師,打破常規向更多領域突圍
近年來,隨著業內大齡程式設計師被頻繁清退等職場新聞的不斷髮酵,在程式設計師的圈子裡,“35+ 門檻”“青春飯”等充斥著焦慮的話題甚囂塵上。一批批年輕人從校園走進社會,俗話說長江後浪推前浪,一浪更比一浪強,那伴隨著他們的成長,“前浪”真的會被拍死在沙灘上嗎?
或許我們可以從桑樹多的經歷中尋找一下答案。作為一名 70 後,他早就超越了 35 這個所謂的“大齡”門檻,但他仍然活躍在職場之上,甚至憑藉著沉澱多年總結出的技術經驗、閱盡千帆後輸出的深刻觀點,成為了公司裡一些後輩所追逐學習的存在。對於如何打破程式設計師圈子中 35+ 大齡焦慮症這一現象,桑樹多也有自己的看法。
“大齡程式設計師在國外很常見,我見過很多國外程式設計師四、五十歲還依然奮鬥在一線程式設計工作上,很多頂尖軟體專案的維護者往往也是大齡程式設計師。 隨著國內人口紅利的下降,相信更多企業也會越來越重視大齡程式設計師的價值。而我們自身也應該保持初心,積極瞭解軟體行業的發展趨勢,把自己過去的經驗更多應用到有前景的新領域中。只有不斷發現、學習和創新,才能不斷進步、不被時代所拋棄。”
大齡程式設計師前進的動力是打破常規,向更多領域突圍,年輕的程式設計師往往有更多的選擇,但偶爾也會因行差踏錯、定性不足而蹉跎光陰。 以過來者的身份,桑樹多從自身經驗中沉澱出一套方法論,“ 寫程式碼有個DRY(Don’t repeat yourself)原則,對個人職業生涯或者技術方向也很適用。人生短暫,不要浪費時間做重複的事,而要儘可能提升自身技術的深度和廣度,增加更豐富的體驗,參與開源是個好辦法。”
開源貫穿了桑樹多職場縱橫的幾十年,使他受益良多,如今,他把這個成長的“秘訣”分享了出來,期待能夠幫助到更多迷茫的開發者。“也希望隨著越來越多開發者的加入和關注,國產開源之路能夠越走越順暢。”
想了解更多 TDengine 的具體細節,歡迎大家在GitHub上檢視相關原始碼。