從程序員到軟件設計師

軟件產業發展到今天,分工越來越細。程序員做爲一個通用的稱謂已經無法確切定義各種工作的特點和分類。正因爲軟件開發中各種職責區分不清,無論是剛剛寫代碼的新手還是具有多年經驗的老手,一概被扣上程序員的通用名稱,這也使得很多進入這個領域的軟件開發人員無法制定自己未來的技術職業發展之路。

實際上,軟件公司也逐漸認識到了對程序員分類的重要性,開始將各種職位定義的更加準確。對於從事軟件開發的程序員來說,更需要儘快明確自己的發展方向,並在此方向上將專業知識積累的更深厚,這能讓你儘快逃脫對未來發展方向的迷茫。爲此,我們專門推出程序員成長系列的特別策劃,將分別深入探討軟件設計師、測試工程師、文檔工程師、項目經理、產品經理幾種角色的成長之路。

程序員成長系列之一

軟件設計師可以預先構建軟件結構,如同建築架構師一般。比爾·蓋茨被稱爲微軟公司的首席軟件設計師,首先是因爲他是一個優秀的架構設計師,中國同樣需要這樣的人才。
-微軟大中國區總經理黃存義

從程序員到軟件設計師

2000年1月13日下午,世界軟件業巨人、美國微軟公司突然在位於華盛頓州雷德蒙德市的總部舉行新聞發佈會。比爾·蓋茨把微軟CEO寶座拱手讓給長期夥伴史蒂夫-巴爾默,只保留董事局主席一職,但同時出任新職務“首席軟件設計師”。比爾·蓋茨說:“今後我將全力設計開發面向未來的新軟件,同時研究制定微軟的總體技術發展戰略。” 比爾·蓋茨的這一舉動將軟件設計師的稱謂蒙上了高貴的面紗。從程序員的技術方向發展來看,軟件設計師無疑是職業生涯的頂峯。

拿破崙說過“不想當元帥的士兵不是好士兵”,我想不想當軟件設計師的程序員也不是好程序員。但首先要了解什麼是軟件設計師,如何才能成爲軟件設計師。明瞭這些,就有可能向軟件設計師發展,創造更輝煌的程序人生。基於這些想法,我們採訪了佳軟CTO廖恆毅,用友軟件副總工程師彭六三和U8產品總設計師鄧適宜,這些中國軟件產業技術帶頭人從他們的切身體會談了對軟件設計師的看法。

軟件設計師的定義

軟件設計師包括軟件系統設計師(System Designer)和軟件架構設計師(Architect)。系統設計師應對“系統結構”所使用的軟件技術非常瞭解,自身具備良好編程技巧,才能成爲優秀的系統設計師。系統設計師的職責是把結構模型對應到實現模型上,從概念到實現期間規劃和組合模型的優劣是決定軟件系統設計師好壞的標準。

而軟件架構設計師是程序員技術方向的最終歸屬,也是成長鏈中最神聖的一環,架構設計師的貢獻最大。架構設計師徹底擺脫了語言的束縛,知道軟件發展趨勢。他們會開發新一代產品或者制定新一代產品的方案。軟件架構設計是面向未來的。全球大規模的軟件公司並不多,很重要的一個原因是因爲軟件產品的發展都滯後於市場需求,即有需求後再研發產品,而不是預見需求,預先設計,因此往往軟件設計局部是合理的,但從整體的角度看卻不合理。要解決這些問題就要看軟件架構設計師的能力了。

軟件設計可以分三個層次。第一層屬於標準層,像J2EE、.Net的框架設計;第二種屬於系統層的設計,比如Delphi這樣的開發工具就是工具系統級的設計;而應用最廣泛的是第三層:應用軟件設計。基於中國軟件產業發展的現狀,大部分設計都是這個層次上的基於應用的架構設計,本文所非特殊標明,提到的軟件設計師泛指應用軟件系統設計師,當然有些也是架構設計師的能力所在。

從軟件開發歷史看,軟件設計經歷了很多階段。最早是結構化設計,只是把複雜的問題逐層分解,通過流程圖形式將任務逐級細化;後來出現面向對象設計,從底層進行對象封裝、繼承、多態,這時更多的是考慮代碼重用,面向的主要是類和對象。接下來出現組件設計,這主要是面向應用方面。這三種都是面向功能的設計。

從EJB、COBRA技術出現之後,人們開始基於框架進行設計,也就是架構設計。繼續發展,就是基於規則的設計了,比如基於模塊和工作流的設計,這時主要考慮客戶化做的更詳細以及產品的開放性、可擴展性、可靠性、效率方面的問題。

軟件設計師的工作

隨着大型軟件開發越來越多,整體把握軟件架構變的越來越重要。尤其當用戶需求並不明確的情況下,就要開始做軟件,如何防止交付的軟件產品和用戶的要求差的很遠,這就需要軟件系統設計師進行恰當的設計。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章