日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

分享七牛云CEO「許式偉」對于這個話題的思考。

 

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

開始之前,我先來和你簡單介紹下我自己。

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

讓我們來想象一下,如果把信息世界看成一座大廈,把程序員看成這個世界的建筑師,那么,現在的你在負責什么樣的工作呢?

當我們把程序員類比成建筑師時,按照能力水平來分,我覺得大體可以分為三個層次:搬磚師、工程師、架構師。

軟件搬磚師之名對應到建筑行業的建筑工人,他們的編程能力和業務基本上停留在堆疊代碼,按照要求去實現功能需求的層面。

只要能讓程序跑起來,能正確地實現業務邏輯,就可以稱為“會編程”的人。有時候,我們也會看見程序員自稱為“碼農”“搬磚的”,雖然二者的工種不同,但從基礎工作的相似度來說,確實有可類比的成分。

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

然而,只讓代碼跑起來是不夠的。這個世界是不斷變化的,作為程序員,我們更多的時間是用來維護代碼:增加新的需求,對已有的功能進行調整,修改之前代碼遺留下來的問題,優化性能等等。

這是因為一個軟件誕生之后,后續就是需要花費大量的代價去維護它,演進它。一個人是完全維護不過來的,需要更多的人,很多的團隊一起協作。如果面臨了員工離職、崗位調整等情況,還會導致軟件代碼在不同人之間流轉。

所以,一些有追求的程序員會關注代碼的質量。代碼質量的評判可以有這樣一些基本維度:可閱讀性(方便代碼流轉)、可擴展性/可維護性(方便修改功能,添加新功能)、可測試性(質量管理)、可復用性(簡化后續功能開發的難度)。

這一類致力于不斷提升軟件代碼的工程質量的程序員,我們可以稱他們為軟件工程師。

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

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

但是,大部分商業軟件都是一項極其復雜的工程,它們遠比很多傳統的建筑工程復雜得多,無論是涉及的人力、時間還是業務的變數都要多很多。

人力上,大部分大型的軟件系統都有幾千甚至幾萬人的規模,而這幾千幾萬人中,卻沒有兩個人的工作是重復的,他們都是在從事著前所未有的創造性工作。

時間上,只要軟件還在服務客戶中,程序員們的創造過程便不會停止,軟件系統仍然持續迭代更新,以便形成更好的市場競爭力。

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

所以,光靠把控軟件工程師的水平,依賴他們自覺保障的工程質量,是遠遠不夠的。軟件工程是一項非常復雜的系統工程,它需要依賴一個能夠掌控整個工程全局的團隊,來規劃和引導整個系統的演變過程。這個團隊就是架構師團隊。

軟件架構師的職責,并不單單是我們通常理解的,對軟件系統進行邊界劃分和模塊規格的定義。

從根本目標來說,軟件架構師要對軟件工程的執行結果負責,這包括:按時按質進行軟件的迭代和發布、敏捷地響應需求變更、防范軟件質量風險(避免發生軟件質量事故)、降低迭代維護成本。

那怎么才能成長為優秀的軟件架構師?軟件架構師和軟件工程師最根本的差別又在哪里?我認為關鍵在于四個字:掌控全局。

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

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

比如學數學,我個人非常喜歡做的一件事情是自己去推導書上所有的公式。每一個公式我都親自推導而來。

這樣做的核心意義在于,我在嘗試從0開始,去構建整個精彩紛呈的數學世界,整個數學發展史在自己的筆下重新演繹了一遍,來龍去脈清清楚楚。有時候你甚至會推導出還沒有學到的公式,但是在后面學到了。這種體驗非常有趣而又讓人滿足。

是的,掌控全局的前提是:在自己心中去重新構建出整個世界。在這個過程中,你不需要一上來沉浸在某個技術的實現細節(除非它影響了你對這個世界構建過程的理解),但是你知道整個世界的脈絡,知道整個世界的骨架。

這個時候,你對這個世界的感覺是完全不同的,因為,你已經成為了這個世界的構建者。

而架構的本質,不也正是構建和創造么?

作為一個軟件行業的從業人員,我們可能接觸各種各樣的技術書籍。有講編程語言的、講數據結構與算法的、講操作系統的、講編譯原理的、講架構設計的,還有領域技術類的(比如數據庫、存儲、大數據、人工智能之類)。

大部分類別的技術書,多多少少都能夠找到幾本經典著作。但是,架構設計很可能是個例外,當我想推薦一本經典的架構設計書時,我并不能非常快速地想到應該推薦哪本。

從個人經驗來說,我接觸過的與架構相關的圖書,大概有如下這些分類。

 

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

 

這些架構類的圖書并沒有達到我個人的期望。因為它們都沒有揭開架構設計的全貌。

我自己在職業生涯中前后大概做過十幾次的架構類演講,這也是我最為重視、重復次數最多的一類演講。但同樣地,這樣零星的演講對于傳遞架構設計思想來說,仍然遠遠不夠。

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

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

 

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

 

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

我想,每個程序員都有一顆成為架構師的心。所以,從內容設計來說,我希望這是一個門檻最低的架構設計專欄,也希望它可以幫助到想成為架構師的初學者,達成自己的目標。

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

如果你已經成為了架構師,我也希望可以為你規避一些錯誤的經驗。在過去的工作經歷里,我看到不少架構師都會傾向于把架構看作一項純技術性的行為。他們的工作流程是這樣的:產品經理根據用戶的需求做出產品設計,然后架構師再依據產品設計給出實現,也就是軟件的架構設計方案。

在我看來,這其實是個誤解。架構關乎的是整個復雜的軟件工程,它關乎實現它的人,它又因團隊的能力而異。

同時,架構也關乎用戶需求,作為架構師,我們不只是要知道當前的用戶需求是什么,我們還要預測需求未來可能的變化,預判什么會發生,而什么一定不會發生。預測什么不會發生最為重要,只有做到這一點,才能真正防止架構的過度設計,把簡單的事情復雜化。

談了這么多,那么,應該怎樣成長為優秀的軟件架構師?我想,一靠匠心,二靠悟心。架構設計并無標準答案,但我仍然希望把我這些年的所思所想分享給你,更希望這些內容能給你一些啟發。

分享到:
標簽:架構師
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定