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

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 在IT圈混跡多年,代碼寫了很多,也讀了不少。同時,也接觸了很多程序猿同行,稚嫩的新人,技藝嫺熟的高手,已入化境的高高手,還有在“孜孜不倦”挖坑的... ..."}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 那如何才能脫離挖坑大隊,成爲一名高手,甚至是高高手呢?解決這個問題的前提得先思考清楚:一個優秀的程序猿應該具備哪些能力?方向清楚了,你才能定目標,你的努力才能事半功倍。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 接下來就來看下一個優秀程序猿的能力模型是怎樣的。"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/66/66677b18efafb2eed2c3ab9626b1e43c.jpeg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 如上圖五星模型所示,能力模型概括爲:需求分析能力、業務建模能力、方案設計能力、開發編碼能力以及基本職業素養 五個方面。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"一、需求分析能力"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 程序猿日常接收的開發需求,可以分成兩大類:產品需求和技術需求。技術需求主要指性能優化、架構演進此類的需求,這個不做討論,只聊產品需求。而產品需求自然是產品經理給的,這裏就從產品經理的分類開始講需求分析能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 從前後臺兩個維度,將產品經理分爲兩大類:前臺產品和後臺產品。前臺產品主要是指設計用戶使用功能界面以及交互的,而後臺產品主要是指設計支撐前臺產品所需的後臺邏輯架構的(比如阿里大中臺)。大多數情況下,前臺產品主要關注的是產品的原型和交互,較少關注後臺的邏輯架構。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 那請程序猿琢磨下,你當前合作的產品經理,是屬於哪一類?如果是後臺產品的話,一般情況下,產品經理會輸出完整的邏輯架構以及原型,程序猿基本接收需求就可以按邏輯開發了。而如果是前臺產品的話,一般情況下,產品經理只會輸出原型以及簡單的邏輯說明,程序猿沒法直接進入開發,還需要做大量業務邏輯梳理的工作並與產品反覆確認。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 搞清楚這個狀況後,程序猿就不用再盲目的糾結抱怨:爲什麼產品狗不能把邏輯寫清楚,這樣的產品方案存在一堆邏輯疑點,根本沒法做... ...然後程序猿和產品狗的關係越來越緊張。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 與前臺產品的協作,程序猿就需要具備需求分析的能力,搞清楚產品做這個需求的目的是什麼,這麼做背後涉及的整個業務邏輯架構是怎麼樣的,把潛在的問題、風險、成本、建議等,及時整理輸出與產品溝通確認。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"二、業務建模能力"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 不管是前臺產品還是後臺產品輸出的產品方案,都是需要經過程序猿的分析、翻譯,才能形成可開發落地的技術方案。這個分析、翻譯的過程就是業務建模的過程。那業務建模主要是指什麼呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 這裏的業務建模主要指兩方面:流程建模和數據建模。說的直白點,就是把產品方案涉及的流程圖和數據模型ER圖都整理出來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 怎麼畫流程圖和數據模型ER圖就不需要贅述了,重點是要重視起業務建模這個環節以及輸出流程圖與ER圖。現實情況是,很多程序猿直接忽略了... ..."}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"三、方案設計能力"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 技術方案設計往大了講是指技術選型,搭建整個系統架構基架;往小了講,是指在已經搭建好的框架內,完成產品方案的實現落地。這裏講小的,就是在需求分析、業務建模完成的基礎上,做詳細設計方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 詳細設計方案的內容包括但不限於以下幾項:組件圖、類圖、時序圖、數據庫DDL以及緩存設計等。"}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"組件圖旨在描述清楚當前模塊與其他模塊的關聯,從微服務劃分的角度看,要識別微服務的業務邊界,控制好微服務的粒度"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"類圖旨在描述清楚當前模塊涉及的類以及類之間的關係。在類設計的過程中,合理的使用設計模式,可以極大的提高代碼的可複用、可維護性。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"時序圖是流程圖的另一種表現形式,可以清晰的展現整個代碼的執行流程"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據庫DDL重點關注的是表結構和索引的設計是否合理"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"緩存設計重點關注的是數據類型以及更新機制"},{"type":"zerowidth"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 以上列舉了幾項,看起來很簡單,但實際開發中,很多程序猿同樣是不夠重視。如果叫你畫下抽象工廠的UML類圖示例,能畫出來麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 不管你會不會,建議都好好學習下設計模式和UML。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"四、開發編碼能力"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 掌握一門開發語言(Java、PHP、Go...),這是程序猿最基本的能力了。至於使用同樣一門語言,能寫出什麼的代碼,這個真的因人而異,跟寫作文一樣。不過業界基本的開發規範還是可以借鑑的,比如Java開發要參考《阿里巴巴Java開發規範》。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 建議多讀高質量的代碼,然後多寫。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"五、基本職業素養"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 前面扯了這麼多,那作爲一個職場人的基本職業素養的問題,各位程序猿有沒有想過?可能有些同行,是沒有考慮過這個問題的。以下是個人對基本職業素養的一點見解:"}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"實事求是,認真負責"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"積極主動,勇於承擔"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"溝通協作,強力執行"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"遵紀守規,自我約束"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"zerowidth"},{"type":"text","text":". 意思淺顯易懂,但是各位程序猿,過往有做到麼,未來能做到麼?當然了,做不到不等於你不優秀。只不過做事虛頭巴腦、責任心不夠、被動、溝通協作能力差、執行力差、缺乏自我約束的人,估計沒什麼人喜歡。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" IT圈子很小,壞事傳千里,各位程序猿要注意積累自己的口碑。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 以上只是針對需求分析能力、業務建模能力、方案設計能力、開發編碼能力和基本職業素養五個方面泛泛而談,希望對大家有點益處。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章