模型思維基礎(chǔ) —— 以軟件開發(fā)元模型為例

不知道你有沒(méi)有想過(guò),公共澡堂里面淋浴頭之間的距離是如何被決定的?現(xiàn)在我們假設(shè)自己是承包澡堂項(xiàng)目的工程團(tuán)隊(duì),嘗試用最簡(jiǎn)單的方式來(lái)確定這個(gè)數(shù)值。

最直觀的想法是:假設(shè)將直立的人內(nèi)嵌在一個(gè)圓柱體里面,可以得到這個(gè)圓柱體的半徑d。我們通過(guò)調(diào)查,獲得一部分人的d值,取其平均值,設(shè)為Avg(d)。那么,Avg(d)加上一個(gè)特定距離就可以是淋浴頭之間的距離。這里我們先假設(shè)這個(gè)特定距離是1米。

于是我們得出一個(gè)很簡(jiǎn)單的模型

淋浴頭之間的間距 = Avg(d) + 1

這里我們利用模型對(duì)一個(gè)問(wèn)題做出了決策。先不評(píng)價(jià)它的好壞,它確實(shí)針對(duì)這個(gè)問(wèn)題給出了解決方案。

生活中利用模型解決問(wèn)題的例子無(wú)處不在。單純從工程上來(lái)說(shuō),所有問(wèn)題都是要用模型來(lái)解決的。

對(duì)于模型的定義有很多,我在這里給出我的一家之言。模型是過(guò)往經(jīng)驗(yàn)的集合,用于幫助針對(duì)當(dāng)下問(wèn)題做出決策。舉個(gè)大家都比較熟悉的例子,統(tǒng)計(jì)學(xué)里面的線性回歸就是根據(jù)很多收集到的過(guò)往的數(shù)據(jù)點(diǎn)建模,得出參數(shù)x和值y的線性關(guān)系。通過(guò)建立出來(lái)的模型,可以評(píng)價(jià)、選擇參數(shù)x

模型的正確性

天底下沒(méi)有正確的模型,所有的模型都是錯(cuò)的。模型只有好與壞的區(qū)別。因?yàn)檫^(guò)往經(jīng)驗(yàn)的產(chǎn)生(例如數(shù)據(jù))是伴隨著各種各樣不同的因素產(chǎn)生的,其中包括內(nèi)在因素和外在因素兩種。而在幾乎所有情況下,我們是無(wú)法嚴(yán)格證明所有因素已經(jīng)被我們所考慮了的。

例如,在剛才的淋浴頭模型里面,我們是否考慮到了:

  • 人在洗澡這個(gè)特定環(huán)境下時(shí),周圍人與他的距離多遠(yuǎn)才算舒適?
  • 性別對(duì)這些數(shù)值是否有影響?
  • 年齡呢?

就算這些都被考慮了,被根據(jù)數(shù)據(jù)統(tǒng)計(jì)出來(lái)了的,我們還是無(wú)法嚴(yán)格證明我們窮舉了所有的因素。另外,我們還面臨著

  • 精度丟失問(wèn)題
  • 樣本不足問(wèn)題
  • 數(shù)據(jù)真實(shí)性問(wèn)題
  • ……

所以,我們是找不到正確的模型的,只能找到更好的模型。例如,考慮了性別的情況下,得出的淋浴頭之間距離的模型應(yīng)該會(huì)比我們最初得出來(lái)的模型好。因?yàn)樗紤]了更多的因素。

自底向上的模型構(gòu)建方式

剛才提到,模型是過(guò)往經(jīng)驗(yàn)的集合。將過(guò)往經(jīng)驗(yàn)看成點(diǎn),以某種形式連接在一起,就形成了一個(gè)模型。

你應(yīng)該注意到了,我提到的是以某種形式連接在一起。所以,對(duì)于同樣的經(jīng)驗(yàn)集合,我們有很多種連線的方式。即,對(duì)于同一個(gè)經(jīng)驗(yàn)集合,我們可以有很多種建模方式。

一個(gè)模型也可以由多個(gè)已有模型建立起來(lái)。這時(shí)候,已有模型也可以看成是點(diǎn),連接在一起之后,就形成了新的模型。例如,加減乘除可以看做是四個(gè)二元運(yùn)算的模型,那么根據(jù)他們我們可以構(gòu)建二元運(yùn)算模型。

a + b, a - b, a * b, a / b 得出 a ? b

這是一種自底向上構(gòu)建模型的方式。

自底向上構(gòu)建模型的方式就是學(xué)習(xí)的方式,也可以論證為什么基礎(chǔ)知識(shí)不扎實(shí)是無(wú)法理解高級(jí)知識(shí)的。

拿軟件行業(yè)做例子。在軟件行業(yè)里,有一種職稱叫做架構(gòu)師。架構(gòu)師可能不做實(shí)際的編碼工作,而是做系統(tǒng)宏觀的設(shè)計(jì)。有些學(xué)生就會(huì)說(shuō),“不就是畫圖么,我也會(huì)”!這是不正確的。

優(yōu)秀的架構(gòu)師都是從基礎(chǔ)編碼做起的。他們需要有計(jì)算機(jī)專業(yè)的專業(yè)基礎(chǔ)知識(shí),如計(jì)算機(jī)體系結(jié)構(gòu)知識(shí)、計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)知識(shí)、算法基本知識(shí)等。這些知識(shí)實(shí)際上就是我們所說(shuō)的那些點(diǎn)。他們從最底層做起,一步步地向上建立模型,才能夠有能力對(duì)一個(gè)大規(guī)模系統(tǒng)進(jìn)行建模??梢哉f(shuō),他們的能力提升,就是一個(gè)不斷建模的過(guò)程。

水平模型建立方式

對(duì)于一個(gè)現(xiàn)有模型A,我們可以根據(jù)它做修改,產(chǎn)生一個(gè)相似的兄弟模型B。

例如,除法二元運(yùn)算模型的形態(tài)是被除數(shù) / 除數(shù) = 商 ... 余數(shù),那么我們稍加修改就可以得出取模運(yùn)算模型被除數(shù) % 除數(shù) = 余數(shù),同樣也是個(gè)二元運(yùn)算模型。

水平模型建立方式可以說(shuō)是很多互聯(lián)網(wǎng)產(chǎn)品的思路。它們先根據(jù)自己的理解找到競(jìng)品的模型(先不論它是不是找了差勁的模型),然后分析出該模型的問(wèn)題,對(duì)其進(jìn)行微調(diào)加以改進(jìn)。

例如,微信最初可以說(shuō)就是由WhatsApp的模型修改而來(lái)的。雖然到現(xiàn)在他們已經(jīng)完全不一樣了。

自頂向下的模型建立方式

對(duì)于一個(gè)現(xiàn)有模型A,我們可以根據(jù)它做細(xì)化,產(chǎn)生一個(gè)新的子模型B。這時(shí)候我們稱模型A是模型B的元模型(Meta Model)。與兄弟模型之間的關(guān)系不同,元模型可以描述子模型。

對(duì)于熟悉面向?qū)ο蟪绦蛟O(shè)計(jì)的人來(lái)說(shuō),我需要提醒一下,這里面存在的不是繼承關(guān)系。繼承關(guān)系的場(chǎng)景下,子類包含父類。但是在元模型產(chǎn)生的子模型并不能包含元模型,而是元模型的一部分。因此,我們可以說(shuō),是元模型細(xì)分出了子模型。

例如,二元運(yùn)算模型a?b也可以細(xì)分出取模運(yùn)算模型a%b。然而,這次我們得出取模運(yùn)算模型的方式和之前的方式是完全不同的。

例子:軟件開發(fā)元模型

軟件開發(fā)流程有許多的模型。例如,瀑布流模型、增量模型、迭代模型、螺旋模型等。

這些模型有一個(gè)共同的元模型,它非常的簡(jiǎn)單:將普通人類的理解完全正確地翻譯為機(jī)器的理解

軟件開發(fā)元模型:將普通人類的理解完全正確地翻譯為機(jī)器的理解
軟件開發(fā)元模型:將普通人類的理解完全正確地翻譯為機(jī)器的理解

你會(huì)發(fā)現(xiàn),瀑布流模型、增量模型之類的模型,都是可以被這個(gè)模型所描述的。

同樣,敏捷開發(fā)的12項(xiàng)原則也是可以被這個(gè)模型所描述的,因?yàn)樗鼈兌际菫檫@個(gè)模型服務(wù)的。

創(chuàng)新的本質(zhì):創(chuàng)造模型

我對(duì)創(chuàng)新的描述就是創(chuàng)造新的模型。

對(duì)于采用自底向上法得出的模型,我們可以說(shuō)是基于大量數(shù)據(jù)總結(jié)得出的創(chuàng)新。大數(shù)據(jù)是個(gè)最好的例子,無(wú)數(shù)企業(yè)在大數(shù)據(jù)幫助下取得的成功印證了這一點(diǎn)。

對(duì)于采用水平模型建立方式得出的模型,大多“性能”都不太好。因?yàn)槟憧赡苷义e(cuò)了原有模型存在的問(wèn)題,并且你的改進(jìn)可能也不高明。

對(duì)于采用自頂向下法得出的模型,在我看來(lái)就是聰明人才能做得出的事情。Facebook就是這樣一家在技術(shù)上擅長(zhǎng)使用自頂向下法來(lái)創(chuàng)新的公司。他們所創(chuàng)造出的技術(shù)產(chǎn)品遵循著其"Move fast and break things"的原則,總是能創(chuàng)造出截然不同的模型。

例如,F(xiàn)acebook的React.js這個(gè)產(chǎn)品,打破了一個(gè)最傳統(tǒng)的軟件設(shè)計(jì)理念 —— Separation of concerns(我不知道怎么翻譯比較好)??此剖谴蚱片F(xiàn)有模型,但是實(shí)際上這個(gè)突破來(lái)自于同一個(gè)元模型 —— 模塊化設(shè)計(jì)原則。當(dāng)然了,每個(gè)人的理解角度可以是不一樣的,關(guān)于這點(diǎn),我們可以多多討論。

總結(jié):從今天開始利用模型思維

我曾經(jīng)在Coursera上面完成過(guò)Model Thinking這門課,這門課對(duì)我的影響可以說(shuō)超過(guò)任何一門學(xué)校里面教授的課程。如果大家有興趣,可以去學(xué)習(xí)這門課。

模型可以讓人更好地理解、闡述這個(gè)世界。模型讓你有能力同時(shí)快速地掌握多類事物的運(yùn)作規(guī)則,融會(huì)貫通之,也由此能產(chǎn)生創(chuàng)新。

你會(huì)發(fā)現(xiàn),那些處于最高層的模型,其實(shí)就是哲學(xué)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,530評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,759評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,204評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,415評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,955評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,675評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,967評(píng)論 2 374

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