國內(nèi)我們對架構(gòu)師,項目經(jīng)理,開發(fā)經(jīng)理或者是技術(shù)總監(jiān)這類職業(yè)定位普遍不都不清晰,很多的情況是“能者多勞”,一人身兼數(shù)職。達爾文的理論在我們的行業(yè)是絕對適用的,我從進入這個行業(yè)開始我就不甘于成為淘汰者,而我也由心地?zé)釔壑@個行業(yè)很年前我就立志要成為架構(gòu)師(當(dāng)年流行叫:系統(tǒng)分析員)這目標進發(fā)。回首這10幾年的磨練,我總結(jié)了一下一名合格的架構(gòu)師應(yīng)該具備哪一些方面的能力以及怎么才能得到這些能力
編碼能力
架構(gòu)師是一個職業(yè),是一種經(jīng)歷了各種磨練與長年開發(fā)經(jīng)驗積累出來的。另外我一直認為:不會編碼的架構(gòu)師不是一個好的架構(gòu)師。我見過很多所謂的架構(gòu)師完全不懂編碼,但總喜歡拿著架構(gòu)說事。但從嚴格來說他們并不屬于“軟件架構(gòu)師”的范疇,充其量只能算是個“系統(tǒng)架構(gòu)設(shè)計師”,遇到這樣的”架構(gòu)師“我總喜歡說一句話:”Don’ttellmetheconceptsshowmethecode!“。
不參與編碼并不代表不會編碼,如果沒有過硬的開發(fā)基礎(chǔ),巨量的編碼時間積累為基礎(chǔ),在設(shè)計軟件時一定會忽略非常多的細節(jié),而這將會直接影響到整個項目的成敗,試想想當(dāng)項目經(jīng)理按照架構(gòu)師設(shè)計的軟件藍圖訂制開發(fā)計劃與安排項目資源時由于“藍圖”內(nèi)存有大量未確定的風(fēng)險因素,以及由風(fēng)險觸發(fā)后所帶來的不可預(yù)知的結(jié)果,最后項目是否能成功?
多看-多看別人的代碼,從別人的代碼中讀出軟件的架構(gòu)與設(shè)計的設(shè)計思路
多學(xué)-掌握各種語言,不要偏執(zhí)于某一技術(shù)陣形,不管java,.net,phyon還是javascript每種語言都有其優(yōu)缺點,成為一名語言控,從語言本身學(xué)習(xí)與理解語言設(shè)計者的思想。
多做-瘋狂編碼,從時間與實踐中去體驗與領(lǐng)悟,工多藝熟。
勇敢-嚴格要求自己不要寫出”發(fā)臭“的東西,勇敢地重構(gòu)!讓代碼變得優(yōu)雅,易讀充滿你的設(shè)計思想。
架構(gòu)師需要具備哪些技能需要更多的去了解:
表達力
世界上最難的兩件事是:將別人口袋的錢放到自己的口袋里面;將自己腦子的想法完整放到別人的腦子里面。
我認為一份成功的設(shè)計是”能讓不同層面的人都能看得懂“。為什么這樣說?那么得了解誰需要看設(shè)計,又是出于何目的來看設(shè)計。
銷售-從設(shè)計中尋找賣點與特色,豐富銷售方案和定制預(yù)售計劃。
項目經(jīng)理-根據(jù)設(shè)計進行時間估算、項目資源準備與工作分解。
開發(fā)-根據(jù)設(shè)計要求進行技術(shù)準備、開發(fā)環(huán)境、編寫DEMO以及最終編碼。
測試-根據(jù)設(shè)計劃分測試粒度、準備測試環(huán)境、定制測試計劃
不同的開發(fā)方法與開發(fā)流程都會有不同的設(shè)計文檔要求,而受眾無非也是上述幾種。作為項目/軟件的設(shè)計者,能清晰地向受眾準確地傳達自己的設(shè)計思路就顯得極其重要。這里指表達不是指嘴上的功底,更多的是在工具的掌握能力與文字的表達能力。使用不同的工具表達向不同的受從表達相同的理念,這基實是對架構(gòu)設(shè)計的一種驗證,這種溝通與表達能有效地融合不同角度的觀點,也能讓架構(gòu)師能更深入地理解自己的設(shè)計方向。
要面對如此多的復(fù)雜性應(yīng)該如何來鍛煉自己的表達性呢?
多與人溝通,多參與頭腦風(fēng)暴
練習(xí)用人類語言表達“非人類”的專業(yè)知識。一張用鉛筆畫的框圖往往比一個使用專業(yè)UML設(shè)計工具做出來的設(shè)計更容易讓人理解。UML為作架構(gòu)師基本上是必修課,也是輔助架構(gòu)師思維的工具,但對于不懂UML的那就是“非人類”的文檔,設(shè)計是給人看的,別人看不懂再專業(yè)再標準化的設(shè)計也只能淪為廢紙。
培養(yǎng)測試先行的習(xí)慣-在設(shè)計時多寫范例與測試,在很大程度上可以減少設(shè)計誤區(qū)和驗證被實現(xiàn)的可行性。這樣可以在將設(shè)計交付給開發(fā)、測試后節(jié)約大量的溝通時間。
擁抱變化
正如XP(極端編程)中所說:“世界上唯一不變的就是變化”。擁抱變化、預(yù)測變化、控制變化不單純是優(yōu)秀開發(fā)人員的和項目經(jīng)理的要求同樣也是架構(gòu)師一種重要的能力。
“變”
我的理解設(shè)計中的“變”就是“可定制化”的要求,可定制化程度越高系統(tǒng)/項目的可擴展性就越強。架構(gòu)師就是需要鍛煉的是控制這種變化的范圍與程度,“變”是雙刃劍,允許過多的變化就會造成“過度設(shè)計”,出現(xiàn)一大堆“未來可能使用的功能”;過于封閉則會變得僵化難以適應(yīng)新的要求。
“不變”
這里所說的“不變”也只是相對而然,在系統(tǒng)/項目中相對不變的就應(yīng)該是“核心”或者是“基礎(chǔ)框架”,舉最簡單的例子就是.netframework就是其中一者,雖然它會不斷發(fā)展,增強功能。但其基礎(chǔ)核心設(shè)計理念與架構(gòu)也從來沒有發(fā)生過質(zhì)的改變。更具體的一點來說“不變”的是規(guī)則、用法和基礎(chǔ)設(shè)計理念。
我認為學(xué)習(xí)控制變化的最佳方法是多看出色的類庫或系統(tǒng),多問為什么這樣做,理解原設(shè)計師的想法。經(jīng)過一定時間的積累,隨著對“變化”觀察的增多,自然而然會在自已的設(shè)計中按設(shè)計要求將”變“與”不變“應(yīng)用得當(dāng)。
**方法論**
針對架構(gòu)設(shè)計的方法論眾多,應(yīng)該如何選擇?我也讀過很多的相關(guān)書籍,我只選最實用的,這里我推薦幾本書。
《設(shè)計模式》-要讀懂、活用,我讀了10幾年每次都可以從中學(xué)到不一樣的想法,將其應(yīng)用于架構(gòu)內(nèi)可以極大地簡化很多復(fù)雜的問題。
《Java編程思想》-談面向?qū)ο蠓矫孀詈玫钠渲幸槐緯?,提高面向?qū)ο蟮脑O(shè)計能力會有很大幫助
《Refactoring》-重構(gòu)不單單是一種做法和程序員才關(guān)心的事。重構(gòu)重于意識與思維完全可以用于架構(gòu)設(shè)計。
《eXtremeProgramming》-雖然討論的是開發(fā)方法,但它最能詮釋什么是”變化“。
以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)小編介紹的“Java程序員進階架構(gòu)師究竟要具備哪些能力”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。