Java程序員通往架構(gòu)師的修煉之路

國(guó)內(nèi)我們對(duì)架構(gòu)師,項(xiàng)目經(jīng)理超陆,開發(fā)經(jīng)理或者是技術(shù)總監(jiān)這類職業(yè)定位普遍不都不清晰牺弹,很多的情況是“能者多勞”浦马,一人身兼數(shù)職。達(dá)爾文的理論在我們的行業(yè)是絕對(duì)適用的张漂,我從進(jìn)入這個(gè)行業(yè)開始我就不甘于成為淘汰者晶默,而我也由心地?zé)釔壑@個(gè)行業(yè)很年前我就立志要成為架構(gòu)師(當(dāng)年流行叫:系統(tǒng)分析員 )這目標(biāo)進(jìn)發(fā)『皆埽回首這10幾年的磨練磺陡,我總結(jié)了一下一名合格的架構(gòu)師應(yīng)該具備哪一些方面的能力以及怎么才能得到這些能力

一、編碼能力

架構(gòu)師是一個(gè)職業(yè)漠畜,是一種經(jīng)歷了各種磨練與長(zhǎng)年開發(fā)經(jīng)驗(yàn)積累出來的币他。另外我一直認(rèn)為:不會(huì)編碼的架構(gòu)師不是一個(gè)好的架構(gòu)師。我見過很多所謂的架構(gòu)師完全不懂編碼憔狞,但總喜歡拿著架構(gòu)說事蝴悉。但從嚴(yán)格來說他們并不屬于“軟件架構(gòu)師”的范疇,充其量只能算是個(gè)“系統(tǒng)架構(gòu)設(shè)計(jì)師”瘾敢,遇到這樣的”架構(gòu)師“我總喜歡說一句話:”Don’t tell me the concepts show me the code!“拍冠。

不參與編碼并不代表不會(huì)編碼,如果沒有過硬的開發(fā)基礎(chǔ)廉丽,巨量的編碼時(shí)間積累為基礎(chǔ)倦微,在設(shè)計(jì)軟件時(shí)一定會(huì)忽略非常多的細(xì)節(jié),而這將會(huì)直接影響到整個(gè)項(xiàng)目的成敗正压,試想想當(dāng)項(xiàng)目經(jīng)理按照架構(gòu)師設(shè)計(jì)的軟件藍(lán)圖訂制開發(fā)計(jì)劃與安排項(xiàng)目資源時(shí)由于“藍(lán)圖”內(nèi)存有大量未確定的風(fēng)險(xiǎn)因素欣福,以及由風(fēng)險(xiǎn)觸發(fā)后所帶來的不可預(yù)知的結(jié)果,最后項(xiàng)目是否能成功 焦履?

  • 多看 - 多看別人的代碼拓劝,從別人的代碼中讀出軟件的架構(gòu)與設(shè)計(jì)的設(shè)計(jì)思路

  • 多學(xué) - 掌握各種語言,不要偏執(zhí)于某一技術(shù)陣形嘉裤,不管java, .net , phyon 還是javascript每種語言都有其優(yōu)缺點(diǎn)郑临,成為一名語言控,從語言本身學(xué)習(xí)與理解語言設(shè)計(jì)者的思想屑宠。

  • 多做 - 瘋狂編碼厢洞,從時(shí)間與實(shí)踐中去體驗(yàn)與領(lǐng)悟,工多藝熟典奉。

  • 勇敢 - 嚴(yán)格要求自己不要寫出”發(fā)臭“的東西躺翻,勇敢地重構(gòu)!讓代碼變得優(yōu)雅卫玖,易讀充滿你的設(shè)計(jì)思想公你。

二、表達(dá)力

世界上最難的兩件事是:將別人口袋的錢放到自己的口袋里面假瞬;將自己腦子的想法完整放到別人的腦子里面陕靠。

我認(rèn)為一份成功的設(shè)計(jì)是 ”能讓不同層面的人都能看得懂“迂尝。為什么這樣說?那么得了解誰需要看設(shè)計(jì)剪芥,又是出于何目的來看設(shè)計(jì)垄开。

  • 銷 售 - 從設(shè)計(jì)中尋找賣點(diǎn)與特色,豐富銷售方案和定制預(yù)售計(jì)劃粗俱。

  • 項(xiàng)目經(jīng)理 - 根據(jù)設(shè)計(jì)進(jìn)行時(shí)間估算说榆、項(xiàng)目資源準(zhǔn)備與工作分解。

  • 開 發(fā) - 根據(jù)設(shè)計(jì)要求進(jìn)行技術(shù)準(zhǔn)備寸认、開發(fā)環(huán)境、編寫DEMO以及最終編碼 串慰。

  • 測(cè) 試 - 根據(jù)設(shè)計(jì)劃分測(cè)試粒度偏塞、準(zhǔn)備測(cè)試環(huán)境、定制測(cè)試計(jì)劃

不同的開發(fā)方法與開發(fā)流程都會(huì)有不同的設(shè)計(jì)文檔要求邦鲫,而受眾無非也是上述幾種灸叼。作為項(xiàng)目/軟件的設(shè)計(jì)者,能清晰地向受眾準(zhǔn)確地傳達(dá)自己的設(shè)計(jì)思路就顯得極其重要庆捺。這里指表達(dá)不是指嘴上的功底古今,更多的是在工具的掌握能力與文字的表達(dá)能力。使用不同的工具表達(dá)向不同的受從表達(dá)相同的理念滔以,這基實(shí)是對(duì)架構(gòu)設(shè)計(jì)的一種驗(yàn)證捉腥,這種溝通與表達(dá)能有效地融合不同角度的觀點(diǎn),也能讓架構(gòu)師能更深入地理解自己的設(shè)計(jì)方向你画。

要面對(duì)如此多的復(fù)雜性應(yīng)該如何來鍛煉自己的表達(dá)性呢抵碟?

多與人溝通,多參與頭腦風(fēng)暴

練習(xí)用人類語言表達(dá)“非人類”的專業(yè)知識(shí)坏匪。一張用鉛筆畫的框圖往往比一個(gè)使用專業(yè)UML設(shè)計(jì)工具做出來的設(shè)計(jì)更容易讓人理解拟逮。 UML為作架構(gòu)師基本上是必修課,也是輔助架構(gòu)師思維的工具适滓,但對(duì)于不懂UML的那就是“非人類”的文檔敦迄,設(shè)計(jì)是給人看的,別人看不懂再專業(yè)再標(biāo)準(zhǔn)化的設(shè)計(jì)也只能淪為廢紙凭迹。

培養(yǎng)測(cè)試先行的習(xí)慣 - 在設(shè)計(jì)時(shí)多寫范例與測(cè)試罚屋,在很大程度上可以減少設(shè)計(jì)誤區(qū)和驗(yàn)證被實(shí)現(xiàn)的可行性。這樣可以在將設(shè)計(jì)交付給開發(fā)蕊苗、測(cè)試后節(jié)約大量的溝通時(shí)間沿后。

三、擁抱變化

正如XP(極端編程)中所說:“世界上唯一不變的就是變化”朽砰。擁抱變化尖滚、預(yù)測(cè)變化喉刘、控制變化不單純是優(yōu)秀開發(fā)人員的和項(xiàng)目經(jīng)理的要求同樣也是架構(gòu)師一種重要的能力。

“變” 我的理解 設(shè)計(jì)中的“變” 就是 “可定制化” 的要求漆弄,可定制化程度越高系統(tǒng)/項(xiàng)目的可擴(kuò)展性就越強(qiáng)睦裳。架構(gòu)師就是需要鍛煉的是控制這種變化的范圍與程度,“變”是雙刃劍撼唾,允許過多的變化就會(huì)造成“過度設(shè)計(jì)”廉邑,出現(xiàn)一大堆“未來可能使用的功能”;過于封閉則會(huì)變得僵化難以適應(yīng)新的要求倒谷。

“不變”這里所說的“不變”也只是相對(duì)而然蛛蒙,在系統(tǒng)/項(xiàng)目中相對(duì)不變的就應(yīng)該是“核心”或者是“基礎(chǔ)框架”,舉最簡(jiǎn)單的例子就是 .net framework 就是其中一者渤愁,雖然它會(huì)不斷發(fā)展牵祟,增強(qiáng)功能。但其基礎(chǔ)核心設(shè)計(jì)理念與架構(gòu)也從來沒有發(fā)生過質(zhì)的改變抖格。更具體的一點(diǎn)來說“不變”的是規(guī)則诺苹、用法和基礎(chǔ)設(shè)計(jì)理念。 我認(rèn)為學(xué)習(xí)控制變化的最佳方法是多看出色的類庫或系統(tǒng)雹拄,多問為什么這樣做收奔,理解原設(shè)計(jì)師的想法。經(jīng)過一定時(shí)間的積累滓玖,隨著對(duì)“變化”觀察的增多坪哄,自然而然會(huì)在自已的設(shè)計(jì)中按設(shè)計(jì)要求將”變“與”不變“應(yīng)用得當(dāng)。

四呢撞、方法論

針對(duì)架構(gòu)設(shè)計(jì)的方法論眾多损姜,應(yīng)該如何選擇?我也讀過很多的相關(guān)書籍殊霞,我只選最實(shí)用的摧阅,這里我推薦幾本書。

《設(shè)計(jì)模式》- 要讀懂绷蹲、活用棒卷,我讀了10幾年每次都可以從中學(xué)到不一樣的想法,將其應(yīng)用于架構(gòu)內(nèi)可以極大地簡(jiǎn)化很多復(fù)雜的問題。

《Java 編程思想》 - 談面向?qū)ο蠓矫孀詈玫钠渲幸槐緯8郑岣呙嫦驅(qū)ο蟮脑O(shè)計(jì)能力會(huì)有很大幫助 《Refactoring》- 重構(gòu)不單單是一種做法和程序員才關(guān)心的事比规。重構(gòu)重于意識(shí)與思維完全可以用于架構(gòu)設(shè)計(jì) 。

《eXtreme Programming》- 雖然討論的是開發(fā)方法拦英,但它最能詮釋什么是”變化“蜒什。

方法論的實(shí)踐與應(yīng)用也需要時(shí)間磨合并融會(huì)貫通,它們給予我們更多的是理念與意識(shí)疤估,一定要避免走進(jìn)為實(shí)踐方法論而設(shè)計(jì)的誤區(qū)灾常。

五霎冯、學(xué)習(xí)能力

對(duì)于普通程序員來說,成為高級(jí)架構(gòu)師的門檻主要有以下幾點(diǎn):

1钞瀑、錯(cuò)誤的學(xué)習(xí)方法沈撞。在技術(shù)日新月異的今天,誰在單位時(shí)間學(xué)到的知識(shí)更多雕什,誰的學(xué)習(xí)方法更高效缠俺,誰就獲得更強(qiáng)的競(jìng)爭(zhēng)優(yōu)勢(shì)。而很多程序員在工作中贷岸,還用著學(xué)校時(shí)的學(xué)習(xí)方法壹士,非常低效,公司不是學(xué)校偿警,啃書本的學(xué)習(xí)方法已不再有效墓卦。

2、完整的知識(shí)體系户敬。沒有形成系統(tǒng)化的知識(shí)架構(gòu),最重要的是不知道哪些技術(shù)需要重點(diǎn)掌握睁本,學(xué)習(xí)時(shí)頻繁踩坑尿庐,最終浪費(fèi)大量時(shí)間。

3呢堰、對(duì)編程的認(rèn)知抄瑟。頂級(jí)程序員和平庸程序員,本質(zhì)區(qū)別是遇到問題時(shí)的思考方式枉疼,這就是所謂的頂級(jí)程序員思維皮假,一種高效解決問題的思維方式。這種思維方式骂维,不是讀幾本Java書能學(xué)到的惹资,而需要經(jīng)過大量項(xiàng)目實(shí)戰(zhàn),才能總結(jié)提煉出來航闺。

4褪测、差的學(xué)習(xí)環(huán)境。很多程序員的學(xué)習(xí)環(huán)境很差潦刃,在公司經(jīng)常加班侮措,工作幾年后,發(fā)現(xiàn)自己除了更熟悉公司業(yè)務(wù)外乖杠,能力沒有得到半點(diǎn)提升分扎,或周末基本不學(xué)習(xí),而是出去玩胧洒。這么差的自制力和學(xué)習(xí)環(huán)境畏吓,很難讓能力提到大的提升墨状。

構(gòu)建完整的知識(shí)體系感興趣的朋友可以來參考下我從業(yè)十余年總結(jié)2018年互聯(lián)網(wǎng)公司中最主流的學(xué)習(xí)路線: 這是Java程序員的一個(gè)架構(gòu)夢(mèng),我專門設(shè)立了一個(gè)Java架構(gòu)學(xué)習(xí)的群:619881427里面找朋友上傳的都是下列圖片中的技能知識(shí)點(diǎn)庵佣,如果感興趣你可以進(jìn)來瞅一瞅歉胶,可以免費(fèi)領(lǐng)走你的架構(gòu)師學(xué)習(xí)資料。

image
image
image
image
image
image

既然有夢(mèng)想巴粪,干嘛你不來通今!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肛根,隨后出現(xiàn)的幾起案子辫塌,更是在濱河造成了極大的恐慌,老刑警劉巖派哲,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臼氨,死亡現(xiàn)場(chǎng)離奇詭異碧浊,居然都是意外死亡拾积,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門荠医,熙熙樓的掌柜王于貴愁眉苦臉地迎上來褂乍,“玉大人持隧,你說我怎么就攤上這事√悠” “怎么了屡拨?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)褥实。 經(jīng)常有香客問我呀狼,道長(zhǎng),這世上最難降的妖魔是什么损离? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任哥艇,我火速辦了婚禮,結(jié)果婚禮上草冈,老公的妹妹穿的比我還像新娘她奥。我一直安慰自己,他們只是感情好怎棱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布哩俭。 她就那樣靜靜地躺著,像睡著了一般拳恋。 火紅的嫁衣襯著肌膚如雪凡资。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音隙赁,去河邊找鬼垦藏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伞访,可吹牛的內(nèi)容都是我干的掂骏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼厚掷,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼弟灼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冒黑,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤田绑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抡爹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掩驱,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年冬竟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欧穴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泵殴,死狀恐怖苔可,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情袋狞,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布映屋,位于F島的核電站苟鸯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棚点。R本人自食惡果不足惜早处,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘫析。 院中可真熱鬧砌梆,春花似錦、人聲如沸贬循。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杖虾。三九已至烂瘫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奇适,已是汗流浹背坟比。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工芦鳍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葛账。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓柠衅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親籍琳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子菲宴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,286評(píng)論 25 707
  • 苦心經(jīng)營(yíng)數(shù)載滿腹凈是辛酸癡癡情 情歸何處苦苦淚 淚流何方若是雙雙埋首痛何不黎明處另覓朝華
    sakya閱讀 173評(píng)論 0 1
  • 在微博上看到好多人在用簡(jiǎn)書,今天在伯樂在線上瀏覽文章的時(shí)候又有人提到了簡(jiǎn)書巩割,遂使試用一下裙顽,看與我的onenote是...
    Zeeeeeeeeeeeeee閱讀 155評(píng)論 0 0
  • ——靜看拂曉 不經(jīng)意間愈犹,已淺淺地走過了九月,秋意漸濃闻丑,天已微涼漩怎。 落葉滿地,訴說著深秋的寂寥嗦嗡,晨間的清露渲染著深秋...
    晴書1998閱讀 251評(píng)論 0 0