何為工程師思維?

何為工程師思維?

之前有思考過:“懂得很多道理,依然過不好一生”到底是哪裡的問題?聽過不同的答案,如:停留“知道”的舒服區、別人道理未必適用自己、甚至能力欠缺等諸如此類的回答。

後來發現這是“工程問題”。

把每個道理嚼碎如同把手機拆開了解每個部件一樣,若把手機再裝回去不能做到了解就夠,還要親自實驗一遍。不過歷史告訴我們,

就算不懂原理依然可以造出手機,技術和工程都跑在科學前面。

不信你幻想下,幾百年前沒有優質教育體系時,四大發明如何出來的?

再把視角轉向商業,中底層員工往往“經濟金融類出身”較多,而核心高管團隊總有幾個理工科人士;他們思維有什麼區別?文科生邏輯更擅長從原有特徵推演分析做決策,理科生更講究

遇到問題客觀看待事物、從根本上進行改變,

這背後直接影響到“公司的運作效率”。

就連百度創始人李彥宏,在新工科技論壇上也曾說:每個人都要具備工程思維,這也是許多畢業生的短板,要深度瞭解它不妨從“軟體工程”說起。

工程思維是什麼

市面PM、開發、測試以及運維所做的工作均屬於軟體工程“程式碼080902”,是現在大學主流的專業之一;學習內容包括資料結構、演算法、人際互動、需求分析等模組。

在英文環境中,工程(engineering)的檔次要比科學(science)低很多,為什麼?

主要原因是,

軟體從誕生之日起一直解決不好“交付問題”,

即:專案不能按照履約時間、質量、成本完整交給客戶。

為解決此疑難雜症,1968年10月北約科技委員會的專題會上,思考者們才真正提出“軟體工程”的概念,它是什麼呢?用軟體的手段去滿足客戶需求嗎?並非如此。

方便理解,舉個例子:

在某工廠包裝車間產品線經常出現“漏裝問題”,客戶收到貨後開啟包裝一看是空的。於是負責人找專家詢問解決辦法,專家建議裝上監控系統,透過影片識別操作就不會出現此現象。

得知改造下來需要百萬費用,廠長當場掀桌子決定“內部開會解決”,有位老師傅說很簡單:我們只需透過測量產品重量,然後在流水線最後裝個大型吹風機,把它設定到相關風力即可。若包裝盒被吹跑證明就是空的,若沒有則是完整的,眾人怒贊得到老闆賞識。

據此,

工程的目的是客戶需求的問題,至於解決的手段,只要在限定條件內是否用軟體顯得並不是那麼重要。

計算機專業中,清華大學出版的教科書《軟體工程—理論與實踐》開篇談道:

一位計算機晶片從業者認為程式碼是解決晶片問題的唯一辦法,但一位軟體工程師,只不過把軟體當做滿足客戶需求的其中一個辦法唯一。

所以,工程學指滿足客戶需求為目的的一門學科,而非單純的開發軟體。它需要將客戶的需求捕捉、分析、進行定義,並給出整體的系統需求,並分解各子系統;直到每個細節的需求可以由一個現有的元件直接滿足,或透過修改滿足。

而工程思維最大的特點是“要把事情做成”,也就是可交付、可使用、並做到開源節流”。

換個視角來看定義:

特斯拉、SpaceX創始人埃隆·馬斯克(Elon Musk)並非是技術工程天才,從他創業發展史可看出橫跨三大領域(網際網路、清潔能源、太空)。似乎三者並沒有直接聯絡,為什麼能夠如此遊刃有餘呢?主要有兩大要素:1)工程思維,2)第一性原理。

在某採訪中有人問他,製造火箭降低成本這件事NASA那麼多專家都沒做到,為什麼SpaceX能完成,他回答說“我想,

是因為他們資源太多了

”。

這如同他最佳化特斯拉電池組一樣,首先思考該目標是否可能,其次從商業和第一性原理出發,再研究電池的材料的組成部分。進而透過可操作路徑想辦法找到這些材料,然後逐步壓縮每個材料的成本,最後組裝完成就擁有更便宜的電池。

也就是說,他認為每件產品(專案)依賴於結構,我們只需在封閉的結構中不斷得拆解、類比、最佳化、模仿就能把它完成。

再比如說:

某航空公司做了一個關於顧客體驗的調研,詢問他們有什麼期待?得到的結果是期望早點兒到達目的地,或提高安檢、託運的時間。

幾個專家視角給出的答案均不同,空氣動力學家認為,前者如何讓飛機飛得更快,涉及到動力以及元件的整體改造問題,後者需要最佳化安檢與託運流程。

但系統工程給出的答案是,解決快的問題,要從去機場、找停車位、安檢、託運整體進行最佳化。

對比上述中廠長最佳化流水線的事件,你會發現也有擁有同樣規律,老師傅

基於封閉狀態節省成本的條件,拆解環節查漏補缺來解決根本問題。

谷歌早期用網際網路做地圖並沒有效仿的人,它也是典型軟體工程思維。

在封閉任務中用克服種種困難,把每條段路精確到釐米級別,然後用鐳射掃描避開路面障礙,以便車子開的過程中瞭解路況。

說到這裡,想下那些網際網路當紅的企業家們,無疑均為工程思維運用的高手,阿里的王堅、今日頭條的張一鳴、美團的王興,甚至華為的任正非。

他們善於預判並在沒有結構的情況下“預見結構”,並進行通盤頂層設計,

然後從第一性出發來改善根本要素。

明白工程思維,把視角拉高也能理解眾多社會問題,比如:

現在可以看到2035年北京地鐵規劃圖,2030年碳達峰的行動方案和能源綠色低碳發展制度;這種可預測能力不正是每個普通人(企業)應該學習的嗎?

工程思維三要素

結合中信出版社,經濟管理類書籍《轉向:用工程師思維解決商業難題》,我總結髮現工程思維有三大特點:

1)找到結構,2)約束性設計,3)懂得取捨。

首先在沒有結構的情況下,第一個特點是工程師能從初步的概念到構想,看到潛在的結構。也就是說不僅關注看得見的事物,也包括看不見的事物;並非空於幻想,而要結合實際做演繹。

他要考慮系統中各個元素,怎麼在邏輯、時間、順序以及功能方面進行有效連結,並分析元素在哪些條件下能夠起作用,哪些條件下不起作用。

例如:牛頓的經典力學理論是建立在“科學觀”上。

以若干基本的公理(原理)為基本假設做推導;公理無法佐證部分透過嚴謹的邏輯分析得到若干定理,從而不斷對理論體系進行完善。假設透過觀察、實驗等手段得出的證據符合結果,我們對驗證越有信心;但若出現結果不符的地方,進而看看是否推導錯誤然後進行修補。

此類案例有很多:

瓦特基於“經典力學”發明(改造)了蒸汽機,計算機科學之父艾倫·麥席森圖靈1936年提出《論數字計算在決斷難題中的應用》,多年後工程師基於此發明了計算機和智慧手機。

換言之,世界依賴於結構;

有經驗的工程師能在看似一團亂麻的事物中找到合理性的結構,在產品誕生前預判到成熟的全貌。

其次,正如“無規則邊界的自由”不叫自由,無約束的工程也不能成為工程一樣,

工程會遇到各種條件性的限制,

如時間不夠、資金不足等。那麼第二個特點是“在有約束的狀態下”也要更好得完成目標,甚至說沒有約束狀態,也要形成自驅動力。

好比2020年黑天鵝事件(COVID-19),原本正常狀態下兩年才能完成的雷神山醫院,從方案設計到建成交付僅用10天時間,被譽為“中國速度”;該工程最大的約束條件是“時間”。

正因如此,

反過來看約束條件是某些創造性專案的動力,

運用到企業場景,假設產品開發中拿到一個開放需求,你很難想象出最後產品成為什麼模樣。

尤其對菜鳥工程師、產品經理來說不懂得自帶約束條件,過程中牽扯出來眾多雜亂問題,如:UI設計太差、使用者需求沒搞清楚、流程有多重方案、任務太多時間不夠……

這造成,永遠開不完的會,解決不了的細節讓自己身心疲憊;我看到很多個人在做任務時有此類現象,公司也同樣,根本原因只怪“不會設計約束性條件”。

再者第三點和取捨有關係,若把約束性比作走鋼絲,

那取捨便是在可行性、可能性、可期待性的交叉拔河;你也可以把它理解成“魚和熊掌不可兼得”。

如同:

新能源和電子行業,一款產品研發過程中熱設計工程師要和結構、軟體工程師以及PM之間相互溝通,多數情況下就不得不做出取捨。在圖紙的具體位置上,甚至犧牲掉軟體的散熱部分或者壓縮電池整體空間,以保證產品系統穩固性。

因此,“取捨什麼”是工程師具體的能力體現,

建立該關鍵不僅表現在如何設計重點,還要研究資源分配的問題,甚至將弱目標從強目標中抽絲剝繭出來。

一方面工程師思維的框架我認為是系統思維,而不是單一技術或產品能力。另一方面他是種“形而上謂之道”的能力,從技術到“找到結構”的建立比單個解決問題的方法論更有普適性意義。

總而言之,結構、約束、取捨三者是工程思維的法寶,在網際網路時代它被一些線性的概念矇蔽,比如:產品思維、專案思維均屬於屬於此大類。

很多人沒有把它用明白的關鍵要素在“後兩者”,若你能在擁有目標、結構的前置條件下,增加約束力懂得取捨,會發現“完成”的效率會大大增加。

這當中對於網際網路公司的產品人來說,並不是那麼容易完成某個專案的原因是什麼呢?

我把它總結為四個字

“忽悠思維”

,很多軟體公司銷售為衝刺業績,習慣對客戶“畫餅”,承諾些產品本身還未做到的功能。客戶付款後整個交付轉移給了研發團隊,最終完成的產品縫縫補補、如老人步履蹣跚的樣子,客戶怎麼會滿意?

那麼全域性思考下來,你會發現不論是“預判結構”還是“約束性”的設計,兩者本身背後代表的是

“組塊”創新的能力。

工程本身是組塊

此話怎講?組塊(chunk)是人類資訊加工中最重要的形式之一;概念是米勒(G.MilJer,1956-1963)提出,主要分為動態和靜態兩種。早些年用在工作記憶中,他注意到某一工作記憶未在10秒內複誦便會消退,同時儲存容量最多為7±2個單元。

從動態視角看,

人通過幾個相關的小專案整合成為一個大專案,減少基礎塊數,從而將資訊控制在記憶(物理空間)所容許的範圍內。

從靜態視角看,它是一個名詞,具體指重新編碼的結果或輸出單位,為便於區別在英文中通常把前者稱為“chunking”,將後者稱之為chunk。

俄裔美籍作家“弗拉基米爾·納博科夫”(1899~1977)提出的卡片寫作原理與工程師思維的核心“模組化系統思維”均屬於“組塊”。他們均指出這不是一項單一的才能,而是技術與原則融合;原因是:

一個系統因各模組之間的關係而成為一個整體,它們不能透過單獨的分析各組成部分就能理解的。

人的神經元也是種組塊,在光學顯微鏡下可以看到一個神經元的軸突末梢經過多次分支,最後每個分支的末端呈現杯狀或球狀。這猶如,你學習的知識,慢慢形成聯結均來源自於“神經元組塊”。

另外,早些年美國行為心理學創始人華生基於此概念,曾向政府提出一個訓練實驗的要求,他說若給我10個健康嬰兒,透過訓練,我可以將他們培養成優秀學者、藝術家。人們覺得很荒謬,最終沒有完成該實驗。

若干年後一位匈牙利的心理學講師,對他提出的實驗非常感興趣。然後與他的妻子圍繞三個女兒進行培養,最後造就了三個女性國際象棋冠軍,這便是著名的“波爾加三姐妹實驗”。

如果你瞭解該原理,進一步看世間萬物均存在“組塊”的現象;隨便舉個例子,如拿書架取書的動作就包含四種組塊:1)確認位置,2)手抓書脊,3)控制力度,4)取出路徑。

每個步驟都是小迷你塊,假如要做一個取書的智慧機器人,那隻需把每一個小組塊(活動)編寫一個程式,然後整合創新即可。

要知道程式背後是函式,函式是邏輯塊,邏輯塊是通用程式碼,

用計算機將每個模組標準化,最後串聯就能得到想要的結果。

就像學開車,老司機看到“紅燈”就自然而然完成一系列相關動作;新手則需一個個動作分解來做。

好比你在工作中遇到的問題看似連貫,實則包含多個部分,對有經驗的人而言,他們不會一手抓多個組塊,而是整體分析後從某個組塊下手。

可見,在認識自然和文明發展的過程中,組塊思想與方法無處不在;晶片是組塊,談判策略是組塊,笑臉是組塊,地鐵是組塊,地圖是組塊……要是沒有組塊的思想也不可能製作成每件衣服,建起一座橋樑;當然也不會有家庭,這些組也不過是“形式與內容”的不同結合罷了。

因此,對照自我,你可以思考下自己的工作技能,所需軟能力是不是組塊呢?除外表部分外,哪些薄弱是不是把它拎出來找到規律刻意練習就能解決呢?

總而言之,

工程的本質是實現。

組塊化應用是把一個複雜問題自頂而上逐層把“系統”分成若干模組的過程,有多種屬性分別反應內部特徵。

如,典型的低程式碼平臺把常用的功能都封好,像樂高一樣,讓使用者快速配置;

它追求以價值為導向,並用“建構性的思維以求效率”來創造價值。

工程思維的運用

明白這些原理,如何把工程師思維應用到日常工作或學習上呢?我把它大致分為三個方面:

1)預見未來的結構

它分為“結構力”和“預見”兩個層面,也許你會把前者理解成各種思考模型,如5W2H原則、金字塔、黃金圈理論等,其實工程中的結構有部分“科學”元素。在這裡有什麼不同呢?

科學家“仰望天空”居多,很少屑於實際運用;主要闡述認識規律,發現規則;好比你經常看到科學發現新地球、海嘯、巨大恆星等。而工程講究“腳踏實地”,將發現的原理轉化並實際幹出來。

也就是,在過程中首先要尊重科學規律,考慮多因素實際所存在的結構,再精益求精的持續改進。

對“預見”,最接近的兩個詞彙是“使命”或“夢想”。

埃隆·馬斯克對火星的迷戀我相信絕對不會是因為科幻小說的影響,而是他認為自己聚合頂尖技術人才,然後又懂商業投資,加上使命的火花,才讓他走上SpaceX的道路。

據此,作為普通人對我們有什麼幫助呢?你不妨思考下自己的使命,夢想是什麼?

也許比較天馬行空理想主義,嘗試把它量化成目標,思考有沒有可能變成實際動作;

只要勤快,拆分下大機率可以實現。

比如:工作很久的你想成為某個領域專家,也許只需花1-2年的時間深度學習理論知識,然後結合自我最新認知,透過不斷分享就會被人發現,不一而論。

2)約束內找到組塊

儘可能在具體的時間,約束內交付出明確“規模”的結果,相比科學研究就沒有這些限制。因為在開始,他們就不知道具體方向在哪裡。例如:直到到今天,人類也無法統一相對論、量子力學。

結合自身,我覺得擁有清晰的目標後,

第一步的困難是“最後期限”原則,

很多人的未完成均結束在時間、精力的管理層面。

假設能克服這一步,接下來要考慮“組塊”的環節;要嘗試找到形成該結構的最小單元,部分人停滯不前是沒有找到組塊和串聯,最後盲目的付出把精力耗盡。

比如:談鋼琴有組塊,寫作、玩音樂更是相同。

《故事工程》的作者拉里·布魯克斯認為,寫作這類看似有靈感的事情都可以採用工程思維設計,它用工程構建的方式將故事創作分為6大核心技能:1)立意,2)人物,3)主題,4)結構,5)場景,6)風格

對於普通人所有的一切均可以“公式化”,

為保證品質你可以多做幾個備份來;

查理·芒格在《窮查理寶典》中把它稱為冗餘模型(Backup Systems)。

3)平衡當中做取捨

取捨的根本是什麼呢?在工程思維中講究“第一性原理”,也就是你基於未來結構的頂層設計。

若說組塊是框架中的血液,那取捨關鍵就是你的“框架”如何設計;這個框架怎麼來呢?我把它總結成“舊系統”。試想下,你想做的事情或達到的狀態,

以前有沒有人完成?找到並把他設計成動態對標品;

私下研究三個方面:1)學習路徑,2)職業發展,3)成功階段。

美國神話作家“約瑟夫·坎貝爾”在20世紀50年代出版的《千面英雄》把人的經歷分為三個階段,分別是離群所居(separation)、經驗考驗(ordeal)、復歸本源(return)正是對應此模組。

把發展路線提煉出來之後,要做是“最佳化舊系統”,

如:第二個階段你看到對標的人用三年經歷從經理做到總監,那在此方面自己有沒有更快的辦法呢?

所以不侷限在表面的細枝末節,挖掘背後隱藏的路徑和機制才是根本,真正的工程思維是要“解構舊系統”,組合創新“新系統”。

總結一下

使命的驅動、頂層的框架設計、組塊化的SOP。

這種全域性觀加上約束內的反饋機制,才是普通人值得學習的工程師思維。

回到文章開始,為什麼學過很多道理,依然過不好一生?因為“那個道理”背後的系統你沒有躬身入局,所以聽了也沒用,想想看不是嗎?