《失控》讀書(shū)筆記范文
《失控》讀書(shū)筆記范文
在文章開(kāi)頭,我們先聊一個(gè)最讓我三觀震動(dòng)的觀點(diǎn):
熱力學(xué)第二定律說(shuō):熵增不可逆。它基本等同于在說(shuō):“這個(gè)宇宙注定走向冷寂,而我們束手無(wú)策,所以感謝上帝,讓我們處在宇宙熵適宜生命存在的時(shí)間里。”可以說(shuō)非常之冷酷。然而事實(shí)不完全是這樣。
如果只是一味地熵增,地球中的物質(zhì)元素會(huì)越來(lái)越趨于穩(wěn)定,地球會(huì)越來(lái)越安靜,就像太陽(yáng)系的其他行星,充滿穩(wěn)定的元素,變得死氣沉沉。但地球還是充滿了活躍物質(zhì)和生命,循環(huán)往復(fù),充滿活力。
熱力學(xué)的熵變將物質(zhì)能量拉低,但生命的力量將物質(zhì)能量提高,讓地球處在一種活躍的狀態(tài)。——科學(xué)家管這種力量叫“負(fù)熵”。
順次假設(shè):如果有另一個(gè)星球,其中的物質(zhì)處于高度不穩(wěn)定狀態(tài),那么意味著這個(gè)星球中也存在生命,反之則不存在。(這一點(diǎn)已在NASA被證實(shí))
更進(jìn)一步:生命不斷繁衍下去,假設(shè)可以逐步占據(jù)整個(gè)宇宙,那么宇宙永遠(yuǎn)不可能冷卻。
負(fù)熵這個(gè)概念應(yīng)該寫(xiě)在熱力學(xué)教材里,這樣可以避免學(xué)這門(mén)課的盆友們心生沮喪。但如果真的寫(xiě)上去,恐怕很多人會(huì)像我一樣在讀到這一段之后立刻要遠(yuǎn)離熱力學(xué)了。
回到日常生活里,熵這個(gè)概念被用在非常多的場(chǎng)合,比如設(shè)計(jì)熵、信息熵、價(jià)值熵。聯(lián)系“熵增不可逆”定律,很容易理解這樣措辭的道理。
而關(guān)于熵與生命,作者提到一些很有趣的道理,是很好的產(chǎn)品設(shè)計(jì)思路。
簡(jiǎn)約高效與零bug妥協(xié)困境
作者從自動(dòng)機(jī)器的起源開(kāi)始討論這個(gè)問(wèn)題。人類一開(kāi)始做的機(jī)械非常簡(jiǎn)單:一個(gè)輸入,一個(gè)輸出。到后來(lái)出現(xiàn)反饋調(diào)節(jié),伺服電機(jī),各種各樣的控制回路,循環(huán)語(yǔ)句、遞歸迭代、神經(jīng)網(wǎng)絡(luò)模型等等。隨著系統(tǒng)越來(lái)越復(fù)雜,問(wèn)題也越來(lái)越多。
一個(gè)系統(tǒng)很難免去bug。而修復(fù)bug過(guò)程本身引入更多bug的可能性。
我們做一個(gè)數(shù)據(jù)接口,接口本身很簡(jiǎn)單,但為了監(jiān)控接口數(shù)據(jù)正常、保證在任何特殊情況下不出錯(cuò)很麻煩。1%的工作量解決了99%問(wèn)題,剩下99%是為了規(guī)避掉那1%的異常。
為了解決問(wèn)題,我們不得不修好有1%概率出現(xiàn)的補(bǔ)丁。但不能保證會(huì)不會(huì)有0.001%概率的問(wèn)題不知道藏在哪里。因?yàn)橛?jì)算機(jī)語(yǔ)言是一階謂詞邏輯,在一個(gè)簡(jiǎn)單的條件判斷中,我們可以在每個(gè)條件成立的分支上再次判斷“是否正確”,然后在每一個(gè)“否”的分支上繼續(xù)詢問(wèn):有多少種“否”的情況、每種情況該怎么辦。這樣下去即使套無(wú)數(shù)層邏輯也還是不能cover 所有情況。
需求分析過(guò)程基本是因果論,它需要知道足夠多的原因,才能得到正確的結(jié)論。如果有些問(wèn)題事先不知道,那結(jié)論中不可能包含它。因此,問(wèn)題總是出在未知的地方,想要用邏輯覆蓋所有未知問(wèn)題,實(shí)現(xiàn)徹底的閉環(huán),不出任何
bug,就意味著有超級(jí)多的冗余代碼(更不用說(shuō)因果論與編程語(yǔ)言自身就存在一些邏輯悖論)
簡(jiǎn)約高效與零缺陷幾乎不可能共存,就像瀑布式軟件開(kāi)發(fā)不能適應(yīng)互聯(lián)網(wǎng)時(shí)代一樣。它需要產(chǎn)品與研發(fā)做出一些妥協(xié),盡量簡(jiǎn)約,并且規(guī)避大部分的bug。
機(jī)器的靈性
從零缺陷角度來(lái)說(shuō),采取直線型的簡(jiǎn)單流程更容易實(shí)現(xiàn)。但是產(chǎn)品會(huì)不斷迭代,新需求越來(lái)越多,復(fù)雜不可避免,零缺陷就非常之難了。
軟件工程中有個(gè)概念,叫做模塊間解耦合。盡量將流程拆解成一個(gè)個(gè)相對(duì)獨(dú)立的模塊,減少模塊間的耦合度,維持單個(gè)模塊的通用性,同時(shí)也保證了系統(tǒng)的可拓展性。作者在書(shū)中舉了蜜蜂的例子。蜜蜂之間用一些簡(jiǎn)單的信號(hào)溝通,各司其職,有新的蜜蜂出生,也有蜜蜂因?yàn)楦鞣N各樣的原因死去。每只蜜蜂的行動(dòng)像機(jī)械一樣簡(jiǎn)單,但整個(gè)社群穩(wěn)定地存在且不斷地繁衍了下去。
但這樣的系統(tǒng)寫(xiě)起來(lái)更復(fù)雜一些。它犧牲了一部分簡(jiǎn)約,來(lái)方便迭代。它不太容易壞掉,或者說(shuō)出了bug也不會(huì)導(dǎo)致整個(gè)系統(tǒng)癱瘓。但因?yàn)橛?jì)算機(jī)系統(tǒng)是離散的、信號(hào)式的,所以已知“a=1真” & “a=2真”,并不能判斷“a=1.5”是真還是假。所以問(wèn)題往往出在一些意料之外的地方。比如阿里的公眾號(hào)曾經(jīng)發(fā)過(guò)一篇文章,討論支付中偶發(fā)性出現(xiàn)1分錢(qián)差錯(cuò)賬的問(wèn)題是怎樣解決的。這個(gè)問(wèn)題概率低到阿里的幾億用戶只有少數(shù)幾個(gè)人偶爾會(huì)遇到,以至于在產(chǎn)品上線前完全測(cè)不出這種問(wèn)題。
作者把這種不完美但是更靈活的系統(tǒng),叫做“有靈性的機(jī)器”,甚至與原始的生命做類比。而把那些無(wú)法預(yù)知的 bug 叫做“創(chuàng)造性”失靈。
“有靈性”的系統(tǒng)不能保證零缺陷,偶爾還鬧個(gè)幺蛾子出來(lái),但它更不容易壞掉,它不夠簡(jiǎn)約,但方便迭代,總體來(lái)講更健壯一些??梢运阋环N還不錯(cuò)的妥協(xié)結(jié)果了。
系統(tǒng)設(shè)計(jì)與用戶體驗(yàn)
前面的內(nèi)容基本只為系統(tǒng)設(shè)計(jì)考慮。換到用戶端去呢?在用戶體驗(yàn)領(lǐng)域,講究的是,不要讓用戶思考,在恰當(dāng)?shù)膱?chǎng)景為用戶提供恰當(dāng)?shù)膬?nèi)容,黏住用戶。至于方不方便迭代?用戶才不要管那么多!
那前面的內(nèi)容完全不適用了嗎?也不至于。在設(shè)計(jì)前端產(chǎn)品的時(shí)候換個(gè)角度:按場(chǎng)景做拆分,不同場(chǎng)景的內(nèi)容放在不同頁(yè)面,有場(chǎng)景切換的時(shí)候,用鏈接從一個(gè)模塊跳轉(zhuǎn)到另一個(gè)模塊,也只要增加一些模塊間的連接內(nèi)容就好啦。
互聯(lián)網(wǎng)時(shí)代體驗(yàn)至上,做產(chǎn)品,第一位要考慮用戶體驗(yàn),體驗(yàn)是王道,體驗(yàn)好才有用戶,為了用戶體驗(yàn)要精益求精,一切都要為體驗(yàn)讓路。但事實(shí)上,某個(gè)按鈕放在上面還是下面,某某表單用一個(gè)頁(yè)面還是兩個(gè),很多時(shí)候一半用戶喜歡A另一半用戶喜歡B,這時(shí)就不能再用體驗(yàn)做唯一標(biāo)準(zhǔn)了。
現(xiàn)在用戶體驗(yàn)已經(jīng)是基礎(chǔ)標(biāo)配,而非高不可攀,我們大可以在此之上增加一些要求。如果某種設(shè)計(jì)方式在不傷害體驗(yàn)的前提下,能讓研發(fā)節(jié)約20%工作量,不是更有價(jià)值嗎?如果這樣可以讓系統(tǒng)結(jié)構(gòu)更合理、app運(yùn)行更順暢,也是另一個(gè)角度優(yōu)化了用戶體驗(yàn)。
熵與技術(shù)債
我們聊信息熵,是說(shuō)限制各種無(wú)意義的內(nèi)容充斥網(wǎng)絡(luò),我們最容易接觸到的通常是一些沒(méi)什么用的信息。降低某一部分信息熵的代價(jià)幾乎要超過(guò)信息本身的價(jià)值。
而設(shè)計(jì)熵高的產(chǎn)品,會(huì)更復(fù)雜、更不容易讓人理解、美得讓人感官疲憊;設(shè)計(jì)熵理論涉及到仿生學(xué),也與生命產(chǎn)生聯(lián)系。
軟件工程領(lǐng)域有個(gè)詞叫技術(shù)債,也可以當(dāng)做一種熵。
如果說(shuō)降低熵的方式,是生命的力量。那減緩熵增的方式,就是讓物質(zhì)變得更像生命。至于非常像生命的時(shí)候會(huì)發(fā)生什么,那就是另一個(gè)問(wèn)題了。
相關(guān)文章: