昨天公司的軟件被報(bào)告了一個(gè)bug, 我一查, 原來(lái)是由添加一個(gè)新的功能引起的. 新的功能解決了問(wèn)題A, 但是在一個(gè)很隱秘的地方帶來(lái)了問(wèn)題B. 在我解決問(wèn)題A的時(shí)候, 我是完全沒(méi)有想到竟然會(huì)出現(xiàn)問(wèn)題B, 而且測(cè)試也沒(méi)有測(cè)出來(lái). 但是問(wèn)題B出現(xiàn)之后, 這一切又是如此地顯而易見(jiàn).
于是我手到病除地解決了問(wèn)題B, 然后軟件繼續(xù)愉快地運(yùn)行了.
作為一個(gè)有zhi青年, 當(dāng)然不會(huì)只停留在這. 于是我想是不是之前的框架設(shè)計(jì)的不夠好呢. 但是我發(fā)現(xiàn), 很多時(shí)候, 你為了解決一個(gè)問(wèn)題, 從而引發(fā)了另一個(gè)問(wèn)題. 而系統(tǒng)就在不斷解決問(wèn)題的時(shí)候, 變得復(fù)雜, 甚至是難以維護(hù).
這樣做有問(wèn)題嗎? 有沒(méi)有一個(gè)完美的解決方案?
...
以我現(xiàn)在的理解, 我認(rèn)為是沒(méi)有. 完美之所以稱為完美, 就是說(shuō)達(dá)不到那種狀態(tài), 我們只能去追求完美.
我想到了前幾天看到的一篇文章: 人類(lèi)身體里面的十個(gè)設(shè)計(jì)缺陷 Top 10 Design Flaws in the Human Body
它副標(biāo)題是這樣的: "From our knees to our eyeballs, our bodies are full of hack solutions."
里面提到了各種由于進(jìn)化的原因, 人體自然產(chǎn)生的為了適應(yīng)環(huán)境或生存而不得不產(chǎn)生的有缺陷的設(shè)計(jì)以及各種專家提出的解決方案. 文章很有意思, 解決方案更有意思. 比如說(shuō)為了讓脊椎更強(qiáng)更不容易受損疼痛, 專家建議我們可以借鑒狗的脊椎的設(shè)計(jì), 并且回到爬行狀態(tài).
文中有句話我印象比較深刻, 大意是, 進(jìn)化, 不會(huì)產(chǎn)生完美, 而只會(huì)產(chǎn)生實(shí)用的設(shè)計(jì).
那么, 實(shí)用的設(shè)計(jì)算不算好的設(shè)計(jì)? 什么才是好的設(shè)計(jì)呢?
我認(rèn)為, 設(shè)計(jì), 首先是一個(gè)解決方案. 是要解決一個(gè)問(wèn)題的.
而由于問(wèn)題其實(shí)是一直在變的, 設(shè)計(jì)應(yīng)該也是一直在變化, 在進(jìn)化.
好的設(shè)計(jì), 就是適應(yīng)當(dāng)前需求的優(yōu)雅簡(jiǎn)單的解決方案.
最近在學(xué)習(xí)UX設(shè)計(jì), 那么就以UX設(shè)計(jì)為例子, 好的UX設(shè)計(jì), 其實(shí)也是cover了這些點(diǎn)的:
- useful (解決方案)
- usable (簡(jiǎn)單)
- desirable (優(yōu)雅)
- findable (簡(jiǎn)單)
- accessible (適應(yīng))
- credible (好吧, 這個(gè)我是沒(méi)想出來(lái))
- valuable (解決了一個(gè)問(wèn)題)
那么, 現(xiàn)在問(wèn)題來(lái)了, 怎么才能產(chǎn)生一個(gè)好的設(shè)計(jì)呢?
反觀人類(lèi)身體的進(jìn)化過(guò)程 (我認(rèn)為人類(lèi)的身體這么復(fù)雜, 能做這么多事情, 當(dāng)然是一個(gè)很好的設(shè)計(jì)), 你會(huì)發(fā)現(xiàn), 一個(gè)好的設(shè)計(jì), 簡(jiǎn)化出來(lái)是這樣來(lái)的:
- 試錯(cuò): 通過(guò)交配來(lái)基因重組或者是基因突變來(lái)創(chuàng)新, 然后在環(huán)境中試錯(cuò)
- 反饋: 被環(huán)境選擇, 得到反饋, 要么適應(yīng)這個(gè)環(huán)境, 要么就是被環(huán)境淘汰
- 迭代: 重復(fù)1-2
其實(shí), 大到物種進(jìn)化, 小到自我發(fā)展, 都可以看成這樣一種思路.
平時(shí)我們講的軟件工程, UX process里面的快速迭代, 精簡(jiǎn)創(chuàng)業(yè)等, 也是同樣的道理.
當(dāng)然, 這不是說(shuō)隨便創(chuàng)造一個(gè)東西出來(lái), 讓它去適應(yīng)然后加各種hack, 各種補(bǔ)丁.
在我們?cè)O(shè)計(jì)的時(shí)候, 是要站在前人的基礎(chǔ)上, 通過(guò)總結(jié)和反思, 去創(chuàng)新的.
而且, 一個(gè)好的設(shè)計(jì), 比如軟件的構(gòu)架, 是可以在一定程度上去應(yīng)對(duì)變化的. 軟件工程里面不是有一句話么, 牢記唯一不變的就是變化
.
好的設(shè)計(jì), 都是進(jìn)化出來(lái)的, 而不是設(shè)計(jì)出來(lái)的.
而進(jìn)化過(guò)程中, 必然會(huì)有那種野蠻殘酷的淘汰.
就如功夫一樣, 什么才是最強(qiáng)最好的功夫? 葉問(wèn)做了解答: 功夫腺阳,兩個(gè)字,一橫一豎,錯(cuò)的倒下捡硅,對(duì)的站著呻率。
就是這么簡(jiǎn)單, 粗暴, 野蠻, 有效.
萬(wàn)物, 野蠻生長(zhǎng).