作為一名工程師,SDK的自我修養

SDK (Software Development Kit )即“軟體開發工具包”,是一套開發工具集合,可以為特定的軟體包、應用軟體、軟體框架、硬體平臺、作業系統等產品提供服務。如果你是演算法的,那麼你可能要提供演算法sdk;如果你是搞上位機的,那麼你可能要提供拋卻介面之後的程式碼邏輯sdk;如果你是web服務端的產品,你可能也要把你的協議網路層封裝sdk,提供別人來與你進行互動。。。

簡單來說,很多人可能認為忽略了SDK這一層面的修養,很喜歡用簡單粗暴的程式碼來交流,或者說,你認為大都數互動會有專門的sdk開發工程師,或者中介軟體開發工程師來完成。其實也沒錯,對大都數人來講可能不需要專門去封裝sdk。但是就我個人而言,我覺得一個成熟的工程師應該會經常去封裝sdk,把你手中的程式碼模組化,程式化,讓你的同伴能夠高效開發,並且能提供多個平臺的轉移,也就是跨平臺化,多語言化。

目前各網際網路大廠都有提供廣告sdk,儲存sdk,推送sdk。如果你想要變流套現,一定會接入很多廠商的廣告sdk,如果你想把檔案儲存到雲盤,一定有專門的雲盤sdk,如果你想使用地圖也一定有百度sdk或者谷歌sdk。

很多初級程式設計師都是鍵盤俠,sdk俠,喜歡去調別人的介面,自己去不善於去封裝或者接觸底層程式碼。而能不能封裝優秀的sdk,往往成為考核一個人資深的標準。介面統一,跨平臺,簡單不耗時,流程化。。。這些都是sdk工程師該需要的修養。

我公司曾經在工業上位機吃過苦頭,沒辦法提供優秀的sdk,結果只能工程師入駐甲方,在甲方駐點,一手操辦解決方案,這樣其實弊端很大,同時成本高。合理的方案大都數不要跟甲方有過多的接觸,人家甲方也有工程師,只要你能提供sdk,人家就能用你的sdk去開發符合自己公司特色的上位機,而你的駐點又要去磨合融合人家的資源。

提到sdk跨平臺化不得不說的是cmake,大都數sdk還是基於C語言去封裝的,所以說跨平臺化和多語言化,這就要求你的第三方庫,你的程式水平,以及封裝過程中有成熟的思考。才會帶來事半功倍的效果,不然還不如直接給人家原始碼。cmake的出現,要求你有極高的修養,能夠同時多平臺化,讓你產品能夠廣泛為人所熟知。

同時,sdk接入過程中的log和異常管理,文件指導。成為了很多人不太注重的點,很多工程師覺得sdk提供出去就行了,後續就不管了,但是你怎麼知道接入你sdk的客戶會有千奇百怪的問題,甚至於bug的定位,sdk是很棘手的,因為無法原始碼除錯,如果你不能給出不是你sdk問題的標誌,我想很多客戶會摁死你。

當你不想讓你的程式碼被人知道的時候,封裝sdk,如果你在走心一點,加一下密,模組化他。比如你的log模組,dump模組,演算法模組,協議網路模組,這些往往程式碼除錯成熟後都可以模組化,而不要過多在工程專案中穿插太多的原始檔,這會顯示出你的愚蠢。

成年人應該有更多的思考,sdk化,模組化,人生何嘗不是如此。

作為一名工程師,SDK的自我修養

頂部