昨日部門技術(shù)分享的內(nèi)容是“Unix的設(shè)計(jì)思想”,有些感悟,這里分享給大家。
unix是什么
不是軟件開發(fā)的人可能不懂什么是unix,但其實(shí)它老牛逼了,我們每個(gè)人幾乎無時(shí)無刻不和它打交道。
unix是經(jīng)典的操作系統(tǒng),可以說是現(xiàn)在操作系統(tǒng)的鼻祖,大家聽說過的系統(tǒng)中大部分是來源于unix,例如linux、蘋果電腦的osx都是類unix系統(tǒng)。大家使用的蘋果手機(jī),它的ios系統(tǒng)的核心也是類unix,安卓手機(jī)用的也是linux內(nèi)核,大部分服務(wù)器都是使用linux。
你們現(xiàn)在都手機(jī)不離手,每天都要上網(wǎng),你們說你們不是每天都離不開它~
unix的設(shè)計(jì)思想
你們現(xiàn)在知道unix這么厲害了,那它的設(shè)計(jì)思想絕對(duì)靠譜沒錯(cuò)吧。這里舍棄只適用于技術(shù)領(lǐng)域的設(shè)計(jì)原則,并“翻譯”部分原則成非軟件用語。完整的介紹可以查看維基上的條目。
do one thing and do it well
在軟件開發(fā)層面的意義是盡可能讓一個(gè)代碼模塊只做一件事情,把這件事情做好,然后把一個(gè)個(gè)小功能組合起來實(shí)現(xiàn)大功能。打個(gè)比方,把“泡茶”這件事情拆分成“燒開水”、“找茶葉”、“放茶葉”、“倒水”這樣4個(gè)功能。這樣很好維護(hù),如果其中一個(gè)模塊沒做好,只要修改那個(gè)模塊就好,而且可以提高程序的復(fù)用性,比如“燒水”除了可以用于“泡茶”還可以和其他小功能組合成其他功能,例如“煮泡面”。
- 單一職責(zé)
一個(gè)模塊做一件事情,就叫單一職責(zé)。只做一件事情,就能把事情做的更好,而且模塊間的組合可以提高軟件的復(fù)用性。這是一個(gè)普適的道理,可以以很多角度去解讀。比如現(xiàn)代工業(yè)中,產(chǎn)品的生產(chǎn)環(huán)節(jié)被拆分成很多部分,每一部分的生產(chǎn)來源可能是世界各地。再比如,在企業(yè)管理中,讓每個(gè)部門每個(gè)組甚至每個(gè)人做職業(yè)明確專一的工作,職業(yè)劃分清楚,不僅可以提高專業(yè)度,也可以提高整個(gè)企業(yè)的協(xié)同效率,不會(huì)出現(xiàn)相互推諉的情況。
- 杠桿效應(yīng)
假設(shè)有A、B、C、D四個(gè)功能,那排列組合可以組成N個(gè)功能,這就是一個(gè)杠桿效應(yīng)。比如ABC串連可能形成一個(gè)功能A+B+C,對(duì)AB的結(jié)果進(jìn)行C操作又可以形成一個(gè)功能C(A+B)。只要職責(zé)清晰,雖然每個(gè)功能很小很專一,但是組合起來就可以無限的可能。如果你掌握A技能,同時(shí)掌握B技能,它們組合起來就可能給你創(chuàng)造很大價(jià)值。例如你英語很好又善于投資,早幾年看到了看到了國(guó)外的比特幣的資料,然后隨便買了幾千,現(xiàn)在就財(cái)務(wù)自由了...
- 一生只做一件事
日本人的制造業(yè)世界一流,有很大部分原因在于他們做事的專一程度。很多日本人,一輩子只做一件事,做飯的做一輩子飯,做手表的做一輩子手表。一生或者一個(gè)階段只做一件事,對(duì)于大部分人或者組織來說都是做好事情的必須。前段時(shí)間我有一個(gè)習(xí)慣培養(yǎng)計(jì)劃,一下子寫了很多個(gè),結(jié)果發(fā)現(xiàn)顧此失彼,后來直接刪到只有一個(gè),我花一年時(shí)間能養(yǎng)成一個(gè)好習(xí)慣,其實(shí)完全值得。
簡(jiǎn)單即是美
這個(gè)在程序開發(fā)里的意思是盡量避免不必要的復(fù)雜性,例如接口簡(jiǎn)單易用。KISS,即Keep It Simple & Stupid。在程序開發(fā)上,這樣可以提高程序的使用成本。在類unix系統(tǒng)中,各種文本都是小寫為主,而且有簡(jiǎn)寫。例如ls
是list
的意思,但它還可以寫的更簡(jiǎn)單,一個(gè)l
就夠了。這個(gè)設(shè)計(jì)思想其實(shí)和喬布斯對(duì)蘋果產(chǎn)品的定義也是一樣的。沒有多余的信息和操作,只保留最精簡(jiǎn)最核心的點(diǎn)。蘋果產(chǎn)品的設(shè)計(jì)無論是硬件還是軟件都是盡可能簡(jiǎn)潔。這個(gè)思想可以在平時(shí)的創(chuàng)作、溝通表達(dá)等等不同角度去應(yīng)用。例如你可以在寫PPT、工作報(bào)告時(shí)不要太花哨,重點(diǎn)突出,少無價(jià)值信息的修飾,刻意精簡(jiǎn)生活用品數(shù)量,衣服太多每天還得糾結(jié)串哪件~
90%的解決方案
沒有100%完美的方案,99%完美度的方案的成本很可能是90%的幾倍。所以不追求100%,如果一個(gè)方案可以解決問題的90%,那就可以了。打個(gè)比方,如果你上網(wǎng)想買個(gè)椅子,花10分時(shí)間你看到一款還行,那你就把它買下。也許你花點(diǎn)時(shí)間可以找到質(zhì)量更好價(jià)格更便宜的,但你很可能為此付出幾個(gè)小時(shí)時(shí)間。100%和90%的差距并不大,而更好的椅子可能只是便宜幾十塊,質(zhì)量好點(diǎn)但是并沒有打區(qū)別,但你卻為此付出了2小時(shí)。
結(jié)語
專一、單一、簡(jiǎn)單、不追求完美,這些思想都是概念上的,大家可以腦洞大開,看看還能有什么應(yīng)用。