专访李智慧:架构是最高层次的规划和难以改变的决定
http://www.csdn.net/article/2015-09-21/2825759
李智慧(微博、LinkedIn),目前任職宅米網(wǎng)CTO,曾供職阿里巴巴與英特爾亞太研發(fā)中心,從事大型網(wǎng)站、分布式系統(tǒng)、大數(shù)據(jù)平臺(tái)方面的研發(fā)工作。著有《大型網(wǎng)站技術(shù)架構(gòu) 核心原理與案例分析》一書。
CSDN:你是如何走上技術(shù)這條路的?談?wù)劗厴I(yè)這些年來在工作中的收獲和體驗(yàn)。
李智慧:我大學(xué)學(xué)工業(yè)自動(dòng)化,在校的時(shí)候一個(gè)偶然的原因在圖書館看到一本C語言編程的書,從此迷上編程,但是畢業(yè)后從事的卻是儀表工程師的工作。工作四年以后,難以割舍對(duì)計(jì)算機(jī)的熱愛,報(bào)考了北京工業(yè)大學(xué)計(jì)算機(jī)專業(yè)的碩士研究生,然而,錄取的時(shí)候卻被調(diào)劑到熱能工程專業(yè),于是又稀里糊涂讀了三年汽車內(nèi)燃機(jī)碩士。幸運(yùn)的是,碩士畢業(yè)后我找到了一份軟件工程師的工作,開始了自己的職業(yè)編程生涯,而這時(shí)我已年近30,距離大學(xué)畢業(yè)也已經(jīng)7年了。
所以我的工作體驗(yàn)就是:如果你真的喜歡一樣?xùn)|西,你不會(huì)在乎為她經(jīng)歷多少曲折,蹉跎多少歲月。你不會(huì)盲從所謂過來人的經(jīng)驗(yàn)之談「30歲以后就不能編程了」,你會(huì)心甘情愿把青春獻(xiàn)給她,無怨無悔,無畏于任何結(jié)局。
CSDN:你目前最關(guān)注哪些技術(shù)領(lǐng)域?
李智慧:我目前比較關(guān)注的是云計(jì)算與大數(shù)據(jù)方面的技術(shù)。
一方面,云計(jì)算那種為整個(gè)星球提供計(jì)算能力的愿景讓我癡迷;
另一方面,我比較喜歡研究云計(jì)算技術(shù)中用到的各種分布式技術(shù),在阿里巴巴工作期間也申請(qǐng)過幾項(xiàng)分布式計(jì)算的發(fā)明專利。
我在Intel工作期間開發(fā)過一些大數(shù)據(jù)相關(guān)的產(chǎn)品,也為開源大數(shù)據(jù)平臺(tái)ApacheSpark貢獻(xiàn)過代碼。大數(shù)據(jù)技術(shù)雖然現(xiàn)在火了又火,但是我認(rèn)為大數(shù)據(jù)能提供的價(jià)值還沒有爆發(fā)出來,未來計(jì)算機(jī)與互聯(lián)網(wǎng)可以為人類提供更多個(gè)性化服務(wù)和主動(dòng)服務(wù),實(shí)現(xiàn)某種意義上的人工智能,現(xiàn)在做的還遠(yuǎn)遠(yuǎn)不夠。
CSDN:你曾在13年寫了《大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析》一書,能分享下寫書的原因?以及簡(jiǎn)單介紹下這本書的特色等。
李智慧:我開始寫作《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》這本書是在2012年,那一年中國(guó)互聯(lián)網(wǎng)出了幾件比較有影響的事,京東的促銷宕機(jī)事件,12306的春運(yùn)宕機(jī)事件,以及多個(gè)重要網(wǎng)站的泄密事件等等,因此我覺得有必要普及下互聯(lián)網(wǎng)技術(shù)架構(gòu)的核心原理與基本方法,讓新入行的互聯(lián)網(wǎng)工程師們少走些彎路。
因?yàn)槎ㄎ辉诨ヂ?lián)網(wǎng)技術(shù)知識(shí)普及,所以整本書的行文都比較淺顯易懂,只需要一些基礎(chǔ)的專業(yè)知識(shí)就可以順利閱讀。這本書上市以后也得到廣大讀者的認(rèn)可,很多讀者私信我說受益良多,也有些學(xué)校選用這本書做教科書,還獲得過CSDN2013最受讀者歡迎原創(chuàng)圖書獎(jiǎng)、電子工業(yè)出版社2014最暢銷圖書獎(jiǎng)。我自己很高興這本書能為中國(guó)互聯(lián)網(wǎng)技術(shù)進(jìn)步貢獻(xiàn)一點(diǎn)力量。
CSDN:你個(gè)人對(duì)架構(gòu)/軟件架構(gòu)的理解是?
李智慧:關(guān)于架構(gòu)的定義有很多,我自己比較喜歡這個(gè):「架構(gòu)是最高層次的規(guī)劃和難以改變的決定」。
軟件架構(gòu)設(shè)計(jì)應(yīng)該在一個(gè)很高層面上進(jìn)行,在做架構(gòu)設(shè)計(jì)的時(shí)候:
考慮產(chǎn)品需求和功能特性;
考慮性能、可用性、伸縮性、擴(kuò)展性、安全性、運(yùn)維監(jiān)控、集成發(fā)布等非功能特性;
開發(fā)團(tuán)隊(duì)經(jīng)驗(yàn)技能、組織分工、進(jìn)度安排等項(xiàng)目管理方法;
產(chǎn)品運(yùn)營(yíng)目標(biāo)、業(yè)務(wù)組織架構(gòu),使技術(shù)架構(gòu)和產(chǎn)品特點(diǎn)與運(yùn)營(yíng)方案更好匹配;
甚至要結(jié)合技術(shù)發(fā)展趨勢(shì)、公司戰(zhàn)略目標(biāo)、個(gè)人和團(tuán)隊(duì)發(fā)展方向,為產(chǎn)品、個(gè)人、團(tuán)隊(duì)、公司未來可持續(xù)發(fā)展去設(shè)計(jì)一個(gè)堅(jiān)實(shí)而又有彈性的軟件架構(gòu)。
CSDN:如何最大限度避免一個(gè)架構(gòu)設(shè)計(jì)的失敗?
李智慧:我個(gè)人感覺無所謂失敗的架構(gòu),正如沒有完美的架構(gòu)。只要產(chǎn)品還能繼續(xù)開發(fā)、維護(hù)、使用,再糟糕的架構(gòu)也不能稱為失敗的架構(gòu);而一個(gè)產(chǎn)品如果開發(fā)中難以為繼,交付后難以使用,也絕不會(huì)僅僅是因?yàn)榧軜?gòu)設(shè)計(jì)的失敗。
而要避免糟糕的架構(gòu)設(shè)計(jì),以及避免糟糕的架構(gòu)設(shè)計(jì)給項(xiàng)目帶來更多的傷害,我認(rèn)為最好的辦法就是讓項(xiàng)目組全體成員共同擁有架構(gòu);而不是架構(gòu)師把架構(gòu)當(dāng)做個(gè)人的私有財(cái)產(chǎn),拒絕他人染指。架構(gòu)師設(shè)計(jì)架構(gòu),然后項(xiàng)目組共同討論修正,通過討論讓每個(gè)工程師都參與到架構(gòu)設(shè)計(jì)的過程中,讓每個(gè)工程師都理解架構(gòu)并遵從架構(gòu)設(shè)計(jì)去開發(fā)。這樣即使架構(gòu)設(shè)計(jì)存在問題,也會(huì)在開發(fā)過程中暴露出來,發(fā)現(xiàn)問題的工程師會(huì)積極和架構(gòu)師討論進(jìn)一步修正完善架構(gòu)。
CSDN:大型網(wǎng)站有哪些典型的故障以及通常有哪些解決之道?
李智慧:網(wǎng)站的故障千奇百怪,各種不可思議,但是大多數(shù)故障都是處理高并發(fā)請(qǐng)求而直接或間接導(dǎo)致的。很多問題在用戶訪問量小的時(shí)候,根本不會(huì)成為問題,比如線程鎖的問題,磁盤爭(zhēng)用的問題,數(shù)據(jù)庫負(fù)載高的問題等,但是用戶訪問量一高,就會(huì)爆發(fā)出各種故障。高并發(fā)場(chǎng)景下的故障很難通過一般的功能測(cè)試發(fā)現(xiàn),性能測(cè)試可以發(fā)現(xiàn)一部分問題,但是一定有一些問題只有在實(shí)際的高并發(fā)場(chǎng)景中才會(huì)出現(xiàn)。
淘寶的技術(shù)堪稱國(guó)內(nèi)翹楚,但是每年雙十一為全球電商網(wǎng)站交易額創(chuàng)出新高的同時(shí),也是淘寶技術(shù)部壓力最大的時(shí)候,所有工程師那一天無不戰(zhàn)戰(zhàn)兢兢、提心吊膽,不到狂歡結(jié)束,誰也不知道問題會(huì)不會(huì)出在自己寫的某一行代碼上。我在《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》中專門有一章講「大型網(wǎng)站典型故障案例分析」,有興趣的同學(xué)可以參考。
CSDN:如何學(xué)習(xí)大型網(wǎng)站的架構(gòu)技術(shù)?
李智慧:學(xué)習(xí)大型網(wǎng)站架構(gòu)技術(shù)一個(gè)比較好的辦法是去大型網(wǎng)站工作。但是,大型網(wǎng)站進(jìn)入門檻很高,而且內(nèi)部分工明確,只有少數(shù)人能完整了解網(wǎng)站整體架構(gòu),你很難成為那少數(shù)的一些人。
學(xué)習(xí)大型網(wǎng)站架構(gòu)技術(shù)一個(gè)更好的辦法是去一家創(chuàng)業(yè)公司,伴隨著這家創(chuàng)業(yè)公司逐步成長(zhǎng),成為大型網(wǎng)站,你參與其中,自然就學(xué)習(xí)了大型網(wǎng)站的架構(gòu)技術(shù)。可是,創(chuàng)業(yè)公司千千萬萬,哪一家才能成長(zhǎng)為大型網(wǎng)站?
所以,學(xué)習(xí)大型網(wǎng)站架構(gòu)技術(shù)最好的辦法就是閱讀《大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析》,(笑),然后在自己的工作中實(shí)踐和提高。
CSDN:一名優(yōu)秀的網(wǎng)站架構(gòu)師必須具備哪些能力?
李智慧:良好的編程能力,雖然架構(gòu)設(shè)計(jì)不需要編程,雖然很多架構(gòu)師日常工作也不需要編程,但是如果你的編程能力不過硬,你幾乎無法設(shè)計(jì)一個(gè)良好的架構(gòu),設(shè)計(jì)出來也難以在開發(fā)過程中落實(shí)。最主要的,和一群挑剔的工程師合作,如果架構(gòu)師缺乏良好的編程能力,幾乎沒有容身之地,遑論開展工作。
良好的溝通能力,架構(gòu)師不是把架構(gòu)設(shè)計(jì)出來就完事了,必須要讓項(xiàng)目組成員認(rèn)可架構(gòu)設(shè)計(jì)并在開發(fā)過程中落實(shí)架構(gòu)設(shè)計(jì),必須要和項(xiàng)目組成員頻繁溝通,在各種質(zhì)疑、建議、疑惑中推進(jìn)工作。同時(shí),架構(gòu)設(shè)計(jì)需要綜合考慮產(chǎn)品、業(yè)務(wù)以及公司各方面的情況,需要和相關(guān)團(tuán)隊(duì)密切合作。總之需要處理大量的溝通協(xié)調(diào)工作。
此外,有一些不是必須具備,但是具備了會(huì)如虎添翼的能力
戰(zhàn)略眼光,跳出架構(gòu)和產(chǎn)品,在一個(gè)更高的層面審視架構(gòu)和產(chǎn)品,會(huì)獲得一種更開闊的胸懷和格局去看待自己的工作。
英文能力,緊跟世界潮流,獲得技術(shù)領(lǐng)域最新發(fā)展動(dòng)態(tài)的第一手資料,對(duì)自己的工作有更多自信和思考。
項(xiàng)目管理,雖然有項(xiàng)目經(jīng)理去管理項(xiàng)目,但是架構(gòu)師懂項(xiàng)目管理,可以更好推動(dòng)項(xiàng)目健康發(fā)展。
CSDN:在你的書中曾提到,「先成就他人,再成就自己」、「剛開始加入的時(shí)候不要急于證明自己,要先融入」、「最好的獎(jiǎng)勵(lì)就是目標(biāo)的達(dá)成,最大的懲罰就是目標(biāo)沒實(shí)現(xiàn)」、「技術(shù)是要解決問題,但是我們要關(guān)心的是解決問題的人」、「學(xué)會(huì)妥協(xié)」、「越激烈的爭(zhēng)辯代表越關(guān)心這個(gè)問題」,對(duì)于入門或初級(jí)的架構(gòu)師你有什么心得和經(jīng)驗(yàn)可分享?
李智慧:要勇于承擔(dān)責(zé)任,不要害怕失敗。不要怕自己的能力不足以勝任工作,既然公司安排了你做架構(gòu)師,就是經(jīng)過反復(fù)權(quán)衡慎重考慮的,你就是目前最適合這個(gè)職位的人。不要害怕自己犯錯(cuò)給公司帶來損失,為員工犯錯(cuò)承擔(dān)必要的損失是公司應(yīng)付的成本之一。相對(duì)這些損失,鍛煉骨干、磨合團(tuán)隊(duì)、打造敢拼敢闖的企業(yè)文化對(duì)公司的長(zhǎng)遠(yuǎn)發(fā)展更重要。
要虛心學(xué)習(xí),不要不懂裝懂。作為新晉架構(gòu)師,一定有許多不會(huì)的技能技巧,不要因?yàn)楹ε卤煌沦|(zhì)疑自己的能力而不懂裝懂。不懂裝懂即使能糊弄過現(xiàn)在,你也不會(huì)有更加美好的將來。
CSDN:請(qǐng)談一下當(dāng)前架構(gòu)師所面臨的挑戰(zhàn)。
李智慧:架構(gòu)師是一個(gè)非常有挑戰(zhàn)的工作:
一方面,架構(gòu)師需要有足夠的閱歷和經(jīng)驗(yàn),在某些領(lǐng)域有多年的積淀和訓(xùn)練,才能對(duì)業(yè)務(wù)問題有深入的理解、對(duì)技術(shù)方案有充分的把握、對(duì)開發(fā)過程有嫻熟的掌控;
另一方面,架構(gòu)師又必須對(duì)新技術(shù)保持足夠的敏銳和快速學(xué)習(xí)的能力,這樣在快速發(fā)展的技術(shù)變革面前才能保持持續(xù)創(chuàng)新能力。
這兩方面的要求對(duì)多數(shù)人而言是沖突的,很多人年輕的時(shí)候擅長(zhǎng)學(xué)習(xí)新知識(shí)而缺乏經(jīng)驗(yàn),年長(zhǎng)后擅長(zhǎng)總結(jié)經(jīng)驗(yàn)而對(duì)新知識(shí)反應(yīng)遲鈍。架構(gòu)師必須要克服這種沖突,在擁有經(jīng)驗(yàn)的同時(shí)不停更新自己的知識(shí)。Stayhungry,Stayfoolish。
CSDN:身為CTO您從技術(shù)人員轉(zhuǎn)到管理人員,有什么技巧?
李智慧:我做架構(gòu)師的時(shí)候,發(fā)現(xiàn)如果開始能設(shè)計(jì)一個(gè)較好匹配業(yè)務(wù)的架構(gòu),并能和項(xiàng)目組成員就系統(tǒng)架構(gòu)達(dá)成共識(shí),整個(gè)項(xiàng)目開發(fā)過程并不需要投入太多精力,只要關(guān)注項(xiàng)目不要偏離目標(biāo)即可。我相信大道應(yīng)該至簡(jiǎn),觸類可以旁通。我做CTO也沿用這一思路,和技術(shù)部同學(xué)們就組織架構(gòu)、技術(shù)體系、工作流程、業(yè)務(wù)重點(diǎn)達(dá)成一致并推行實(shí)踐,而不是企圖將個(gè)人意志加諸整個(gè)團(tuán)隊(duì)身上。
CSDN:您現(xiàn)在每天還編程嗎?
李智慧:我在做CTO之前,在離開Intel前的最后三個(gè)月大概寫了一萬行代碼。但是做CTO之后沒有為公司寫過一行代碼,我會(huì)review代碼,review架構(gòu)設(shè)計(jì),但是我不會(huì)寫代碼,我覺得每個(gè)人都應(yīng)該也有責(zé)任把自己的工作做好,CTO的工作職責(zé)不是寫代碼,CTO寫代碼是一種越俎代庖。
但是CTO應(yīng)該編程以保持技術(shù)敏感性,他可以寫一些小項(xiàng)目做一些技術(shù)驗(yàn)證,可以參與某個(gè)開源項(xiàng)目的開發(fā)。甚至也可以為公司寫一些代碼,但是最好不要將這些代碼提交到公司的代碼庫。
CSDN:您作為技術(shù)人員,可否分享下您的學(xué)習(xí)知識(shí)或技能的方法?
李智慧:軟件開發(fā)領(lǐng)域是一個(gè)變化特別快的領(lǐng)域,新的技術(shù)新的工具層出不窮。如果工程師不能快速學(xué)習(xí)新知識(shí)就會(huì)被淘汰,如果技術(shù)領(lǐng)導(dǎo)者不能快速學(xué)習(xí)新知識(shí)甚至?xí)蔀閳F(tuán)隊(duì)進(jìn)步的障礙。
學(xué)習(xí)知識(shí)技能首先需要時(shí)間,工程師應(yīng)該用工作時(shí)間的20%去學(xué)習(xí),如果工作時(shí)間抽不出空學(xué)習(xí),可以用加班時(shí)間學(xué)習(xí),如果加班時(shí)間也被安排滿滿的,至少能忙完這一陣(自己熟悉了情況后)可以有機(jī)會(huì)安排時(shí)間學(xué)習(xí)。如果這種機(jī)會(huì)和希望都沒有的,如果你對(duì)自己負(fù)責(zé)的話,我建議你還是辭職吧。
學(xué)習(xí)知識(shí)技能其次需要方法,工程師應(yīng)該建立一套自己的知識(shí)體系,然后不斷把新知識(shí)新技能納入這套體系中。這套體系成熟以后,讀一本自己領(lǐng)域內(nèi)的技術(shù)書,聽一次自己領(lǐng)域內(nèi)的技術(shù)講座,需要學(xué)習(xí)的新知識(shí)不會(huì)超過20%,這樣讀書聽講座就會(huì)很輕松,也很容易就能吸收這些新知識(shí),進(jìn)入良性循環(huán)。至于如何建立自己的知識(shí)體系,每個(gè)人都有不同方法,但是有一點(diǎn)是共同的,那就是學(xué)校里的基礎(chǔ)專業(yè)知識(shí)一定要掌握好。
總結(jié)
以上是生活随笔為你收集整理的专访李智慧:架构是最高层次的规划和难以改变的决定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k64 datasheet学习笔记45-
- 下一篇: u盘被占用,无法弹出解决办法