用邏輯改變世界

工程師的邏輯是如何訓練的?談抽象化與具象化

第一次開始思索「如何訓練邏輯思考」這個問題,是在看了大人學2015年發表的文章。身為一個具有教育背景的工程師,對於回答這個問題很有興趣。於是在開始做自媒體之後,2018年也寫了一篇我認為不用學程式也能訓練邏輯思維的方法
對於寫文章訓練邏輯思維這件事,我非常認同,也認為邏輯思考與表達能力相關。但是這不能回答為什麼數學家、工程師不寫文章也能擁有很強的邏輯。也就是說,寫文章並不是必要的,那麼什麼東西才是訓練邏輯思考的關鍵因素呢?

邏輯思考的基礎是抽象能力,通常我們會認為抽象能力要通過數學來訓練,但是這和寫文章訓練邏輯的想法又背道而馳。所以抽象能力,也就是把東西抽象化的能力,是必須重新定義的。

--因此我們就要問,什麼是「抽象化」。

抽象藝術

在科技島讀有一篇談論抽象化的文章,簡單地說抽象化是指:捨棄不重要的細節。我們可以從統計學的觀點來看抽象化。如果你是一位學生,我問:「你們是什麼樣的一個班級呢?」你可能會回答:「我們班平均身高有165公分,大家都很高。」又或是:「我們班有40個人,只有3個女生,是個陽盛陰衰的班級。」如果班上有40個人,每個人寫一句話來描述這個班級,可能會得到40種不同的答案--這就是抽象化。班上的人並沒有變化,可是每個人看待這個班級的角度不同,就會得到不同的抽象結果。
抽象化其實就是抓重點的概念,只留下我們想觀注的重要內容,其餘的細節就捨棄忽略。這樣我們的大腦只要處理重點即可,不相關的東西加進來,只會變成雜訊而已。

抽象化有程度上的不同。比如說有道食譜有五個處理步驟,每個步驟都可以用一句話來描述。如果在這些步驟上都加入照片,那麼這個食譜就會比單純文字來說相對具體。如果我們透過影片來拍攝製作的過程,又會比照片更加具體。但是無論再怎麼具體,跟你親自下去動手做的時候仍然不同,畢竟別人切洋蔥可以切成片花,不代表自己也辦得到。
抽象化也有不同的複雜度。簡單的料理可能是線性的,照步驟一步一步完成即可。複雜的料理可能是樹枝結構,有些東西要先炒、先炸過,最後再整合再一起。

大部份的人透過語言文字進行抽象化,工程師是用程式、數學家是用數字與符號。所以學數學、寫程式可以訓練抽象能力,寫文章也可以。

彩色方塊

具體上我們做了那些事情才增進抽象能力呢?
想像一下眼前有個實體的魔術方塊,如果要將它放進電腦裡,讓我們可以在電腦上玩這個魔術方塊--這就是工程師的工作,他們必須進行大量的抽象化,從各種不同維度切割這個魔術方塊:魔術方塊有六個面,每個面又有9格,可以進行旋轉,每次旋轉必須要在同一個切面……
在抽象化成電腦看得懂的程式語言之後,又要反過來具象化呈現在我們面前。工程師常常要不斷地執行抽象化與具象化的轉換,這樣的過程加強了他們的抽象能力。畢竟也正是這樣的轉換過程,才會需要大腦極盡所能地思考,否則只是把一個魔術方塊擺在眼前,並不會有抽象的結果產生。
有時候,工程師的任務是把人類的語言轉換成電腦看得懂的程式;但是因為很少將程式轉回人類的語言,因此這個部分是許多工程師的弱項。不過這並不影響工程師的邏輯能力,因此具象化不會影響邏輯能力。
也就是說,轉換的目標比原本還要抽象就可以了。

大部分的人使用語言進行抽象化,但是語言會有認知不足或是概念混淆等問題,畢竟人類的語言並不精確。這就是為什麼數學、程式等等符號運算更容易訓練邏輯的原因,畢竟1就是1、2就是2,沒有模糊的空間。
即使工程師可以寫程式,在使用人類的語言時,也有可能犯下概念混淆的問題。和其他人相比,這些人最大的特點,大概就是好好地釐清,他們還是能察覺問題。而有些人則是怎麼也講不聽的,硬是要用自己的認知冠在完全不相關的事物上。
簡易言之,對大部份的人來說,語言仍然是最容易進行抽象化的工具,也最容易理解。但同時我們也要小心語言容易產生的邏輯問題,包括無法察覺認知不足、沒有確認定義、概念混淆等等。使用什麼工具不是問題,問題是我們要有開放的態度--知道語言可能產生的問題,並且讓它有被修正的空間,而不是堅持已見不容許他人提出任何修正的可能。

生活中最簡單練習抽象化的方式,就是試著用自己的話描述所見及所聞。有了抽象能力之後,再進一步練習邏輯,包括定義推理與歸納。將來再和大家分享生活中提升邏輯的小撇步吧。

媽媽桑也聽得懂的專案管理