亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

分享七牛云CEO「許式偉」對(duì)于這個(gè)話題的思考。

 

你好,我是許式偉。從今天起,我想和你一起來聊聊架構(gòu)的話題。

開始之前,我先來和你簡(jiǎn)單介紹下我自己。

我是2000年開始工作的,曾經(jīng)做過wps的首席架構(gòu)師,也在盛大從事過技術(shù)研究方面的工作,后來在2011年創(chuàng)立了七牛云,現(xiàn)在我是一名創(chuàng)業(yè)者、CEO。但不管角色怎么輪換,我覺得我的另一面始終是一名程序員、架構(gòu)師。

讓我們來想象一下,如果把信息世界看成一座大廈,把程序員看成這個(gè)世界的建筑師,那么,現(xiàn)在的你在負(fù)責(zé)什么樣的工作呢?

當(dāng)我們把程序員類比成建筑師時(shí),按照能力水平來分,我覺得大體可以分為三個(gè)層次:搬磚師、工程師、架構(gòu)師。

軟件搬磚師之名對(duì)應(yīng)到建筑行業(yè)的建筑工人,他們的編程能力和業(yè)務(wù)基本上停留在堆疊代碼,按照要求去實(shí)現(xiàn)功能需求的層面。

只要能讓程序跑起來,能正確地實(shí)現(xiàn)業(yè)務(wù)邏輯,就可以稱為“會(huì)編程”的人。有時(shí)候,我們也會(huì)看見程序員自稱為“碼農(nóng)”“搬磚的”,雖然二者的工種不同,但從基礎(chǔ)工作的相似度來說,確實(shí)有可類比的成分。

很多外行的人都會(huì)覺得程序員是一個(gè)很神秘的職業(yè),但實(shí)際上程序員的基礎(chǔ)門檻并不算高。我自己從2016年2月開始至今,一直在教幾位8~12歲的小朋友學(xué)習(xí)編程。這個(gè)實(shí)踐經(jīng)驗(yàn)告訴我:小學(xué)生完全有能力學(xué)編程。而且,并不是只有部分小學(xué)生可以,而是任何一位小學(xué)生都可以學(xué)會(huì)。

然而,只讓代碼跑起來是不夠的。這個(gè)世界是不斷變化的,作為程序員,我們更多的時(shí)間是用來維護(hù)代碼:增加新的需求,對(duì)已有的功能進(jìn)行調(diào)整,修改之前代碼遺留下來的問題,優(yōu)化性能等等。

這是因?yàn)橐粋€(gè)軟件誕生之后,后續(xù)就是需要花費(fèi)大量的代價(jià)去維護(hù)它,演進(jìn)它。一個(gè)人是完全維護(hù)不過來的,需要更多的人,很多的團(tuán)隊(duì)一起協(xié)作。如果面臨了員工離職、崗位調(diào)整等情況,還會(huì)導(dǎo)致軟件代碼在不同人之間流轉(zhuǎn)。

所以,一些有追求的程序員會(huì)關(guān)注代碼的質(zhì)量。代碼質(zhì)量的評(píng)判可以有這樣一些基本維度:可閱讀性(方便代碼流轉(zhuǎn))、可擴(kuò)展性/可維護(hù)性(方便修改功能,添加新功能)、可測(cè)試性(質(zhì)量管理)、可復(fù)用性(簡(jiǎn)化后續(xù)功能開發(fā)的難度)。

這一類致力于不斷提升軟件代碼的工程質(zhì)量的程序員,我們可以稱他們?yōu)檐浖こ處煛?/p>

工程師不會(huì)簡(jiǎn)單把寫代碼看作一門工作,把任務(wù)交代過去就完事。他們會(huì)有“潔癖”,代碼在他們眼里是一種藝術(shù),是自己生命的一部分。

他們會(huì)把寫出來的代碼改了又改,直到讓自己滿意為止。閱讀和維護(hù)軟件工程師寫的代碼會(huì)有一種賞心悅目的感覺。

但是,大部分商業(yè)軟件都是一項(xiàng)極其復(fù)雜的工程,它們遠(yuǎn)比很多傳統(tǒng)的建筑工程復(fù)雜得多,無論是涉及的人力、時(shí)間還是業(yè)務(wù)的變數(shù)都要多很多。

人力上,大部分大型的軟件系統(tǒng)都有幾千甚至幾萬人的規(guī)模,而這幾千幾萬人中,卻沒有兩個(gè)人的工作是重復(fù)的,他們都是在從事著前所未有的創(chuàng)造性工作。

時(shí)間上,只要軟件還在服務(wù)客戶中,程序員們的創(chuàng)造過程便不會(huì)停止,軟件系統(tǒng)仍然持續(xù)迭代更新,以便形成更好的市場(chǎng)競(jìng)爭(zhēng)力。

這些都與傳統(tǒng)建筑工程的模式大相徑庭。一幢建筑自它完成之后,所有的變化便主要集中在一些軟裝的細(xì)節(jié)上,很少會(huì)再發(fā)生劇烈的變動(dòng),更不會(huì)持續(xù)地發(fā)生變動(dòng)。但軟件卻不是這樣,它從誕生之初到其生命周期結(jié)束,自始至終都在迭代變化,從未停止。

所以,光靠把控軟件工程師的水平,依賴他們自覺保障的工程質(zhì)量,是遠(yuǎn)遠(yuǎn)不夠的。軟件工程是一項(xiàng)非常復(fù)雜的系統(tǒng)工程,它需要依賴一個(gè)能夠掌控整個(gè)工程全局的團(tuán)隊(duì),來規(guī)劃和引導(dǎo)整個(gè)系統(tǒng)的演變過程。這個(gè)團(tuán)隊(duì)就是架構(gòu)師團(tuán)隊(duì)。

軟件架構(gòu)師的職責(zé),并不單單是我們通常理解的,對(duì)軟件系統(tǒng)進(jìn)行邊界劃分和模塊規(guī)格的定義。

從根本目標(biāo)來說,軟件架構(gòu)師要對(duì)軟件工程的執(zhí)行結(jié)果負(fù)責(zé),這包括:按時(shí)按質(zhì)進(jìn)行軟件的迭代和發(fā)布、敏捷地響應(yīng)需求變更、防范軟件質(zhì)量風(fēng)險(xiǎn)(避免發(fā)生軟件質(zhì)量事故)、降低迭代維護(hù)成本。

那怎么才能成長(zhǎng)為優(yōu)秀的軟件架構(gòu)師?軟件架構(gòu)師和軟件工程師最根本的差別又在哪里?我認(rèn)為關(guān)鍵在于四個(gè)字:掌控全局。

掌控全局,就是對(duì)系統(tǒng)的全貌了然于胸。從傳統(tǒng)的建筑工程來說,建筑架構(gòu)師并不單單要會(huì)畫建筑圖紙,而是要對(duì)地基構(gòu)建、土質(zhì)、材料、建筑工藝等等所有有可能影響建筑質(zhì)量的因素都要了然于胸。

掌控全局,并不是無所不能,不是成為全棧。怎么做到掌控全局?核心在于對(duì)知識(shí)脈絡(luò)的體系化梳理。這是架構(gòu)能力構(gòu)建和全面提升的關(guān)鍵。這種方法不單單是在軟件工程中適用。

比如學(xué)數(shù)學(xué),我個(gè)人非常喜歡做的一件事情是自己去推導(dǎo)書上所有的公式。每一個(gè)公式我都親自推導(dǎo)而來。

這樣做的核心意義在于,我在嘗試從0開始,去構(gòu)建整個(gè)精彩紛呈的數(shù)學(xué)世界,整個(gè)數(shù)學(xué)發(fā)展史在自己的筆下重新演繹了一遍,來龍去脈清清楚楚。有時(shí)候你甚至?xí)茖?dǎo)出還沒有學(xué)到的公式,但是在后面學(xué)到了。這種體驗(yàn)非常有趣而又讓人滿足。

是的,掌控全局的前提是:在自己心中去重新構(gòu)建出整個(gè)世界。在這個(gè)過程中,你不需要一上來沉浸在某個(gè)技術(shù)的實(shí)現(xiàn)細(xì)節(jié)(除非它影響了你對(duì)這個(gè)世界構(gòu)建過程的理解),但是你知道整個(gè)世界的脈絡(luò),知道整個(gè)世界的骨架。

這個(gè)時(shí)候,你對(duì)這個(gè)世界的感覺是完全不同的,因?yàn)椋阋呀?jīng)成為了這個(gè)世界的構(gòu)建者。

而架構(gòu)的本質(zhì),不也正是構(gòu)建和創(chuàng)造么?

作為一個(gè)軟件行業(yè)的從業(yè)人員,我們可能接觸各種各樣的技術(shù)書籍。有講編程語言的、講數(shù)據(jù)結(jié)構(gòu)與算法的、講操作系統(tǒng)的、講編譯原理的、講架構(gòu)設(shè)計(jì)的,還有領(lǐng)域技術(shù)類的(比如數(shù)據(jù)庫、存儲(chǔ)、大數(shù)據(jù)、人工智能之類)。

大部分類別的技術(shù)書,多多少少都能夠找到幾本經(jīng)典著作。但是,架構(gòu)設(shè)計(jì)很可能是個(gè)例外,當(dāng)我想推薦一本經(jīng)典的架構(gòu)設(shè)計(jì)書時(shí),我并不能非常快速地想到應(yīng)該推薦哪本。

從個(gè)人經(jīng)驗(yàn)來說,我接觸過的與架構(gòu)相關(guān)的圖書,大概有如下這些分類。

 

  1. 架構(gòu)思維類。這類圖書通常從一些著名的架構(gòu)理論講起,比如開閉原則、單一職責(zé)原則、依賴倒置原則、接口分離原則,等等。這種圖書的問題在于過度理論化。計(jì)算機(jī)科學(xué)歸根到底屬于工程技術(shù)類,實(shí)踐第一。
  2. 設(shè)計(jì)模式類。這一類圖書則一下子進(jìn)入架構(gòu)的局部細(xì)節(jié),每個(gè)模式的來龍去脈并不容易理解。就算理解了某個(gè)具體的模式,但是也很難真正做到活學(xué)活用,不知道還是不知道。
  3. 分布式系統(tǒng)架構(gòu)設(shè)計(jì)類。這類圖書通常從服務(wù)端的通用問題如一致性、高可用、高并發(fā)挑戰(zhàn)等話題講起,講大型業(yè)務(wù)系統(tǒng)面臨的挑戰(zhàn)。這些知識(shí)是非常有價(jià)值的,但無法延伸到通用業(yè)務(wù)架構(gòu),對(duì)大部分企業(yè)的架構(gòu)實(shí)踐并不具備真正的指導(dǎo)意義。
  4. 重構(gòu)類。這類圖書主要講怎么把壞代碼一步步改進(jìn)到好代碼。我認(rèn)為這是最實(shí)用的一類。但在沒有優(yōu)秀架構(gòu)師主導(dǎo)的情況下,大部分公司的代碼不可避免地越變?cè)綁模钡讲豢爸刎?fù)最后不得不重寫。實(shí)際上,一個(gè)模塊最初的地基是最重要的,基本決定了這座大廈能夠撐多久,而重構(gòu)更多側(cè)重于大廈建成之后,在服務(wù)于人的前提下怎么去修修補(bǔ)補(bǔ),延長(zhǎng)生命。

 

這些架構(gòu)類的圖書并沒有達(dá)到我個(gè)人的期望。因?yàn)樗鼈兌紱]有揭開架構(gòu)設(shè)計(jì)的全貌。

我自己在職業(yè)生涯中前后大概做過十幾次的架構(gòu)類演講,這也是我最為重視、重復(fù)次數(shù)最多的一類演講。但同樣地,這樣零星的演講對(duì)于傳遞架構(gòu)設(shè)計(jì)思想來說,仍然遠(yuǎn)遠(yuǎn)不夠。

所以一直以來,我就心存著這樣一個(gè)念頭:“要寫一本不一樣的架構(gòu)類圖書”。這個(gè)念想,也正是今天這個(gè)專欄的由來。

這個(gè)專欄的內(nèi)容組織算是我的一次嘗試。它和今天你看得到的大部分架構(gòu)書并不太一樣。我基本上圍繞著兩個(gè)脈絡(luò)主線來展開內(nèi)容:

 

  1. 如何從零開始一步步構(gòu)建出整個(gè)信息世界;
  2. 在整個(gè)信息世界的構(gòu)建過程中,都用了哪些重要的架構(gòu)思維范式,以及這些范式如何去運(yùn)用于你平常的工程實(shí)踐中。

 

這兩大脈絡(luò)相輔相成。首先,我們通過還原信息世界的構(gòu)建過程,剝離出了整個(gè)信息世界的核心骨架,這也是最真實(shí)、最宏大的架構(gòu)實(shí)踐案例。其次,我們結(jié)合這個(gè)宏大的架構(gòu)實(shí)踐來談架構(gòu)思維,避免因?qū)軜?gòu)思維的闡述過于理論化而讓人難以理解。

我想,每個(gè)程序員都有一顆成為架構(gòu)師的心。所以,從內(nèi)容設(shè)計(jì)來說,我希望這是一個(gè)門檻最低的架構(gòu)設(shè)計(jì)專欄,也希望它可以幫助到想成為架構(gòu)師的初學(xué)者,達(dá)成自己的目標(biāo)。

在行文上,我會(huì)盡量避免深?yuàn)W的術(shù)語,盡可能以通俗易懂的文字,來描述信息世界構(gòu)建者們的所思所想。如果你在閱讀的過程中遇到了理解上的障礙,非常歡迎你來給我留言,我將盡可能地根據(jù)你的反饋,做出必要的調(diào)整。

如果你已經(jīng)成為了架構(gòu)師,我也希望可以為你規(guī)避一些錯(cuò)誤的經(jīng)驗(yàn)。在過去的工作經(jīng)歷里,我看到不少架構(gòu)師都會(huì)傾向于把架構(gòu)看作一項(xiàng)純技術(shù)性的行為。他們的工作流程是這樣的:產(chǎn)品經(jīng)理根據(jù)用戶的需求做出產(chǎn)品設(shè)計(jì),然后架構(gòu)師再依據(jù)產(chǎn)品設(shè)計(jì)給出實(shí)現(xiàn),也就是軟件的架構(gòu)設(shè)計(jì)方案。

在我看來,這其實(shí)是個(gè)誤解。架構(gòu)關(guān)乎的是整個(gè)復(fù)雜的軟件工程,它關(guān)乎實(shí)現(xiàn)它的人,它又因團(tuán)隊(duì)的能力而異。

同時(shí),架構(gòu)也關(guān)乎用戶需求,作為架構(gòu)師,我們不只是要知道當(dāng)前的用戶需求是什么,我們還要預(yù)測(cè)需求未來可能的變化,預(yù)判什么會(huì)發(fā)生,而什么一定不會(huì)發(fā)生。預(yù)測(cè)什么不會(huì)發(fā)生最為重要,只有做到這一點(diǎn),才能真正防止架構(gòu)的過度設(shè)計(jì),把簡(jiǎn)單的事情復(fù)雜化。

談了這么多,那么,應(yīng)該怎樣成長(zhǎng)為優(yōu)秀的軟件架構(gòu)師?我想,一靠匠心,二靠悟心。架構(gòu)設(shè)計(jì)并無標(biāo)準(zhǔn)答案,但我仍然希望把我這些年的所思所想分享給你,更希望這些內(nèi)容能給你一些啟發(fā)。

分享到:
標(biāo)簽:架構(gòu)師
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定