Managertoday 經理人

為什麼你也要懂「程式設計」?培養「運算思維」,做事更精確、有效率

2018-09-25 21:16:07
Managertoday
https://bnextmedia.s3.hicloud.net.tw/image/album/2018-03/img-1520916972-34755@900.jpg
隨著科技的演進,現在企業就算不科技化,也必須煩惱科技公司會不會來攪亂產業生態。而大學校園裡,也有愈來愈多學生意識到科技的影響力,開始擔心未來,無論是本科系或非工程出身的學生,都紛紛轉向學習程式語言。

隨著科技的演進,現在企業就算不科技化,也必須煩惱科技公司會不會來攪亂產業生態。而大學校園裡,也有愈來愈多學生意識到科技的影響力,開始擔心未來,無論是本科系或非工程出身的學生,都紛紛轉向學習程式語言。

台大資管系助理教授孔令傑 2012 年開始教授該系必修課程「程式設計」,當時本科系與外系生的比例約為 60:2,到了 2016 年,比例已變成約 60:40,「說到底,資訊科技是機會,也是需求。」

於是,2016 年,他找了資管系盧信銘教授合開「商管程式設計」課,專門給管理學院學生學習程式設計。孔令傑強調,修課的同學們擔心自己未來被機器人取代,所以學習動機很強,「我們不必利用『恐懼』規定學生修課,只要盡量用他們懂的語言溝通,幫他們跨過一開始的門檻就好。」

孔令傑解釋,程式設計的本質是數學,而且是更簡單的應用數學。傳統程式設計課程可能會直接請大家「判斷 234567 是否為質數」,但他們將題目變形,把思考融入生活或商業案例,目的就是讓學生理解:我們可以透過程式設計來解決各自的問題。

比如說,「假設 1 杯咖啡的成本 2 元,若定價 10 元,1 天會賣 800 杯;若定價 20 元,1天會賣 600 杯……依此類推,總共有 10 種價格及對應的需求量。請問咖啡要訂價多少,才會獲得最高利潤?」一般人遇到這種問題,可能會捲起袖子、拿起紙筆計算,不僅費時,答案還不一定正確。但事實上,只要寫一個程式,不到 1 秒,答案就出來了。

孔令傑指出,一般工作者只要會寫程式給自己或同事用,就「功德無量」了。比如說,預估訂貨時,多數人會藉過去的紀錄來推估,但光是把以往的資料輸入 Excel、從中計算就得花上不少時間,再加上評估不同產品的準則不一,製作表格就占了員工大部分工時。

這時,如果部門內有人會寫程式,設計一個在 Excel 計算的程式,讓資料可以自動更新、計算,即可大幅縮短工作時間,把多出來的時間用來精進預估需求的方法。

這正是孔令傑當初開設「商管程式設計」的初衷,他認為不同專業的人,只要懂得運用資訊科技(IT,Information Technology),對組織的貢獻或個人價值就會差很多

「如果不同專業的人能理解科技的潛力與限制,溝通就會順暢,不只不會提出做不到的事,更可能提出創新的建議。」

企業贏的關鍵,就在資訊科技的運用

從過去到現在,資訊科技對企業經營有不同層面的影響。一開始,企業使用資訊科技是為了改善工作流程,把既有的工作「數位化」,運用資訊科技輔助企業經營。比如從傳統的手動記帳,改到電子記帳。當時,企業的競爭優勢還是產品力(著重產品品質與價格),資訊科技只是增進工作效率,並不會讓企業擁有競爭力。

隨著時間增長,慢慢有些企業利用資訊科技提升或取得核心競爭力。換句話說,在同個產業裡,只要你比對手懂得更多資訊科技,就會取得優勢。

以叫車 App 為例,Uber 會在使用者所在區域裡,找到「評分高、距離近、車型符合」的車輛,配對給顧客,而且速度很快;美國 Uber 甚至會即時(real time)計算共乘、離峰服務,讓使用者得到優惠。這些獨特的服務,就是因為比起其他叫車 App,Uber 更擅長運用資訊科技,而發展出的核心競爭力。

除了幫企業把事情做得更快、做好,科技對企業最深遠的影響,就是讓企業「做沒人做過的事」。像是醫病社群平台 Patient like me,它讓人們在網站中分享、交換醫療資訊與經驗,而不向使用者收取費用,而把網站上的統計資料賣給藥廠、研發機構等單位,以雙贏模式獲利。

孔令傑指出,人們從不認識到學會程式設計後,不僅提升工作效率、解決問題能力,讓做事情的思維有所轉變,更能培養運算思維(computational thinking)。

學程式培養「運算思維」,做事更精確、有效率

1. 習慣拆解工作

在寫程式之前,必須先定義步驟、流程,再將之模組化。所以習慣寫程式的人在遇到問題時,會開始考慮所有可能性,把工作拆解、步驟化等,久而久之,就變成他的思考模式。

孔令傑表示,對寫程式的人來說,必須設定模組,只要遇到相同的問題,就「呼叫」模組。以舉辦運動會為例,無論是跳遠、賽跑等都需要檢錄,但只需要設置一個檢錄台供大家重複使用即可。

2. 做事更精準

在編寫複雜的程式時,會需要多人協作,但它不像簡報製作,只要把所有資料彙整成檔案就完成。一群人共同編寫程式時,必須先約定好輸入(input)與輸出(output)的格式,否則會「牛頭不對馬嘴」,讓程式無法順利編譯、執行。

好比工作交接,約定幾月幾號交件、型號與規格為何等。不過,這樣的約定有時能有寬限,延遲交件或拿錯零件都還能靠隨機應變化解,但寫程式不允許這樣,約定一定要精確,否則會沒有任何產出。

經過寫程式的訓練後,人們會習慣用類似「通訊協定」(protocol,指約定好的資料交換格式)的概念進行團隊合作,把事情約定精確,避免模糊地帶。孔令傑強調,對一般人來說,學會寫程式並不會讓自己變死板,而是會讓工作更精準,「雙方對事情的理解精確,才能讓事情進行得更順暢。」

3. 思考更有邏輯

程式設計的本質是數學,而數學本身就是訓練邏輯思維的方式,但數學時常太抽象,反而達不到訓練效果。以三角函數為例,過去學習,只覺得困難,也不知道未來能用在哪裡。

但孔令傑表示,寫程式設計不會有這樣的情況發生,只要改幾行程式碼或參數,成品就會有所改變,或許是從三角形變成正方形,也可能是從圓形變橢圓形,「看到東西會因為你的行為而變化,不僅有成就感,也會促使人去思考為什麼會有這種變化,這對邏輯推理非常有幫助。」

不過,就算資訊科技能幫個人、組織增強競爭力,孔令傑還是認為,領域知識(domain knowledge)才是最不可或缺的。

程式設計只是輔助工具,領域知識才是核心競爭力

舉例來說,把資訊科技運用在醫學辨識 X 光片,解讀速度雖然變快,但最終還是需要擁有醫學知識的人詮釋結果,才是最保險的做法。也就是說,科技屬於工具,用來輔助診斷病症,讓醫生工作效率提升,但專業知識卻沒辦法工具化。

「未來科技的應用面很廣,因應之道不該是每個人都去念資工系,而是各行各業的人,都去學一些資訊科技的技能、知識。」了解科技的影響力,才知道未來如何因應新科技或改變。孔令傑表示,如果工作者能懂一些資訊科技,或能衡量科技的潛力和限制,他就能夠結合領域知識與資訊技術,把事情做得更好、更快,甚至想出新方法。

以慈善家沈芯菱為例,她出生佃農家庭,在小學接觸電腦後,開始自學架設網站,11 歲就幫農民設立產銷平台,協助農業數位化、商業化,至今未接受捐款與贊助,已獨立支出 800 多萬台幣。

台灣6.0希望工程創辦人沈芯菱

孔令傑分析,一般人學電腦可能不會去做這些事情,就是因為沈芯菱的家庭背景,才會促使她有這樣的作為。

理解科技的潛力,能為工作加值;相反地,理解科技的限制,也能降低職場衝突。 以軟體建置為例,許多公司看競業推出新功能,也會要求內部工程師做一樣的事,但因為不理解,常會壓縮時間。這時,如果能理解編寫程式的「時間限制」,與工程師協調上線時間,不僅較尊重專業,也能避免不必要的溝通成本。

具備 3 大要素,學會程式設計不再是難事!

孔令傑認為,擁有動機、基礎與教材,是自學一項技能的必要條件。而在這個世代裡,程式設計具備了這 3 個條件,所以「理論上,人人都能學會寫程式。」

1. 動機

過去提倡學英文,但蘋果(Apple)執行長提姆 ‧ 庫克(Tim Cook)強調,程式設計比第二外語更重要,因為「可以跟 70 億人交流」。

2. 基礎

程式設計的本質是簡單的應用數學,不需要物理、化學、生物等知識,只要選擇適合自己程度的程式語言,就可以透過自學做自己想做的事。

3. 教材

寫程式或架設網站的人,只要有成果就習慣放在網路上,所以相較於其他科目,程式設計的網路資源非常豐富,只要上網搜尋,就有教材。