之前有思考過:
“懂得很多道理,依然過不好一生”到底是哪裡的問題?聽過不同的答案,如:停留“知道”的舒服區、別人道理未必適用自己、甚至能力欠缺等諸如此類的回答。
後來發現這是「工程問題」。
把每個道理嚼碎如同把手機拆開瞭解每個部件一樣,若把手機再裝回去不能做到瞭解就夠,還要親自實驗一遍。
不過歷史告訴我們,就算不懂原理依然可以造出手機,技術和工程都跑在科學前面。
不信你幻想下,幾百年前沒有優質教育體系時,四大發明如何出來的?
再把視角轉向商業,中底層員工往往“經濟金融類出身”較多,而核心高管團隊總有幾個理工科人士;他們思維有什麼區別?
文科生邏輯更擅長從原有特征推演分析做決策,理科生更講究遇到問題客觀看待事物、從根本上進行改變,這背後直接影響到“公司的運作效率”。
就連百度創始人李彥宏,在新工科技論壇上也曾說:每個人都要具備工程思維,這也是許多畢業生的短板,要深度瞭解它不妨從“軟件工程”說起。
01
工程思維是什麼
市面PM、開發、測試以及運維所做的工作均屬於軟件工程「代碼080902」,是現在大學主流的專業之一;學習內容包括數據結構、算法、人際交互、需求分析等模塊。
在英文環境中,工程(engineering)的檔次要比科學(science)低很多,為什麼?
主要原因是,軟件從誕生之日起一直解決不好「交付問題」,即:項目不能按照履約時間、質量、成本完整交給客戶。
為解決此疑難雜癥,1968年10月北約科技委員會的專題會上,思考者們才真正提出“軟件工程”的概念,它是什麼呢?用軟件的手段去滿足客戶需求嗎?並非如此。
方便理解,舉個例子:
在某工廠包裝車間產品線經常出現“漏裝問題”,客戶收到貨後打開包裝一看是空的。
於是負責人找專傢詢問解決辦法,專傢建議裝上監控系統,通過視頻識別操作就不會出現此現象。
得知改造下來需要百萬費用,廠長當場掀桌子決定「內部開會解決」,有位老師傅說很簡單:
我們隻需通過測量產品重量,然後在流水線最後裝個大型吹風機,把它設定到相關風力即可。
若包裝盒被吹跑證明就是空的,若沒有則是完整的,眾人怒贊得到老板賞識。
據此,工程的目的是客戶需求的問題,至於解決的手段,隻要在限定條件內是否用軟件顯得並不是那麼重要。
計算機專業中,清華大學出版的教科書《軟件工程—理論與實踐》開篇談道:
一位計算機芯片從業者認為代碼是解決芯片問題的唯一辦法,但一位軟件工程師,隻不過把軟件當做滿足客戶需求的其中一個辦法唯一。
所以,工程學指滿足客戶需求為目的的一門學科,而非單純的開發軟件。
它需要將客戶的需求捕捉、分析、進行定義,並給出整體的系統需求,並分解各子系統;直到每個細節的需求可以由一個現有的組件直接滿足,或通過修改滿足。
而工程思維最大的特點是“要把事情做成”,也就是可交付、可使用、並做到開源節流”。
換個視角來看定義:
特斯拉、SpaceX創始人埃隆·馬斯克(Elon Musk)並非是技術工程天才,從他創業發展史可看出橫跨三大領域(互聯網、清潔能源、太空)。
似乎三者並沒有直接聯系,為什麼能夠如此遊刃有餘呢?主要有兩大要素:1)工程思維,2)第一性原理
在某采訪中有人問他,制造火箭降低成本這件事NASA那麼多專傢都沒做到,為什麼SpaceX能完成,他回答說“我想,是因為他們資源太多瞭”。
這如同他優化特斯拉電池組一樣,首先思考該目標是否可能,其次從商業和第一性原理出發,再研究電池的材料的組成部分。
進而通過可操作路徑想辦法找到這些材料,然後逐步壓縮每個材料的成本,最後組裝完成就擁有更便宜的電池。
也就是說,他認為每件產品(項目)依賴於結構,我們隻需在封閉的結構中不斷得拆解、類比、優化、模仿就能把它完成。
再比如說:
某航空公司做瞭一個關於顧客體驗的調研,詢問他們有什麼期待?得到的結果是期望早點兒到達目的地,或提高安檢、托運的時間。
幾個專傢視角給出的答案均不同,空氣動力學傢認為,前者如何讓飛機飛得更快,涉及到動力以及元件的整體改造問題,後者需要優化安檢與托運流程。
但系統工程給出的答案是,解決快的問題,要從去機場、找停車位、安檢、托運整體進行優化。
對比上述中廠長優化流水線的事件,你會發現也有擁有同樣規律,老師傅基於封閉狀態節省成本的條件,拆解環節查漏補缺來解決根本問題。
谷歌早期用互聯網做地圖並沒有效仿的人,它也是典型軟件工程思維。
在封閉任務中用克服種種困難,把每條段路精確到厘米級別,然後用激光掃描避開路面障礙,以便車子開的過程中瞭解路況。
說到這裡,幻想下那些互聯網當紅的企業傢們,無疑均為工程思維運用的高手,阿裡的王堅、今日頭條的張一鳴、美團的王興,甚至華為的任正非。
他們善於預判並在沒有結構的情況下「預見結構」,並進行通盤頂層設計,然後從第一性出發來改善根本要素。
明白工程思維,把視角拉高也能理解眾多社會問題,比如:
現在可以看到2035年北京地鐵規劃圖,2030年碳達峰的行動方案和能源綠色低碳發展制度;這種可預測能力不正是每個普通人(企業)應該學習的嗎?
02
工程思維三要素
結合中信出版社,經濟管理類書籍《轉向:用工程師思維解決商業難題》,我總結發現工程思維有三大特點:
1)找到結構,2)約束性設計,3)懂得取舍
首先在沒有結構的情況下,第一個特點是工程師能從初步的概念到構想,看到潛在的結構。
也就是說不僅關註看得見的事物,也包括看不見的事物;並非空於幻想,而要結合實際做演繹。
他要考慮系統中各個元素,怎麼在邏輯、時間、順序以及功能方面進行有效鏈接,並分析元素在哪些條件下能夠起作用,哪些條件下不起作用。
例如:牛頓的經典力學理論是建立在“科學觀”上。
以若幹基本的公理(原理)為基本假設做推導;公理無法佐證部分通過嚴謹的邏輯分析得到若幹定理,從而不斷對理論體系進行完善。
假設通過觀察、實驗等手段得出的證據符合結果,我們對驗證越有信心;但若出現結果不符的地方,進而看看是否推導錯誤然後進行修補。
此類案例有很多:
瓦特基於“經典力學”發明(改造)瞭蒸汽機,計算機科學之父艾倫·麥席森圖靈1936年提出《論數字計算在決斷難題中的應用》,多年後工程師基於此發明瞭計算機和智能手機。
換言之,世界依賴於結構;有經驗的工程師能在看似一團亂麻的事物中找到合理性的結構,在產品誕生前預判到成熟的全貌。
其次,正如“無規則的邊界的自由”不叫自由,無約束的工程也不能成為工程一樣,工程會遇到各種條件性的限制,如時間不夠、資金不足等。
那麼第二個特點是「在有約束的狀態下」也要更好得完成目標,甚至說沒有約束狀態,也要形成自驅動力。
好比2020年黑天鵝事件(COVID-19),原本正常狀態下兩年才能完成的雷神山醫院,從方案設計到建成交付僅用10天時間,被譽為“中國速度”;該工程最大的約束條件是“時間”。
正因如此,反過來看約束條件是某些創造性項目的動力,運用到企業場景,假設產品開發中拿到一個開放需求,你很難想象出最後產品成為什麼模樣。
尤其對菜鳥工程師、產品經理來說不懂得自帶約束條件,過程中牽扯出來眾多雜亂問題,如:
UI設計太差、用戶需求沒搞清楚、流程有多重方案、任務太多時間不夠……..
這造成,永遠開不完的會,解決不瞭的細節讓自己身心疲憊;我看到很多個人在做任務時有此類現象,公司也同樣,根本原因隻怪「不會設計約束性條件」。
再者第三點和取舍有關系,若把約束性比作走鋼絲,那取舍便是在可行性、可能性、可期待性的交叉拔河;你也可以把它理解成“魚和熊掌不可兼得”。
如同:
新能源和電子行業,一款產品研發過程中熱設計工程師要和結構、軟件工程師以及PM之間相互溝通,多數情況下就不得不做出取舍。
在圖紙的具體位置上,甚至犧牲掉軟件的散熱部分或者壓縮電池整體空間,以保證產品系統穩固性。
因此,「取舍什麼」是工程師具體的能力體現,建立該關鍵不僅表現在如何設計重點,還要研究資源分配的問題,甚至將弱目標從強目標中抽絲剝繭出來。
一方面工程師思維的框架我認為是系統思維,而不是單一技術或產品能力。
另一方面他是種「形而上謂之道」的能力,從技術到「找到結構」的建立比單個解決問題的方法論更有普適性意義。
總而言之,結構、約束、取舍三者是工程思維的法寶,在互聯網時代它被一些線性的概念蒙蔽,比如:產品思維、項目思維均屬於屬於此大類。
很多人沒有把它用明白的關鍵要素在“後兩者”,若你能在擁有目標、結構的前置條件下,增加約束力懂得取舍,會發現「完成」的效率會大大增加;
這當中對於互聯網公司的產品人來說,並不是那麼容易完成某個項目的原因是什麼呢?
我把它總結為四個字「忽悠思維」,很多軟件公司銷售為沖刺業績,習慣對客戶“畫餅”,承諾些產品本身還未做到的功能。
客戶付款後整個交付轉移給瞭研發團隊,最終完成的產品縫縫補補、如老人步履蹣跚的樣子,客戶怎麼會滿意?
那麼全局思考下來,你會發現不論是「預判結構」還是「約束性」的設計,兩者本身背後代表的是“組塊”創新的能力。
03
工程本身是組塊
此話怎講?組塊(chunk)是人類信息加工中最重要的形式之一;概念是米勒(G.MilJer,1956-1963)提出,主要分為動態和靜態兩種。
早些年用在工作記憶中,他註意到某一工作記憶未在10秒內復誦便會消退,同時保存容量最多為7±2個單元。
從動態視角看,人通過幾個相關的小項目整合成為一個大項目,減少基礎塊數,從而將信息控制在記憶(物理空間)所容許的范圍內。
從靜態視角看,它是一個名詞,具體指重新編碼的結果或輸出單位,為便於區別在英文中通常把前者稱為“chunking”,將後者稱之為chunk。
俄裔美籍作傢“弗拉基米爾·納博科夫”(1899-1977)提出的卡片寫作原理與工程師思維的核心“模塊化系統思維”均屬於「組塊」。
他們均指出這不是一項單一的才能,而是技術與原則融合;原因是:
一個系統因各模塊之間的關系而成為一個整體,它們不能通過單獨的分析各組成部分就能理解的。
人的神經元也是種組塊,在光學顯微鏡下可以看到一個神經元的軸突末梢經過多次分支,最後每個分支的末端呈現杯狀或球狀。
這猶如,你學習的知識,慢慢形成聯結均來源自於「神經元組塊」。
另外,早些年美國行為心理學創始人華生基於此概念,曾向政府提出一個訓練實驗的要求,他說若給我10個健康嬰兒,通過訓練,我可以將他們培養成優秀學者、藝術傢。
人們覺得很荒謬,最終沒有完成該實驗;若幹年後一位匈奴牙的心理學講師,對他提出的實驗非常感興趣。
然後與他的妻子圍繞三個女兒進行培養,最後造就瞭三個女性國際象棋冠軍,這便是著名的「波爾加三姐妹實驗」。
如果你瞭解該原理,進一步看世間萬物均存在“組塊”的現象;隨便舉個例子,如拿書架取書的動作就包含四種組塊:
1)確認位置,2)手抓書脊
3)控制力度,4)取出路徑
每個步驟都是小迷你塊,假如要做一個取書的智能機器人,那隻需把每一個小組塊(活動)編寫一個程序,然後整合創新即可。
要知道程序背後是函數,函數是邏輯塊,邏輯塊是通用代碼,用計算機將每個模塊標準化,最後串聯就能得到想要的結果。
就像學開車,老司機看到“紅燈”就自然而然完成一系列相關動作;新手則需一個個動作分解來做。
好比你在工作中遇到的問題看似連貫,實則包含多個部分,對有經驗的人而言,他們不會一手抓多個組塊,而是整體分析後從某個組塊下手。
可見,在認識自然和文明發展的過程中,組塊思想與方法無處不在;芯片是組塊,談判策略是組塊,笑臉是組塊,地鐵是組塊,地圖是組塊……..
要是沒有組塊的思想也不可能制作成每件衣服,建起一座橋梁;當然也不會有傢庭,這些組也不過是“形式與內容”的不同結合罷瞭。
因此,對照自我,你可以思考下自己的工作技能,所需軟能力是不是組塊呢?除外表部分外,哪些薄弱是不是把它拎出來找到規律刻意練習就能解決呢?
總而言之,工程的本質是實現。
組塊化應用是把一個復雜問題自頂而上逐層把“系統”分成若幹模塊的過程,有多種屬性分別反應內部特征。
如,典型的低代碼平臺把常用的功能都封好,像樂高一樣,讓使用者快速配置;它追求以價值為導向,並用「建構性的思維以求效率」來創造價值。
04
工程思維的運用
明白這些原理,如何把工程師思維應用到日常工作或學習上呢?我把它大致分為三個方面:
1)預見未來的結構
它分為「結構力」和「預見」兩個層面,也許你會把前者理解成各種思考模型,如5W2H原則、金字塔、黃金圈理論等,其實工程中的結構有部分“科學”元素。
在這裡有什麼不同呢?
科學傢“仰望天空”居多,很少屑於實際運用;主要闡述認識規律,發現規則;好比你經常看到科學發現新地球、海嘯、巨大恒星等。
而工程講究「腳踏實地」,將發現的原理轉化並實際幹出來。
也就是,在過程中首先要尊重科學規律,考慮多因素實際所存在的結構,再精益求精的持續改進。
對「預見」,最接近的兩個詞匯是“使命”或“夢想”。
埃隆·馬斯克對火星的迷戀我相信絕對不會是因為科幻小說的影響,而是他認為自己聚合頂尖技術人才,然後又懂商業投資,加上使命的火花,才讓他走上SpaceX的道路。
據此,作為普通人對我們有什麼幫助呢?你不妨思考下自己的使命,夢想是什麼?
也許比較天馬行空理想主義,嘗試把它量化成目標,思考有沒有可能變成實際動作;隻要勤快,拆分下大概率可以實現。
比如:工作很久的你想成為某個領域專傢,也許隻需花1-2年的時間深度學習理論知識,然後結合自我最新認知,通過不斷分享就會被人發現,不一而論。
2)約束內找到組塊
盡可能在具體的時間,約束內交付出明確“規模”的結果,相比科學研究就沒有這些限制。
因為在開始,他們就不知道具體方向在哪裡?例如:直到到今天,人類也無法統一相對論、量子力學。
結合自身,我覺得擁有清晰的目標後,第一步的困難是「最後期限」原則,很多人的未完成均結束在時間、精力的管理層面。
假設能克服這一步,接下來要考慮「組塊」的環節;要嘗試找到形成該結構的最小單元,部分人停滯不前是沒有找到組塊和串聯,最後盲目的付出把精力耗盡。
比如:談鋼琴有組塊、寫作、玩音樂更是相同。
《故事工程》的作者拉裡·佈魯克斯認為,寫作這類看似有靈感的事情都可以采用工程思維設計,它用工程構建的方式將故事創作分為6大核心技能:
1)立意,2)人物,3)主題
4)結構,5)場景,6)風格
對於普通人所有的一切均可以「公式化」,為保證品質你可以多做幾個備份來;查理·芒格在《窮查理寶典》中把它稱為冗餘模型(Backup Systems)。
3)平衡當中做取舍
取舍的根本是什麼呢?在工程思維中講究“第一性原理”,也就是你基於未來結構的頂層設計。
若說組塊是框架中的血液,那取舍關鍵就是你的「框架」如何設計;這個框架怎麼來呢?我把它總結成「舊系統」。
試想下,你想做的事情或達到的狀態,以前有沒有人完成?找到並把他設計成動態對標品;私下研究三個方面:1)學習路徑,2)職業發展,3)成功階段
美國神話作傢“約瑟夫·坎貝爾”在20世紀50年代出版的《千面英雄》把人的經歷分為三個階段,分別是離群所居 ( separation) 、經驗考驗 ( ordeal) 、復歸本源( return) 正是對應此模塊。
把發展路線提煉出來之後,要做是「優化舊系統」,如:第二個階段你看到對標的人用三年經歷從經理做到總監,那在此方面自己有沒有更快的辦法呢?
所以不局限在表面的細枝末節,挖掘背後隱藏的路徑和機制才是根本,真正的工程思維是要「解構舊系統」,組合創新「新系統」。
05
總結一下
使命的驅動、頂層的框架設計、組塊化的SOP。
這種全局觀加上約束內的反饋機制,才是普通人值得學習的工程師思維。
回到文章開始,為什麼學過很多道理,依然過不好一生?
因為「那個道理」背後的系統你沒有躬身入局,所以聽瞭也沒用,想想看不是嗎?