前言:軟體產業發展到今天,分工越來越細。程式設計師做為乙個通用的稱謂已經無法確切定義各種工作的特點和分類。正因為軟體開發中各種職責區分不清,無論是剛剛寫**的新手還是具有多年經驗的老手,一概被扣上程式設計師的通用名稱,這也使得很多進入這個領域的軟體開發人員無法制定自己未來的技術職業發展之路。
實際上,軟體公司也逐漸認識到了對程式設計師分類的重要性,開始將各種職位定義的更加準確。對於從事軟體開發的程式設計師來說,更需要盡快明確自己的發展方向,並在此方向上將專業知識積累的更深厚,這能讓你盡快逃脫對未來發展方向的迷茫。為此,我們專門推出程式設計師成長系列的特別策劃,將分別深入**軟體設計師、測試工程師、文件工程師、專案經理、產品經理幾種角色的成長之路。
程式設計師成長系列之一
軟體設計師可以預先構建軟體結構,如同建築架構師一般。比爾·蓋茨被稱為微軟公司的首席軟體設計師,首先是因為他是乙個優秀的架構設計師,中國同樣需要這樣的人才。
-微軟大中國區總經理黃存義
從程式設計師到軟體設計師
2023年1月13日下午,世界軟體業巨人、美國微軟公司突然在位於華盛頓州雷德蒙德市的總部舉行新聞發布會。比爾·蓋茨把微軟ceo寶座拱手讓給長期夥伴史蒂夫-巴爾默,只保留董事局主席一職,但同時出任新職務「首席軟體設計師」。比爾·蓋茨說:「今後我將全力設計開發面向未來的新軟體,同時研究制定微軟的總體技術發展戰略。」 比爾·蓋茨的這一舉動將軟體設計師的稱謂蒙上了高貴的面紗。從程式設計師的技術方向發展來看,軟體設計師無疑是職業生涯的頂峰。
拿破崙說過「不想當元帥的士兵不是好士兵」,我想不想當軟體設計師的程式設計師也不是好程式設計師。但首先要了解什麼是軟體設計師,如何才能成為軟體設計師。明了這些,就有可能向軟體設計師發展,創造更輝煌的程式人生。基於這些想法,我們採訪了佳軟cto廖恆毅,用友軟體副總工程師彭六三和u8產品總設計師鄧適宜,這些中國軟體產業技術帶頭人從他們的切身體會談了對軟體設計師的看法。
軟體設計師的定義
軟體設計師包括軟體系統設計師(system designer)和軟體架構設計師(architect)。系統設計師應對「系統結構」所使用的軟體技術非常了解,自身具備良好程式設計技巧,才能成為優秀的系統設計師。系統設計師的職責是把結構模型對應到實現模型上,從概念到實現期間規劃和組合模型的優劣是決定軟體系統設計師好壞的標準。
而軟體架構設計師是程式設計師技術方向的最終歸屬,也是成長鏈中最神聖的一環,架構設計師的貢獻最大。架構設計師徹底擺脫了語言的束縛,知道軟體發展趨勢。他們會開發新一代產品或者制定新一代產品的方案。軟體架構設計是面向未來的。全球大規模的軟體公司並不多,很重要的乙個原因是因為軟體產品的發展都滯後於市場需求,即有需求後再研發產品,而不是預見需求,預先設計,因此往往軟體設計區域性是合理的,但從整體的角度看卻不合理。要解決這些問題就要看軟體架構設計師的能力了。
軟體設計可以分三個層次。第一層屬於標準層,像j2ee、.net的框架設計;第二種屬於系統層的設計,比如delphi這樣的開發工具就是工具系統級的設計;而應用最廣泛的是第三層:應用軟體設計。基於中國軟體產業發展的現狀,大部分設計都是這個層次上的基於應用的架構設計,本文所非特殊標明,提到的軟體設計師泛指應用軟體系統設計師,當然有些也是架構設計師的能力所在。
從軟體開發歷史看,軟體設計經歷了很多階段。最早是結構化設計,只是把複雜的問題逐層分解,通過流程圖形式將任務逐級細化;後來出現物件導向設計,從底層進行物件封裝、繼承、多型,這時更多的是考慮**重用,面向的主要是類和物件。接下來出現元件設計,這主要是面向應用方面。這三種都是面向功能的設計。
從ejb、cobra技術出現之後,人們開始基於框架進行設計,也就是架構設計。繼續發展,就是基於規則的設計了,比如基於模組和工作流的設計,這時主要考慮客戶化做的更詳細以及產品的開放性、可擴充套件性、可靠性、效率方面的問題。
軟體設計師的工作
從程式設計師到軟體設計師
軟體產業發展到今天,分工越來越細。程式設計師做為乙個通用的稱謂已經無法確切定義各種工作的特點和分類。正因為軟體開發中各種職責區分不清,無論是剛剛寫 的新手還是具有多年經驗的老手,一概被扣上程式設計師的通用名稱,這也使得很多進入這個領域的軟體開發人員無法制定自己未來的技術職業發展之路。實際上,軟體公司...
從程式設計師到軟體設計師
軟體產業發展到今天,分工越來越細。程式設計師做為乙個通用的稱謂已經無法確切定義各種工作的特點和分類。正因為軟體開發中各種職責區分不清,無論是剛剛寫 的新手還是具有多年經驗的老手,一概被扣上程式設計師的通用名稱,這也使得很多進入這個領域的軟體開發人員無法制定自己未來的技術職業發展之路。實際上,軟體公司...
從程式設計師到軟體設計師
軟體產業發展到今天,分工越來越細。程式設計師做為乙個通用的稱謂已經無法確切定義各種工作的特點和分類。正因為軟體開發中各種職責區分不清,無論是剛剛寫 的新手還是具有多年經驗的老手,一概被扣上程式設計師的通用名稱,這也使得很多進入這個領域的軟體開發人員無法制定自己未來的技術職業發展之路。實際上,軟體公司...