系統設計黃金法則:簡單之美(2)

發表于:2012-05-14來源:不祥作者:包云崗點擊數: 標簽:系統設計
Graham在設計者的品味一章中寫到,好的設計是簡單的、簡單就是美,正如漂亮的數學證明往往是簡短而巧妙的那種。他提到,有些創業者希望第一版就能推

  Graham在“設計者的品味”一章中寫到,“好的設計是簡單的”、“簡單就是美,正如漂亮的數學證明往往是簡短而巧妙的那種”。他提到,有些創業者希望第一版就能推出功能齊全的產品,滿足所有的用戶需求,但這種想法是致命的。在硅谷創業最忌諱的就是“Premature Optimization”。因為一方面用戶需求是多樣的,不同人群都有不同的需求;另一方面開發者想象的需求往往和真實的用戶需求有偏差。所以,Graham推崇那種有用戶參與反饋的迭代優化的方式。

  無獨有偶,最近至少聽到兩個報告提到了Facebook的開發模式。當Facebook開發一個新的服務,會先讓一個小用戶群使用,根據用戶的反饋來修改功能,同時可以調試程序中的bug。然后下一版讓更大一些的用戶群使用,收集用戶反饋繼續修改程序。如此反饋幾次,最后再推向所有用戶。這種模式要求再最初設計時盡量簡單,從而只需幾個月的時間就能推出一個新的功能,然后再不斷地優化完善。

  到目前為止,談的工業界偏多一些,但其實在系統領域的學術研究,“簡單”法則同樣適用。

  李凱教授:KISS原則

  普林斯頓大學計算機系的李凱教授是“KISS”原則的堅決貫徹者。幾乎每次和李凱老師討論,他都會強調“Keep it Simple”。李凱老師的做事方式是——只抓住大方向,其他問題盡量簡化。

  但真正要做到KISS原則其實并不容易。我在遇到問題時,往往會從各個方面去考慮問題,其中難免包含了各種細枝末節,這種方式導致問題經常會變得非常復雜。之前講過這個例子,在移植TCP/IP協議棧到用戶態時,我覺得有約10個功能需要考慮。和李老師討論,他讓我把那些功能分成兩類:“必須有(Must Have)”和“可以有(Nice-to-Have)”。當我試了這種方法,發現原來Must-Have的功能其實也不過2~3個而已。而最近的例子則是在要設計一個功能讓TCP/IP連接的Server在模擬器中、Client在真實機器。我考慮是盡量減少模擬器上OS的開銷,所以打算采用自己寫一個設備、然后讓用戶態程序Bypass Kernel直接訪問該設備的方案。但李凱老師在了解OS開銷以后,認為容忍開銷、盡量直接使用模擬器自己帶的功能,讓開發更簡單。

  這些教訓也讓我不斷地去思考為什么要用KISS原則。慢慢地我體會到,KISS原則目的其實是——“快速推進、逐步優化”。我們設計一個算法,往往可以在大腦中預先思考好,然后直接編程寫出來。但是,我們設計實現一個系統,當系統的復雜度超出我們大腦的工作記憶容量時,就無法在大腦中去“模擬”每一個細節。此時,我們應該用最快的速度去把系統建起了,然后再對各個環節進行優化。

  這個KISS理念并不是計算機系統領域特有的,最早是來源于研制飛機時提出的設計理念。而在其他領域,如果一個任務涉及多個步驟,也同樣有效,比如生物研究。我去年前曾看過施一公教授寫的一篇文章中也提到了這一點。

  施一公教授:"耗費時間的完美主義阻礙創新進取 "【5】

  2011年9月清華大學施一公教授在科學網上發布了一篇博客《如何做一名優秀的博士生:(二)方法論的轉變》,其中介紹到完美主義的危害,其實是從另一個角度來強調“簡單”。

  施教授講了他博士后期間的一個故事。一次他的任務是純化一個蛋白。兩天下來,雖然純化了,但是產量只有20%。

  他不好意思地對導師說,“產率很低,我計劃繼續優化蛋白的純化方法,提高產率”。

  但導師反問:“你為什么想提高產率?已有的蛋白不夠你做初步的結晶實驗嗎?”

  他回敬:“我有足夠的蛋白做結晶篩選,但我需要優化產率以得到更多的蛋白。”

  導師不客氣地打斷:“不對。產率夠高了,你的時間比產率重要。請盡快開始結晶。”

  實踐最后證明他導師的建議是對的。

  對于這個故事,施一公教授總結如下:

  "在大刀闊斧進行創新實驗的初期階段,對每一步實驗的設計當然要盡量仔細,但一旦按計劃開始后對其中間步驟的實驗結果不必追求完美,而是應該義無反顧地把實驗一步步推到終點,看看可否得到大致與假設相符的總體結果。如果大體上相符,你才應該回過頭去仔細地再改進每一步的實驗設計。如果大體不符,而總體實驗設計和操作都沒有錯誤,那你的假設(或總體方向)很可能是有大問題的。

  這個方法論在每一天的實驗中都會用到。比如,結構生物學中,第一次嘗試純化一種新的蛋白不應該追求每一步的產率,而應該盡量把所有純化步驟進行到底,看看能否拿到適于結晶的蛋白。第一次嘗試limited proteolysis,不應該刻意確定protease濃度或追求蛋白純度,而是要關注結果中是否有protease-resistant core domain。從1998年開始自己的獨立實驗室到現在,我告訴所有學生:切忌一味追求完美主義。

  我把這個方法論推到極限:只要一個實驗還能往前走,一定要做到終點,盡量看到每一步的結果,之后需要時再回頭看,逐一解決中間遇到的問題。 "

  結語

  我想從各個角度去闡釋“簡單之美”,但到最后感覺這篇文章就是一個大雜燴。既然如此,那我就再加一點料。

  Elon Musk是現實世界中的鋼鐵俠,他先后創辦了網絡支付公司PayPal、電動汽車公司Tesla以及空間探索公司Space X。目前Space X研制的“獵鷹”火箭已成功試飛,并得到NASA 16億美元的合同。為了減低成本和提供可靠性,Space X設計的火箭也到處滲透著“簡單”【6】:“在他們的獵鷹1號運載火箭上,并沒有很多專利,科學家們不在乎,只要火箭能飛就行?;鸺玫闹靼l動機也不是21世紀的最新設計,而是1960年代的老古董,只有一個燃料噴射器。它很老,但很可靠。”

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97