前不久了解到一個來自日本的生活理念 Wabi-Sabi,國人喜歡把它翻譯成「侘寂」。 可以用一句話來概括 Wabi-Sabi:「接受事物的演變過程,以及過程中的不完美」。
一位香港的禪師曾講:「如果你在工作、生活中是個完美主義者,那一定會活得很累。」確實如此,接觸了這個理念之後,我對公司的事情也開始沒那麼執著了。以前我是發現一些不對勁的地方,就一定要踩剎車。
踩剎車沒問題的,但執著於讓事物按照自己的期望去發展,希望能控制一些事情,這樣不僅公司很累,我自己也很累。黃仁勳說:「如果你希望控制一切,應該要找精神科醫生。」
同事跟我說:「其實老闆們也不是聖人,他們也會犯錯,也有看走眼的時候。」這種看似簡單的道理,身處局中的人往往需要經受無數次「踩剎車」的疲憊後,才能真正撞破這堵牆。
機器有故障的時候,人總會犯錯,更別說組織了。段永平說:「蘋果也會犯錯,但是蘋果的企業文化讓他們有糾錯機制,錯了能調整回來,那就可以了。」 偶爾走錯了不要緊,能糾回來就好。結合 Wabi-Sabi 理念還有段永平的語錄,我發現最近很多事情都看開了不少。
Wabi-Sabi 理念能否放在軟件工程上呢?我覺得可以的。最近回流正在做分倉系統,這個系統極其龐大,我們砍了又砍,發現工作量依舊還是很大。 我們希望打造一個十分的東西,但可能要 1~2 個月才能出來,到時候業務同學的期望值就不好控制了,還會影響業務運作。
如果我們能接受 1~2 週先出一個五分的東西,先應付現有的場景,後續再慢慢做到十分,體感將會完全不同。只是這種方案可能代碼不會很優美,架構靈活性也不夠高,唯一的好處就是開發週期短。然而這樣一來其實工作量可以少很多的,而且可以更快地支持到業務的工作。只要我們能接受工程上的一些不完美,流程上的一些不完善。
曾經我以為優秀的程序員是追求完美無瑕的古典雕塑家。但現在看來,真正厲害的工程師更像 Wabi-Sabi 筆下的匠人——他們理解材料(時間、業務、技術積累)的局限,不追求一步到位的宏大敘事,而是交付一個有生命力、能隨時間演進的系統。
後面我讀到了輝達的故事。強如輝達的 CUDA 平台早期的代碼質量也是很堪憂的。那時候時間緊迫,黃仁勳他們必須要快速迭代,否則公司就無法存活,這種時候可能就很難兼顧代碼的美感以及工程規範了。
但是輝達「活下來」之後,還是會抽出時間去優化原來的工程代碼,最終達到了一個良好的平衡。也正如段永平說的:「你最終會成為,你本該成為的那個人。」
現在回流的分倉業務已經同步跑起來了,如果我們能找到折衷的方案把業務支撐起來,緩解各個環節的工作壓力,比起什麼工程優美要重要得多。 系統還會繼續演化,早晚能達到我們預期中十分的那個狀態,但是在這之前,還是先接受一個五分的版本。
目前我對 Wabi-Sabi 的了解還是比較粗淺的,這是我所理解 Wabi-Sabi 理念在軟件工程的應用。如果我們不追求完美,接受事物的演變過程,大夥的工作、生活或許都會輕鬆一些。
夜雨聆风