天天看點

加入阿裡技術團隊三年,哪些習慣讓我在工作上持續受益?

本文作者:旺德,阿裡雲進階開發工程師

2017年研究所學生畢業,我加入阿裡巴巴資料庫技術團隊,從事分布式資料庫研發,如今算來已經有三年時間了,在這期間,我深度參與了雙十一背後的資料庫PolarDB-X從設計到實作的全過程。在這三年的時間裡,于我而言,最大的收獲來自兩方面:

(1)大型資料庫項目的磨砺。資料庫作為三大基礎軟體之一,複雜度不言而喻,而分布式資料庫将這個複雜度又提升了一個層次,是以嘗試這個領域的企業并不多。一畢業就有機會挑戰這個級别的難度,磨砺造就成長。

(2)有幸與一群實力超群的小夥伴一起工作,從他們身上能學習到太多東西了。

加入阿裡技術團隊三年,哪些習慣讓我在工作上持續受益?

根據工作經驗和觀察身邊優秀的同僚,我發現優良的工作習慣是差別一般工程師和專家工程師的重要素質。想要提升自己,必須要認識到哪些工作習慣會拖延工作效率,提升項目複雜度,增加溝通難度,甚至讓合作夥伴失望,然後改正它們。刻意練習那些被證明有效實用的工作方式,成為習慣。在阿裡的這三年,我積累了這些工作習慣:

01

最基礎也最重要的習慣:想清楚再動手。大子產品和功能,詳細的設計文檔必不可少。小子產品和功能,最好動手之前,在白闆或紙上寫畫清楚,并記錄下來,千萬不要靠巧合程式設計,要了解正在做的事情,并全面考慮各種可能性。

02

設計、編寫正交性好的代碼子產品。這是大家公認的良好程式設計習慣,但說起來容易,做起來難。工程師可能會圖一時之快,編寫重複、複雜的“面條代碼”,随着代碼量膨脹,這無疑會是代碼維護和問題排查的災難。平時最好能刻意練習編寫正交性好的代碼(剛開始可能花時間,但要熟悉這種思維習慣),學習業界優秀的代碼也是精進的方式。這裡簡單列四點實用技巧:

1、不向其它子產品暴露任何不必要的資訊,也盡量不依賴其它子產品,隐藏複雜性

2、盡量避免編寫相似的函數,讓複用變的容易。

3、盡量避免直接使用全局變量。

4、編寫獨立的函數,減少函數間的依賴,函數解耦的一些技巧:

(1)隻調用對象自身的函數。

(2)隻調用傳入參數對象的成員函數。

(3)隻調用函數内部建立對象的函數。

(4)減少函數的長度。

03

如果發現代碼中不滿意的地方,早重構、多重構。盡量不要容忍軟體中的“垃圾”。重構前應該確定:

1、不要在重構的同時加功能;

2、重構前確定擁有良好測試,確定重構對系統重量的影響最小化;

3、采取短小、深思熟慮的重構節奏。

04

系統裡的每一項知識都是單一、無歧義、權威的,要與所有研發人員達成一緻。避免合作者之間因為了解的差異,編寫出語義相悖的代碼。

05

把低級的知識放在代碼裡,注釋留給進階的說明,糟糕的代碼才需要許多注釋,當然也不能沒有注釋。commit message也要認真寫。

06

時刻考慮并發對代碼的影響,面向并發設計;時刻考慮空間和時間效率;時刻考慮Corner case。

07

為項目制定詳細的編碼規範,并嚴格遵守。精心的為子產品、檔案、變量和函數命名,意義清晰無歧義。合理布局檔案和檔案夾。

08

關于bug排查。

1、遇到bug,不要恐慌,相信自己能解決它。學會評估bug的影響面。

2、bug是你的還是别人的沒有關系,不要抱怨,問題已經在那了,解決它。

3、如果排除一個bug花費了很長時間,思考能否做點什麼(例如增加日志、總結文檔、優化代碼等),讓下次排查更容易。

4、Crash early,一旦發生異常,立即崩潰,讓問題第一現場盡早暴露。如果認為什麼不可能發生,就用斷言確定它不會發生,不要自己說服和欺騙自己。

5、列印含有跟蹤資訊、格式統一規範的日志,尤其是異常路徑的。

09

盡可能多、盡可能早、盡可能全面地測試。讓品質成為正式的需求。

1、單元測試要覆寫正向路徑和異常路徑,關注一些邊界條件,并且校驗結果。

2、子產品測試、內建測試、壓力測試、性能測試都應該自動化。

3、不要忽略資源耗盡、故障恢複的測試場景

10

關于工具使用:

1、選擇一種強大的編輯器,盡可能學好它,利用它。

2、盡可能多的自動化,讓計算機去做那些重複的工作,顯然它們更擅長。這既避免了出現錯誤,又提高效率。

3、使用配置檔案,而不是內建在代碼裡。把抽象放進代碼,把細節放進中繼資料。

11

做一個知識輸出者,多寫文章和總結,在自己常用的平台分享,總結和複盤能加快進步。不要害怕交流,不要害怕暴露缺點,有效的交流越多,你就越有影響力。

12

今天了不起的軟體,比明天完美的軟體更重要。

13

最後,多運動,保持頭發和衣着整潔,保護好頸椎,保護好視力...

阿裡雲分布式資料庫PolarDB-X團隊招人啦!

團隊簡介:

PolarDB-X是阿裡巴巴全自研自主可控的分布式資料庫系統。不同于同品牌基于共享存儲架構的資料庫PolarDB,PolarDB-X是一款Share Nothing架構的分布式資料庫,可支撐千萬級并發規模及百PB級海量存儲,專注解決海量資料存儲、超高并發吞吐、大表瓶頸以及複雜計算效率等資料庫瓶頸問題。

面向人群:

2021 屆海内外院校應屆畢業生

(畢業時間為 2020 年 11 月 - 2021 年 10 月)

應聘方式:掃描下方阿裡巴巴春招二維碼

加入阿裡技術團隊三年,哪些習慣讓我在工作上持續受益?

或直接将履歷投遞至[email protected]

直播預告

3月26日 15:00-16:00邀您一同見證

雲資料庫SQL Server 2019版全國首發

全面提升成本效益及資料庫能力

一年享4折

這裡

預約觀看直播