作者:張恂老師
來源:知乎
技術能力
軟體架構師是一位具有一定技術、產品、項目和團隊等管理能力的高級程式設計師(編程高手),通常是一個開發團隊裡面技術最牛(或者比較牛)的少數幾個人之一。架構師自身的技術水平和管理水平不行,常常會把團隊帶溝裡,重要性可想而知。
成為架構師需要較長時間的一線開發經驗的積累。單純看工作年限,一般 3-5 年可成為初級架構師,5-8 年可成為中級架構師,8-10 年以上可成為高級軟體架構師,當然這只是大致的估計,具體達到何種水平還要看架構師的實際能力。
經年累月,摸爬滾打,一位優秀的軟體架構師需要掌握的技術能力很多,先說幾個最基本的。
建模
軟體開發領域的建模能力,主要是指抽象的思考能力。
普通碼農通常用代碼思考,負責一個系統中的幾個小模塊,所以思維常常局限在低層(low-level)、戰術(tactic)的層面,考慮的基本上大多是某個功能、某個模塊實現的具體細節與技巧。這是應該而且正常的,是團隊合理分工的結果。
而架構師,顧名思義,要負責整個系統的架構,尤其是涉及到一個系統(或子系統)全局的整體設計,所以往往需要高層、上層(high-level)的戰略(strategic)層面的思考,這樣就必然需要架構師經常進行建模(Modeling),對代碼、模塊、子系統和系統中的各種靜態結構、關係和動態行為、交互等等進行抽象。所以,在架構師的日常工作中,經常看到各種各樣的圖表、圖形符號和模型,是很正常的。
可以說,不會建模,不習慣於用模型思考的程式設計師,是很難成為一名稱職的軟體架構師的。
系統分析與設計
前面已經說了,系統分析與設計(System Analysis and Design)的主要技術手段是建模,兩者是高度重合的。
編程的四門功課
<img data-rawheight="896" data-rawwidth="1121" src="https://pic2.zhimg.com/3d771f862492d2e819f0e0b63fdf7af5_b.png" class="origin_image zh-lightbox-thumb" width="1121" data-original="https://pic2.zhimg.com/3d771f862492d2e819f0e0b63fdf7af5_r.png">
上圖畫的是任何軟體開發、軟體工程必然離不開的四門基本功課(四項基本活動或任務):
1、需求分析
2、設計實現
3、測試驗證
4、調試糾錯
把這四項活動連起來正好組成一個菱形,所以我也把它們叫作「編程之鑽」(The Programming Diamond)。
這四門功課既可以看作是一個團隊在整個項目開發過程中所連續從事的必不可少的四項基本活動(團隊層面),也可以看作是一名程式設計師在日常開發中為了實現一個需求而需要完成的必不可少的四項基本任務(個體層面)。
從一個功能的需求分析,到程序設計、編碼實現,再到測試確認這個功能的完成,以及發現錯誤後進行調試定位、代碼修改、設計重構或優化,再次進行測試和確認,通過後再選擇下一個需求進行分析,如此周而復始。。。這四個基本動作正好構成一個功能開發的小循環,也是每個程式設計師日常工作的標準核心動作。
那麼,為什麼普通碼農的開發不如編程高手,總是比別人慢,往往也不如別人的好?可能有許多種原因。有一個比較簡單的辦法能幫你找到開發的瓶頸:評估一下以上這四項任務在你的日常開發中的時間佔比。
我這 20 年的觀察是,國內許多碼農的開發效率低、質量不高,是因為他們往往在 Coding、Debugging 上花去了大量時間(人稱 code-and-fix),而在「編程之鑽」的需求分析、自動測試、架構設計等其他幾個重要方面往往草草帶過,佔比明顯不平衡。
什麼原因?因為許多人不知道怎麼有效率、高質量地去做需求分析、自動測試、架構設計以及調試除錯,以為只有 Coding(程式語言的語法技巧和框架 API 如何使用等)最重要,忽視了其他的軟體工程關鍵實踐,於是導致個人整體的開發速度和質量降低,老是提不上去。
而這又是什麼原因造成的?因為一方面「軟體工程無用論」長期存在,加上浮躁和急功近利的社會風氣,影響了人們的觀念和意識,導致追求短平快、糙快猛;而另一方面僅通過大學短短的四年,常常很難全面、紮實地學到並掌握「編程之鑽」的關鍵技術,而工作以後又常常忙於加班應付、各種趕工期,缺少足夠的時間來學習提高自己的開發水平。
今日勵志雞湯:只有不停的深入,你才會覺得快樂(我指的是學習)
(偷偷告訴你,輸入技術,你會有意想不到的收穫喲~)
看完本文有收穫?請轉發分享給更多人,轉載只需三秒
如果你有好的建議,請底下留言,我們共同成長
關注 勵志程式設計師 ,編程更有趣