到底怎樣的程序員能稱為架構(gòu)師?

我曾問過很多自稱熱愛代碼的程序員的發(fā)展規(guī)劃赵讯,大多都回答說期望成為一名架構(gòu)師盈咳。而在招聘一方,有的團(tuán)隊會過濾掉多次提起架構(gòu)一詞而一點不提具體內(nèi)容的簡歷边翼∮阆欤可見,雖然在大多數(shù)程序員眼里组底,架構(gòu)師是神圣的丈积,但又不得不承認(rèn)事實是:“架構(gòu)”和“架構(gòu)師”是最常被濫用的筐骇。那些寫能 PPT 而不能寫代碼的人,只做和事佬而不考慮軟件快江滨、穩(wěn)铛纬、便捷的人,都稱不上做“架構(gòu)”更別提“架構(gòu)師”唬滑。

那么什么樣的人可以稱為“架構(gòu)師”告唆?
據(jù)稱架構(gòu)一詞源于建筑行業(yè),架構(gòu)師這個職位间雀,不管是前端還是后端悔详,職責(zé)是相同的。而用規(guī)劃一次房屋的裝修來描述架構(gòu)師這個職位的職責(zé)是非常合適的惹挟。

建立一套 Web API 就像在定裝修風(fēng)格茄螃。要選擇注重重 CRUD 的 RESTFul 式,還是請求自定義性更強的 GraphQL 式连锯,又或者是簡單的 JSON-RPC 式归苍,這就像裝修風(fēng)格是選要簡潔的日式、粗獷的美式還是奢華的歐式运怖。定方向和選型這件事無處不在拼弃,架構(gòu)師必須根據(jù)實際需求,做各種決策摇展,為后面各部分整體結(jié)合打好基礎(chǔ)吻氧。

燈光、墻面咏连、家具等各個部分都需要根據(jù)風(fēng)格精心設(shè)計盯孙、執(zhí)行和不斷修正,才可能達(dá)到原定目標(biāo)祟滴,架構(gòu)也一樣振惰。拿光線控制來說,施工人員可能會忽略你注重的一些細(xì)節(jié):暖色的書房氛圍垄懂;明亮且能切到影院模式的客廳骑晶;裝在合適位置才不會刺眼的背景燈。在每個環(huán)節(jié)的執(zhí)行上草慧,架構(gòu)師既要設(shè)計桶蛔,又要保證對每個角色充分理解,必要時不排除動手編寫重要環(huán)節(jié)的功能漫谷,而在經(jīng)驗或考慮不足的點上一旦出現(xiàn)問題就必須迅速調(diào)整羽圃。空有一個好的設(shè)計而沒有好的執(zhí)行抖剿,是非常讓人惋惜的朽寞。

值得一提的是,選用最好的衛(wèi)浴用品斩郎、最貴的過濾器并不是獲得最佳洗浴室體驗的關(guān)鍵點脑融。同樣,軟件架構(gòu)并不是說把每個部分做到最好再拼湊起來就能達(dá)到佳效果缩宜。最好洗浴室體驗的關(guān)鍵點在于折中和妥協(xié)肘迎。例如,在水壓不是特別高的情況下锻煌,把過濾器安裝在總閘雖然能讓用水達(dá)到最健康的狀態(tài)妓布,但會導(dǎo)致淋浴的水壓不夠,進(jìn)而使體驗大打折扣宋梧。把過濾器安裝在廚房出水口可能是最佳的平衡匣沼,既保證水壓又保證了用水的健康。分成多個部分是解耦捂龄,而協(xié)作的平衡是內(nèi)聚释涛。低耦合、高內(nèi)聚是架構(gòu)師處理軟件各部分協(xié)作的終極目標(biāo)倦沧。

裝修有很多細(xì)節(jié)唇撬,例如,若不喜歡晾衣服且生活在有“黃梅天”的上海展融,可選洗烘一體機窖认;房子面積不大,可選擴(kuò)展型家具告希;對通風(fēng)質(zhì)量要求比較高扑浸,可安裝新風(fēng)系統(tǒng)。軟件架構(gòu)也需要考慮很多細(xì)節(jié)暂雹,例如客戶需求首装、實際環(huán)境、技術(shù)可用黑科技之類杭跪、安全仙逻、重用、擴(kuò)展等涧尿。而這些細(xì)節(jié)方面的考慮系奉,并不是一個剛?cè)腴T的新人能做到的。

總的來說姑廉,稱得上架構(gòu)師的人缺亮,必須是具備豐富系統(tǒng)設(shè)計經(jīng)驗且能保證設(shè)計執(zhí)行的設(shè)計師和決策者;必須參與設(shè)計桥言、開發(fā)執(zhí)行和測試但又不局限于一個角色萌踱。也許架構(gòu)師并不一定全是這樣葵礼,這僅代表個人看法和期望。

Java架構(gòu)師需要會的技能

既然java架構(gòu)師并鸵,首先你要是一個高級java攻城尸鸳粉,熟練使用各種框架,并知道它們實現(xiàn)的原理园担。jvm虛擬機原理届谈、調(diào)優(yōu),懂得jvm能讓你寫出性能更好的代碼;池技術(shù)弯汰,什么對象池艰山,連接池,線程池...:;java反射技術(shù)咏闪,寫框架必備的技術(shù)曙搬,但是有嚴(yán)重的性能問題,替代方案java字節(jié)碼技術(shù);nio汤踏,沒什么好說的织鲸,值得注意的是"直接內(nèi)存"的特點,使用場景;java多線程同步異步溪胶;java各種集合對象的實現(xiàn)原理搂擦,了解這些可以讓你在解決問題時選擇合適的數(shù)據(jù)結(jié)構(gòu),高效的解決問題哗脖,比如hashmap的實現(xiàn)原理瀑踢,好多五年以上經(jīng)驗的人都弄不清楚,還有為什擴(kuò)容時有性能問題才避?不弄清楚這些原理橱夭,就寫不出高效的代碼,還會認(rèn)為自己做的很對桑逝;總之一句話越基礎(chǔ)的東西越重要棘劣,很多人認(rèn)為自己會用它們寫代碼了,其實僅僅是知道如何調(diào)用api而已,離會用還差的遠(yuǎn)楞遏。

熟練使用各種數(shù)據(jù)結(jié)構(gòu)和算法茬暇,數(shù)組、哈希寡喝、鏈表糙俗、排序樹...,一句話要么是時間換空間要么是空間換時間预鬓,這里展開可以說一大堆巧骚,需要有一定的應(yīng)用經(jīng)驗,用于解決各種性能或業(yè)務(wù)上的問題;有時間再補充劈彪。

熟練使用linux操作系統(tǒng)竣蹦,必備,沒什么好說的 粉臊。

熟悉tcp協(xié)議草添,創(chuàng)建連接三次握手和斷開連接四次握手的整個過程,不了解的話扼仲,無法對高并發(fā)網(wǎng)絡(luò)應(yīng)用做優(yōu)化; 熟悉http協(xié)議,尤其是http頭抄淑,我發(fā)現(xiàn)好多工作五年以上的都弄不清session和cookie的生命周期以及它們之間的關(guān)聯(lián)屠凶。

系統(tǒng)集群、負(fù)載均衡肆资、反向代理矗愧、動靜分離,網(wǎng)站靜態(tài)化 郑原。

分布式存儲系統(tǒng)nfs,fastdfs,tfs,Hadoop了解他們的優(yōu)缺點唉韭,適用場景 。

分布式緩存技術(shù)memcached,redis犯犁,提高系統(tǒng)性能必備属愤,一句話,把硬盤上的內(nèi)容放到內(nèi)存里來提速酸役,順便提個算法一致性hash 住诸。

工具nginx必備技能超級好用,高性能涣澡,基本不會掛掉的服務(wù)器贱呐,功能多多,解決各種問題入桂。

數(shù)據(jù)庫的設(shè)計能力奄薇,mysql必備,最基礎(chǔ)的數(shù)據(jù)庫工具抗愁,免費好用馁蒂,對它基本的參數(shù)優(yōu)化,慢查詢?nèi)罩痉治鼍杂蓿鲝膹?fù)制的配置远搪,至少要成為半個mysql dba。其他nosql數(shù)據(jù)庫如mongodb逢捺。

還有隊列中間件谁鳍。如消息推送,可以先把消息寫入數(shù)據(jù)庫,推送放隊列服務(wù)器上倘潜,由推送服務(wù)器去隊列獲取處理绷柒,這樣就可以將消息放數(shù)據(jù)庫和隊列里后直接給用戶反饋,推送過程則由推送服務(wù)器和隊列服務(wù)器完成涮因,好處異步處理废睦、緩解服務(wù)器壓力,解藕系統(tǒng)养泡。

想學(xué)習(xí)以上技術(shù)可以加入學(xué)習(xí)交流群:790147974 群里面有阿里嗜湃,百度,點評澜掩,架構(gòu)師直播指導(dǎo)购披,針對工作1--5的Java程序員提升自己,還有架構(gòu)學(xué)習(xí)資料肩榕,jvm刚陡,手寫springmvc,分布式株汉,高可用筐乳,高性能,數(shù)據(jù)結(jié)構(gòu)乔妈,springcloud蝙云,springboot 獲取。

以上純粹是常用的技術(shù)褒翰,還有很多自己慢慢去摸索吧贮懈;因為要知道的東西很多,所以要成為一名合格的架構(gòu)師优训,必須要有強大的自學(xué)能力朵你,沒有人會手把手的教給你所有的東西。

想成為架構(gòu)師不是懂了一大堆技術(shù)就可以了揣非,這些是解決問題的基礎(chǔ)抡医、是工具,不懂這些怎么去提解決方案呢早敬?這是成為架構(gòu)師的必要條件忌傻。

架構(gòu)師還要針對業(yè)務(wù)特點、系統(tǒng)的性能要求提出能解決問題成本最低的設(shè)計方案才合格搞监,人家一個幾百人用戶的系統(tǒng)水孩,訪問量不大,數(shù)據(jù)量小琐驴,你給人家上集群俘种、上分布式存儲秤标、上高端服務(wù)器,為了架構(gòu)而架構(gòu)宙刘,這是最扯淡的苍姜,架構(gòu)師的作用就是第一滿足業(yè)務(wù)需求,第二最低的硬件網(wǎng)絡(luò)成本和技術(shù)維護(hù)成本悬包。

架構(gòu)師還要根據(jù)業(yè)務(wù)發(fā)展階段衙猪,提前預(yù)見發(fā)展到下一個階段系統(tǒng)架構(gòu)的解決方案,并且設(shè)計當(dāng)前架構(gòu)時將架構(gòu)的升級擴(kuò)展考慮進(jìn)去布近,做到易于升級;否則等系統(tǒng)瓶頸來了垫释,出問題了再去出方案,或現(xiàn)有架構(gòu)無法擴(kuò)展直接扔掉重做吊输,或擴(kuò)展麻煩問題一大堆饶号,這會對企業(yè)造成損失

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市季蚂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琅束,老刑警劉巖扭屁,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異涩禀,居然都是意外死亡料滥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門艾船,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葵腹,“玉大人,你說我怎么就攤上這事屿岂〖纾” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵爷怀,是天一觀的道長阻肩。 經(jīng)常有香客問我,道長运授,這世上最難降的妖魔是什么烤惊? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮吁朦,結(jié)果婚禮上柒室,老公的妹妹穿的比我還像新娘。我一直安慰自己逗宜,他們只是感情好雄右,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布空骚。 她就那樣靜靜地躺著,像睡著了一般不脯。 火紅的嫁衣襯著肌膚如雪府怯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天防楷,我揣著相機與錄音牺丙,去河邊找鬼。 笑死复局,一個胖子當(dāng)著我的面吹牛冲簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亿昏,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼峦剔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了角钩?” 一聲冷哼從身側(cè)響起吝沫,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎递礼,沒想到半個月后惨险,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡脊髓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年辫愉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片将硝。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡恭朗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出依疼,到底是詐尸還是另有隱情痰腮,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布涛贯,位于F島的核電站诽嘉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弟翘。R本人自食惡果不足惜虫腋,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稀余。 院中可真熱鬧悦冀,春花似錦、人聲如沸睛琳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至历等,卻和暖如春讨惩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寒屯。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工荐捻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寡夹。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓处面,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菩掏。 傳聞我的和親對象是個殘疾皇子魂角,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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