架構(gòu)師是所有程序員為之奮斗的目標缝左,但是很多小伙伴對架構(gòu)師的理解只是定義在字面上亿遂,并不明白架構(gòu)師的真正意義,下面通過一個故事來說明:
Simon是一家外企軟件公司的總經(jīng)理渺杉,最近給一個問題愁壞了蛇数。項目一個接一個的下來,人手越來越緊張是越。Simon是個極限編程的粉絲耳舅,但也不得不批準了一份又一份的加班申請。HR經(jīng)理把這個問題歸結(jié)到房價上倚评,他的妙論是“怕失業(yè)了還不上房款浦徊,不敢跳槽”。
K項目組長Allen終于忍不住了天梧,帶了一個只有一年工作經(jīng)驗的小伙子要Simon面試盔性,“很聰明!經(jīng)驗少了點呢岗∶嵯悖”
Simon皺了皺眉毛,說:“你不知道這個職位最低要求是三年工作經(jīng)驗嗎后豫?”
Allen說:“這已經(jīng)是三個月里通過技術考試中最好的一個了悉尾,老大,試試吧挫酿」姑校”Allen是Simon多年的哥們,比較隨便饭豹。抵到面子上來鸵赖,Simon只好讓Allen把小伙子帶進來务漩。
Simon的面試通常是三步曲:
問題一:你能說說畢業(yè)后的主要工作經(jīng)歷嗎?
問題二:再說說你在公司的地位它褪?
問題三:你的發(fā)展目標是什么饵骨?等回答后,比如說構(gòu)架師茫打,他就跟著問:想象一下你當構(gòu)架師的一天居触,說給我聽聽?
小伙子回答第一問題很快很清楚老赤,一年工作當然沒什么東西轮洋。Simon覺得小伙子挺聰明。所以在小伙子回答了第二個問題后抬旺,問了一個發(fā)散性的問題:“你剛才說你在公司里處于中等水平弊予,那比你差的人為什么會比你差呢?”
這個問題是個陷阱开财。小伙子冒冒失失回答說:“我覺得他們每天工作是為工作而工作汉柒,工作沒有責任感≡瘅ⅲ”
Simon點點頭說:“是嗎碾褂?那真是糟糕的員工。那你剛好比糟糕的員工好一點了历葛?”
小伙子的臉一下子紅了正塌,“我不是這個意思……”
“好了,那你說說比你好的人為什么比你強恤溶?”
“我覺得他非常努力乓诽,工作很多年了還在學習各種構(gòu)架,水平很高宏娄∥试#”于是Simon就問那最后一個問題逮壁。果然孵坚,小伙子回答的是要成為構(gòu)架師。大概70%的人想成為構(gòu)架師窥淆。但是構(gòu)架師是什么呢卖宠?
Simon問道:“那你為什么要成為構(gòu)架師呢?”
小伙子一愣忧饭,大概還沒有人這么置疑過扛伍。“年紀大了词裤,不能老寫程序吧刺洒”畋觯”這個回答,讓Simon想起關于他對什么是老的定義:當你希望做年輕人做的事情時逆航,你就還年輕鼎文;如果你希望做老年人做的事情,你就老了因俐。這和你出生了多長時間是沒有關系的拇惋。
Simon接著問:“好吧,那你說說你成為構(gòu)架師以后抹剩,每天都會做什么撑帖?”
小伙子說:“我還沒想過,不過澳眷,我想應該主要是需求分析胡嘿,設計構(gòu)架吧……”這大概是現(xiàn)在年輕人的通病,年輕人很容易追逐一些自己也不清楚的目標钳踊。
Simon問:“那設計構(gòu)架具體都做些什么呢灶平?”
小伙子這次的回答是:“比如,選擇程序框架箍土,決定用Spring或Struts等等逢享。”
“哦吴藻,那我問你瞒爬,你怎么說服別人是用Spring還是Struts呢?”
“如果我有經(jīng)驗沟堡,我會知道哪個更好……”
“是嗎侧但,但關于Spring或Struts的知識任誰都可以很容易得到。如果別人不同意你的建議航罗,你怎么說服他禀横?如果同意你的建議,那你不過是作出了和別人一樣的認識粥血,別人又憑什么認可你呢柏锄?”
小伙子沒想過構(gòu)架師日子里還有一個說服人的工作,說:“我是構(gòu)架師复亏,我應該有權(quán)力做決定吧趾娃?”
Simon想起權(quán)力的三種層次,第一層缔御,任命抬闷;第二層,專業(yè)耕突;第三層笤成,品德评架。
Simon問:“如果在一個成熟的軟件企業(yè)里沒有你所想象的構(gòu)架師呢?或者說炕泳,構(gòu)架師這種職業(yè)已經(jīng)死亡或消失了呢古程?你會怎么定位你的職業(yè)伴鳖?”
Simon畫了一個系統(tǒng)構(gòu)架台舱,然后又給小伙子看了一段代碼×右。“那一個更難懂荤懂?”Simon問茁裙。
小伙子指著代碼說:“代碼難懂〗诜拢”
Simon的解釋是:“這就是為什么實際上所謂的構(gòu)架師不存在的原因晤锥。一個更簡單的東西怎么會更有價值呢?每個人都能夠畫出這種構(gòu)架圖廊宪,但不是每個人都能寫出好的代碼矾瘾。”
送走了小伙子箭启,Simon有點難受壕翩。他有點喜歡這個小伙子,但是傅寡,這又是一個被愚蠢的教育和誤人子弟的技術雜志污染的家伙放妈。Simon在自己的筆記本中加了一句話:中國程序員最愚蠢的認識之三:我想當構(gòu)架師。前面兩個赫然是:
35歲后寫不動程序了荐操;
我只要做Java(C++)芜抒;
那么,你對“架構(gòu)師”這個職業(yè)又是如何理解的托启?接下來我們通過幾個問題來看看架構(gòu)師是如何理解“架構(gòu)師”這個職位的
1宅倒、架構(gòu)師應該做什么工作?
1)負責/參與技術架構(gòu)設計屯耸、重構(gòu)拐迁、優(yōu)化,根據(jù)業(yè)務規(guī)劃及技術規(guī)劃制定應用架構(gòu)方案肩民;
2)負責/參與系統(tǒng)的架構(gòu)設計和系統(tǒng)設計唠亚、詳細設計链方;
3)參與技術難題攻關持痰,進行技術驗證;
4)參與核心功能的架構(gòu)與代碼編寫祟蚀,開發(fā)與維護系統(tǒng)公用核心模塊工窍;
5)分析系統(tǒng)瓶頸割卖,解決各種疑難雜癥,對系統(tǒng)進行性能調(diào)優(yōu)患雏;
6)承擔核心功能代碼編寫鹏溯,重點項目架構(gòu)設計開發(fā);
7)深入理解業(yè)務需求淹仑,分析和發(fā)現(xiàn)系統(tǒng)的優(yōu)化點丙挽,負責推動產(chǎn)品性能和架構(gòu)優(yōu)化;
8)新人指導匀借、培訓颜阐,主導技術難題攻關,提升團隊整體技術水平吓肋;
9)負責公司的技術方向凳怨、技術規(guī)劃,為公司業(yè)務發(fā)展提供全面的技術保障是鬼;
10)研究決策公司技術發(fā)展路線肤舞,規(guī)劃公司產(chǎn)品的技術架構(gòu);
12)負責協(xié)調(diào)項目開發(fā)或?qū)嵤┑母鱾€環(huán)節(jié)均蜜,把握項目的整體進度李剖;
13)指導建立完善、規(guī)范的軟件開發(fā)流程和高品質(zhì)的管理體系并參照執(zhí)行囤耳。
2杖爽、有了架構(gòu)師公司會收益什么?
架構(gòu)師在整個軟件開發(fā)過程中都起著重要的作用紫皇,并隨著開發(fā)進程的推進而其職責或關注點不斷地變化慰安,在需求階段,架構(gòu)師主要負責理解和管理非功能性系統(tǒng)需求聪铺,比如軟件的可維護性化焕、性能、復用性铃剔、可靠性撒桨、有效性和可測試性等等,此外键兜,架構(gòu)師還要經(jīng)常審查客戶及市場人員所提出的需求凤类,確認開發(fā)團隊所提出的設計;在需求越來越明確后,架構(gòu)師的關注點開始轉(zhuǎn)移到組織開發(fā)團隊成員和開發(fā)過程定義上;在軟件設計階段普气,架構(gòu)師負責對整個軟件體系結(jié)構(gòu)谜疤、關鍵構(gòu)件、接口和開發(fā)政策的設計;在編碼階段,架構(gòu)師則成為詳細設計者和代碼編寫者的顧問夷磕,并且經(jīng)常性地要舉行一些技術研討會履肃、技術培訓班等;隨著軟件開始測試、集成和交付坐桩,集成和測試支持將成為軟件架構(gòu)師的工作重點;在軟件維護開始時尺棋,架構(gòu)師就開始為下一版本的產(chǎn)品是否應該增加新的功能模塊進行決策。
3.绵跷、架構(gòu)師需要什么能力膘螟?
1)擁有10年以上從業(yè)經(jīng)驗,8年以上技術開發(fā)及團隊管理經(jīng)驗碾局,有大中型項目開發(fā)經(jīng)驗萍鲸;
2)具備 4 年以上 C/S 或 B/S 體系結(jié)構(gòu)軟件產(chǎn)品開發(fā)及架構(gòu)和設計經(jīng)驗;
3)深厚的技術背景擦俐,熟悉多線程開發(fā)脊阴、服務器集群、負載均衡蚯瞧;
4)具備豐富的大中型開發(fā)項目的總體規(guī)劃嘿期、方案設計及技術隊伍管理經(jīng)驗;
5)對相關的技術標準有深刻的認識埋合,對軟件工程標準規(guī)范有良好的把握备徐;
6)具有面向?qū)ο蠓治觥⒃O計甚颂、開發(fā)能力(OOA蜜猾、OOD、OOP)振诬,精通 UML 和 ROSE蹭睡,熟練使用 Rational Rose、PowerDesigner 等工具進行設計開發(fā)赶么;
7)精通大型數(shù)據(jù)庫如 Oracle肩豁、Sql Server 等的開發(fā);
8)對計算機系統(tǒng)辫呻、網(wǎng)絡和安全清钥、應用系統(tǒng)架構(gòu)等有全面的認識,熟悉項目管理理論放闺,并有實踐基礎祟昭;
9)在應用系統(tǒng)開發(fā)平臺和項目管理上有深厚的基礎,有大中型應用系統(tǒng)開發(fā)和實施的成功案例怖侦;
10)具備良好的客戶需求分析能力篡悟、業(yè)務和技術方案策劃和設計能力谜叹;思路清晰,具備很強的文檔撰寫能力和良好的語言表達能力恰力;
11)精通多種軟件構(gòu)架叉谜、設計模式旗吁、很強的解決項目開發(fā)中技術難題的能力踩萎。
在此我向大家推薦一個架構(gòu)學習交流群。如果你想學習這套系統(tǒng)化的課程體系很钓,你可以加群香府。交流學習群號: 744642380, 里面會分享一些資深架構(gòu)師錄制的視頻錄像:有Spring码倦,MyBatis企孩,Netty源碼分析,高并發(fā)袁稽、高性能勿璃、分布式、微服務架構(gòu)的原理推汽,JVM性能優(yōu)化补疑、分布式架構(gòu)等這些成為架構(gòu)師必備的知識體系。還能領取免費的學習資源歹撒,目前受益良
課程體系
源碼分析:
性能優(yōu)化:
微服務架構(gòu):
團隊協(xié)作:
分布式專題:
電商專題:
并發(fā)編程專題: