APCS不只是升學用途
有些朋友問我,學APCS除了升學以外,對未來就業之類的有用嗎?
我的觀點是學APCS有用,只學APCS沒用。
會發出這種疑問的,多半對APCS的題型有相當了解了,因為APCS要考滿級分真的很難,對於演算法要有相當深刻的理解,而這樣的熟練度,大多數的電腦工程師在他的職業生涯都用不到。
大部分的工程師不需要把Dynamic Programming、Greedy Algorithm玩得很熟練,能夠在30min之內解一題;只需要在程式效能不足時,知道有這個概念,然後去翻翻書,花個幾天去解它都沒關係。
甚至大部分工程師,只要有能力寫一些”膠水”,把幾個現成的元件”黏”起來就好了,高深的演算法很多都有現成函式庫了,不太需要自己寫。
別誤會,我不是說這樣的工程師很遜。相反的,有能力用現成的元件,有效率的組成一個有用的系統,不要重複發明輪子,才是正確解決問題的方式。
所以學APCS對未來有用嗎?學到實作三級一定是用的到的,如果你有天分隨手考到實作五級當然很棒,但不是人人都有必要硬上五級,時間是世界上最貴的東西,應該花在更有意義的目的上面。
找到真實世界的問題,寫程式來解決,才是真正有用的能力
APCS高分就能做專案?
我前面一篇文章(APCS城市教育本質是什麼)有提到,寫一個”口罩地圖App”就是很好的例子。若我要帶一組中學生來做這件事,大概有以下步驟
- 發掘問題
- 用戶訪談,確認需求
- 詳列規格書,把功能定義明確
- 小組分工,開發以下元件
- 使用政府開放的口罩資訊API
- 使用Google Map API
- 設計使用者介面
- 使用Web技術(JavaScript、CSS、HTML5),將以上黏成一個系統
- 利用一些工具,把Web系統包成App
- 宣傳這個App,讓更多人知道來使用它
- 收集用戶回饋,持續改善
只學APCS的學生,辦不到這件事,不學APCS的學生,也辦不到這件事。
開發”口罩地圖App”是一個簡單的例子,但真實世界裡面,光是”發掘問題”都不簡單。
舉例來說,譬如參加棒球社的同學,能不能開發一個系統,把球員的數據輸入進去,幫助教練排出最有效的棒次?
譬如說家裡開餐廳的同學,能不能開發一個系統,安排桌椅跟行動路線,發揮最高的坪效?社區偶爾有陌生人闖入,能不能開發一個AI系統,辨識陌生人並發出警訊?
程式能力只是解決問題的一部分,其他我講的部分,學校的老師都沒有辦法教。
這不是老師的錯,因為學校教育必須做成固定量產的模式,才能用最低成本教出最多的學生。
108課綱講究”自主學習”,把更多時間空給學生了,必修科目少了,級分制也讓分數不再斤斤計較,但學校老師沒辦法教你太多,要自主學習。
所以很多家長跟學生都很苦惱,海闊天空變成無所適從。
其實這不是壞事喔,很多人都在大學畢業、甚至拿到博士之後,出了社會才發現無所適從,但已經浪費人生最精華的時間在不適合的領域了,現在108課綱把這個痛苦讓學生提早面對,早點走錯路才能早點彎回來,其實是一種社會的進步不是嗎?
最後,歡迎加入中學生學程式FB社團、以及愷哥電腦科普頻道,跟我一起學程式、學人生。愷哥APCS程式班熱烈招生中喔!
如果你認同我的觀點,歡迎把本篇文章分享給更多家長、同學!