學程式到底在學什麼?

by Logiscool

“Everybody in this country should learn how to program a computer… because it teaches you how to think.” — Steve Jobs

不是每個人都要成為工程師,但每個人都該培養程式思維。

然而什麼是程式思維?簡單來說,就是富有「結構化」與「邏輯」的思考。

鍛鍊程式思維的人常會被誤解是 ”programmer”,但事實上是成為一個 ”problem solver”。

其實寫程式就像讓自己的大腦上健身房,透過面對越來越複雜的問題,鍛鍊自己思考的框架。就像健身會影響運動表現,當思考的框架越來越扎實,你面對生活中的問題時,就能更精確、更有效率的去解決。

當然,程式思維顧名思義是寫程式時必備的思考模式:

清楚定義問題

1. 拆解、簡化問題

2. 將拆解、簡化過的問題一一擊破

3. 整合

不論是在編碼的字裡行間,還是面對生活中的問題,都需要結構化是的思考。先跳出原有的框架,思考大問題,再逐一擊破小問題,而我們執行時也更能專注在問題上,不會偏離軌道。

清楚定義問題:

若無法清楚的定義要解決的問題,就更不用想去解決它了。

而定義問題的第一步,就是理解它。

遇到「困難」常常是一種感覺,而許多人在面對困難時都不經思考,也就是靠「直覺」去解決問題。這種方式很像寫程式最土法煉鋼的 “Try and Error”:

1. 使用最直覺的方法解決

2. 若無法解決,換一種方法

3. 執行第二部,直到走運

這種方式無法看透問題的本質、無法知道我們離問題的解有多遠,甚至在解決問題後都不知道自己是怎麼做到的。

所以在面對「困難」這種感覺時,我們必須先釐清它。

可以對你的同儕、同事或朋友簡單但清楚地描述你的問題,或用一隻筆、一張紙勾勒出困境。而時常在我們解釋問題時,就會發現自己原先沒有注意的邏輯盲點,是吧!

當我們能清楚定義問題時,那我們離解決它就不遠了!

拆解、簡化問題:

“Divide and Conquer” 是程式設計中很經典的演算法,而寫程式時,我們也會將一個專案拆解成許多模組(module),再分成許多函式(function)去編寫。在建構和除錯(debug)時,會大大提升效率。

當然,生活中或工作上的問題也能用這種方式去思考:

好比說:「為何我的網路廣告無法帶來顧客?」

那可以將廣告表現拆成:曝光、點擊率…

點擊可以再分析:停留頁面時間、轉換率…

這個分解的過程還可以再深入,直到我們發現出現問題的部分,就可以對症下藥。

當我們拆解問題,就不會覺得難以下手。

 

將拆解、簡化過的問題逐一擊破:

Divided完問題了就是時候Conquer了!

電腦科學的世界中有許多演算法,像是 divide and conquer、 recursion、dynamic Programming、DFS/BFS、greedy search…等等。

這些演算法看似複雜,但初衷都是一樣的:如何最有效率的解決問題?

解決問題的方式有上百種,但解決問題的精準度和效率,就是靠經驗的累積、大量的練習與知識的吸收,慢慢堆疊而成。

就像前面提到的,寫程式就是這樣,透過一個個越來越困難、需要更深入思考的問題,鍛鍊自己的邏輯與切入、解決問題的方式。

整合

當我們將所有小問題都搞定,就可以像拼拼圖一樣,整合出大問題的解。

這點在與他人解釋事情時,非常重要。

這樣組合解的過程,就是具有「邏輯」與「結構化」的說服自己與他人。不僅能完整的呈現自己的思想,也能讓自己想表達的更有說服力。

 

 

更多課程資訊

請洽Logiscool官網:
https://www.logiscool.com/tw-zh/about

預約免費試聽:
https://www.logiscool.com/tw-zh/apply/taipei/open-days

或聯絡我們: 加入好友

Share