Categories
程式開發

一個程序猿應該具備哪些能力?


在IT圈混跡多年,代碼寫了很多,也讀了不少。同時,也接觸了很多程序猿同行,稚嫩的新人,技藝嫻熟的高手,已入化境的高高手,還有在“孜孜不倦”挖坑的… …

那如何才能脫離挖坑大隊,成為一名高手,甚至是高高手呢?解決這個問題的前提得先思考清楚:一個優秀的程序猿應該具備哪些能力?方向清楚了,你才能定目標,你的努力才能事半功倍。

接下來就來看下一個優秀程序猿的能力模型是怎樣的。

一個程序猿應該具備哪些能力? 1

如上圖五星模型所示,能力模型概括為:需求分析能力、業務建模能力、方案設計能力、開發編碼能力以及基本職業素養五個方面。

一、需求分析能力

程序猿日常接收的開發需求,可以分成兩大類:產品需求和技術需求。技術需求主要指性能優化、架構演進此類的需求,這個不做討論,只聊產品需求。而產品需求自然是產品經理給的,這裡就從產品經理的分類開始講需求分析能力。

從前後台兩個維度,將產品經理分為兩大類:前台產品和後台產品。前台產品主要是指設計用戶使用功能界面以及交互的,而後台產品主要是指設計支撐前台產品所需的後台邏輯架構的(比如阿里大中台)。大多數情況下,前台產品主要關注的是產品的原型和交互,較少關注後台的邏輯架構。

那請程序猿琢磨下,你當前合作的產品經理,是屬於哪一類?如果是後台產品的話,一般情況下,產品經理會輸出完整的邏輯架構以及原型,程序猿基本接收需求就可以按邏輯開發了。而如果是前台產品的話,一般情況下,產品經理只會輸出原型以及簡單的邏輯說明,程序猿沒法直接進入開發,還需要做大量業務邏輯梳理的工作並與產品反复確認。

搞清楚這個狀況後,程序猿就不用再盲目的糾結抱怨:為什麼產品狗不能把邏輯寫清楚,這樣的產品方案存在一堆邏輯疑點,根本沒法做… …然後程序猿和產品狗的關係越來越緊張。

與前台產品的協作,程序猿就需要具備需求分析的能力,搞清楚產品做這個需求的目的是什麼,這麼做背後涉及的整個業務邏輯架構是怎麼樣的,把潛在的問題、風險、成本、建議等,及時整理輸出與產品溝通確認。

二、業務建模能力

不管是前台產品還是後台產品輸出的產品方案,都是需要經過程序猿的分析、翻譯,才能形成可開發落地的技術方案。這個分析、翻譯的過程就是業務建模的過程。那業務建模主要是指什麼呢?

這裡的業務建模主要指兩方面:流程建模和數據建模。說的直白點,就是把產品方案涉及的流程圖和數據模型ER圖都整理出來。

怎麼畫流程圖和數據模型ER圖就不需要贅述了,重點是要重視起業務建模這個環節以及輸出流程圖與ER圖。現實情況是,很多程序猿直接忽略了… …

三、方案設計能力

技術方案設計往大了講是指技術選型,搭建整個系統架構基架;往小了講,是指在已經搭建好的框架內,完成產品方案的實現落地。這裡講小的,就是在需求分析、業務建模完成的基礎上,做詳細設計方案。

詳細設計方案的內容包括但不限於以下幾項:組件圖、類圖、時序圖、數據庫DDL以及緩存設計等。

組件圖旨在描述清楚當前模塊與其他模塊的關聯,從微服務劃分的角度看,要識別微服務的業務邊界,控制好微服務的粒度類圖旨在描述清楚當前模塊涉及的類以及類之間的關係。在類設計的過程中,合理的使用設計模式,可以極大的提高代碼的可複用、可維護性。時序圖是流程圖的另一種表現形式,可以清晰的展現整個代碼的執行流程數據庫DDL重點關注的是表結構和索引的設計是否合理緩存設計重點關注的是數據類型以及更新機制

以上列舉了幾項,看起來很簡單,但實際開發中,很多程序猿同樣是不夠重視。如果叫你畫下抽象工廠的UML類圖示例,能畫出來麼?

不管你會不會,建議都好好學習下設計模式和UML。

四、開發編碼能力

掌握一門開發語言(Java、PHP、Go…),這是程序猿最基本的能力了。至於使用同樣一門語言,能寫出什麼的代碼,這個真的因人而異,跟寫作文一樣。不過業界基本的開發規範還是可以藉鑑的,比如Java開發要參考《阿里巴巴Java開發規範》。

建議多讀高質量的代碼,然後多寫。

五、基本職業素養

前面扯了這麼多,那作為一個職場人的基本職業素養的問題,各位程序猿有沒有想過?可能有些同行,是沒有考慮過這個問題的。以下是個人對基本職業素養的一點見解:

實事求是,認真負責積極主動,勇於承擔溝通協作,強力執行遵紀守規,自我約束

. 意思淺顯易懂,但是各位程序猿,過往有做到麼,未來能做到麼?當然了,做不到不等於你不優秀。只不過做事虛頭巴腦、責任心不夠、被動、溝通協作能力差、執行力差、缺乏自我約束的人,估計沒什麼人喜歡。

IT圈子很小,壞事傳千里,各位程序猿要注意積累自己的口碑。

以上只是針對需求分析能力、業務建模能力、方案設計能力、開發編碼能力和基本職業素養五個方面泛泛而談,希望對大家有點益處。