直擊靈魂:軟件研發的第一性原理與10倍效能
最近馬斯克(Elon Musk)要收購twitter,鬧得滿城風雨。
國內某些虧損嚴重 (如今年虧損800多億、去年是1166億,甚至超過一年收入) 的大廠,更應該設法讓 馬斯克收購。
為什么這么說呢?因為一旦大廠被 馬斯克 收購,大廠的研發效能可以提升十倍、幾十倍,員工可以裁掉50%甚至90%,這樣很快就能轉虧為盈。
這是因為馬斯克 第一性原理用得非常好 ,10倍效能提升是大概率事件 。 如果一般人的目標是在現在的基礎上改進10%,馬斯克的目標就是在現有基礎上做到10倍。《連線》雜志的Jack Stewart 發現: 如果一件事 ,在馬斯克的世界里用1年完成,到了別人的世界就要7~8年。 例如,馬斯克創立的 SpaceX公司獵鷹9號火箭,不僅能回收,而且復用周轉時間降到了21天,一次能發射53顆“星鏈”衛星,SpaceX 火箭發射的成本只是 60 年代俄羅斯聯盟號的成本的3%(即1/30)。還有,2017年馬斯克創立了boring公司,兩年不到的時間,就在舊金山建成了總長1.83公里的隧道。如果按照傳統的地鐵方式挖掘預估成本是11億美金,而boring公司的施工成本僅為1000萬美金,僅為百分之一。
言歸正傳,開始討論下面4個問題:
- 第一性原理其實是一種思維方式
- 軟件研發的第一性原理是什么?
- 在軟件研發中,如何用好第一性原理?
- 用好第一性原理帶來的收益?
1. 第一性原理 其實是一種思維方式
最早提出第一性原理思維的人是古希臘偉大的哲學家亞里士多德,把它定義為“ 認知事物的第一基礎 ”,而著名的法國哲學家、數學家笛卡爾將其描述為 “ 系統性地懷疑一切值得懷疑的事物,直到你獲得無可置疑的真相 ” (類似批判性思維) 、 維基百科的定義為: 從基本的定律出發,不外加假設與經驗擬合的推導與計算 。 第一性原理 常被延伸為 “ 回溯事物本質, 敢于懷疑過去的設定、打破過去的認知 ,通過演繹法推導,最終得出新的結論 ”,所以可以說, 是認知事物的哲學思想,也就是分享與解決問題的思維方式 。
不管哪個領域,其事物都存在其本質的東西,正如老子說 "人法地、地法天、天法道、道法自然"。所以,我們要回到事物的本質上,就是要回到自然法則上,回到物理規律上,從而 抓住事物最本質的特征,依據事物固有特性去推導、分析、演繹事物的變化規律,進而洞悉事物在不同場景下的表現形式,而不是 隨大流 、人云亦云,不會只看到事物的表面現象,不會生搬硬套別人的制度、流程和經驗,不會在復雜環境中、不確定因素影響下迷失了自己前進的方向。
例如,電池作為新能源汽車的核心部件,成本占整車的比重很高。為了降低特斯拉的電池成本, 馬斯克的邏輯是,“我不管現在的電池有多貴,我就回到本質問自己一個問題:電池的硬性成本構成是怎樣的?無論如何也減不下去的成本是什么?無非就是鐵、鎳、鋁這些金屬, 除了購買這些金屬的成本是絕對降不下去的,剩下來的成本都是人類協作過程中產生的,那就有優化的空間 ?!?/span>
第一性原理思維直擊 事物本質,產生的效果就大不一樣。正如 Google X實驗室主管泰勒就說:“ 嘗試做一樣新東西,不外乎那么兩種風格 ,一種是小幅變動,比如工藝改進、造型優化等,這時往往得到只有10%的改進;但如果要獲得真正的巨大革新( 10倍的改進 ),一般來說你就得重新開始,嘗試完全不一樣的方式,必須打破一些基本的假設?!?nbsp; 甚至硅谷流行這樣一種觀念: 把一件事情做到10倍好,比做到10%要容易得多 。
循序漸進式的進步依靠的是苦干、更多的資源,而10倍的進步則建立在勇氣和創造力之上,靠的是第一性原理的思維方式,是 巧干。
2. 軟件研發的第一性原理是什么?
“ 第一性原理 ” 自 2017 年馬斯克在采訪中被提及后,最近幾年在互聯網和投資圈流行,但在軟件研發中思考得不夠。
軟件研發的第一性原理是什么?
一般來說,先要思考和軟件研發相關的一些基本問題,例如:什么是軟件? 為什么要開發軟件?軟件是如何開發出來的?軟件從哪里來、到哪里去?
例如: 軟件 = 程序 + 文檔 = 數據結構 + 算法 + 文檔 ,讓抽象的軟件變得更加具體了,軟件的開發轉化為數據結構和算法的設計與實現、文檔的編寫。一個軟件的交付, 數據結構和算法 是不能省的,但 文檔 是可以省的,盡可能簡潔。當軟件設計簡單、UI界面非常友好,就不需要什么用戶手冊,今天絕大多數App沒有在線幫助(文檔)。
軟件是如何開發出來的?簡單地說,通過需求定義、設計和編程、測試、集成構建起來的,哪個環節可以省去?哪個環節有最大的優化空間?按某些管理者的習慣性思考,任何環節都不可去掉,甚至有的 管理者 還說,每個環節都沒什么優化空間了,我們已經優化得很好了。真的是這樣嗎?
軟件其實就是團隊之間、團隊內部研發人員之間協作 開發過程 中產生的,正如馬斯克所說,“ 剩下來的成本都是人類協作過程中產生的,那就有優化的空間”, 而且 比爾蓋茨還說過 “一個杰出的程序員的價值是普通程序員的一萬倍” 。 所以軟件研發的各個環節就有優化空間,這也是為什么Amazon團隊要招最好的人,并追求2-piece pizza這樣的小團隊。人力成本在軟件研發成本中占的比重很大,“ 人員優化”是最值得去做的 。
軟件研發的第一性原理 : 軟件研發是人的智力活動,人是決定的因素,所以在 軟件研發中需要優化與人相關的一切活動 ,包括個人能力和團隊協作。
3. 在軟件研發中,如何用好第一性原理?
從第一性原理出發,要優化人員,首先就要優化待開發的軟件本身 。正如,我在給學生講解敏捷開發模式時,強調 “研發組織分解” 或 “建立小團隊”的前提是:待開發的系統能夠分解。系統分解得越干凈,小團隊才能更獨立地工作,工作效率才越有保證。這也是為什么 今天 微服務、serverless 很流行。系統的復雜性取決于業務的復雜性,如果業務很復雜,軟件系統用什么架構(微服務、serverless等)都沒用,這時就必須進行業務重組、業務變革或業務架構的優化。雖然業務驅動研發,但業務不是一成不變的,一定是可以改變的,我們要勇于打破業務慣例,大膽革新。
從第一性原理出發,在業務和軟件本身優化之后,我們可以開始 優化軟件研發的各種活動,砍掉一些不必要的環節,把一些環節交給工具或機器人去做,進而可以優化組織和團隊。 例如:
- 需求可以自動采集嗎?如構建用戶反饋系統,自動收集用戶需求;
- 借助知識圖譜、機器學習等進行需求分析和提煉;
- 構建需求模型,自動生成代碼;
- 編程輔助機器人自動補充代碼、實時代碼檢查分析等;
- 封裝成標準組件、原子服務等;
- 利用JVM、容器技術,減少對環境的依賴;
- 集成了自動化測試、自動化部署的交付流水線
- ......
人多了,其實往往是壞事 ,正如樊登在其《低風險創業》一書中說,如果創業時錢多不是好事,因為錢多就猛招人、大做廣告、買流量等,表面上看,不好的產品銷售不錯,會給自己錯覺,覺得開發出來的產品是好產品,但最后錢燒光了,產品賣不出去了,還要裁人。創業時錢少,就不會花精力在營銷上, 而 是 能省則省,踏踏實實做產品,靠產品功能和質量贏市場。
道理相通 ,軟件研發中,一旦人不夠,如果我們就喊缺人、招人,我們就不會去努力思考如何優化工作、如何減少不必要的浪費等。如果不招人,我們就會朝思暮想去優化工作,反而帶來很高的效能。
當然,我們并不反對人多力量大,但 如何有效分配人力,精準使用人力,也是研發效能更高的目標 ,如我軍著名的 三三制戰術 (非人海戰術,它也被美國西點軍校奉為經典戰術之一) ,起源于 抗日戰爭,成熟于解放戰爭, 大量運用于 抗美援朝中,發揮我軍人數上的優勢,降低敵軍武器上的優勢。
概括起來,軟件研發有許多地方可以進行創新, 從第一性原理出發 , 軟件研發降本增效的基本要點是 :
- 優化與人相關的一切活動 (包括人與組織 )
- 把 招對人 、培養人的能力放在第一位,盡量 少招人
- 做正確的事 ,以終為始,從客戶真實需求出發構建軟件
- 從業務架構、系統架構開始,內建質量, 追求極致的簡約
- 如果能讓工具做的事情,盡可能讓工具做
- 盡可能標準化、組件化、原子化、服務化。
更多內容,也可以參考: 軟件研發效能的底層邏輯 。
4. 用好第一性原理帶來的收益?
用好了第一性原理出發,就能達到“10倍效能”, 其實不一定能達到10倍效能,“10倍效能”只是一個代名詞(思維方式),是指高效能,可能是2倍、3倍,也有可能是20倍、30倍。即使是2倍效能,也很好了。想想像騰訊、阿里這樣的大廠,效能能翻一倍,那將是奇跡。
我們期待奇跡發生,相信奇跡能夠發生。