大約在 2023, 2024 年的時候,全世界的程式設計訓練營 (programming bootcamp) 都倒了一波。多數人認為的原因是:生成式 AI 興起與科技業裁員而導致。而最根本的原因,應該還是回到了生成式 AI 。生成式 AI 提高了 senior programmer 的生產力,昔日很多本來讓 junior 來做的工作,變成可以交給生成式 AI 來處理。於是就不再需要那麼多人,所以科技業就裁員了。junior programmer 的需求大幅下降,程式設計訓練營也不再風光。
仔細想想,程式設計訓練營本來就是一個特殊現象,該現象之形成,跟以下的兩個現象很有關系:
程式開發技能是極有價值的白領技能,且需求成長的速度超過學校生產合格人才的速度。曾有一段時間,programmer 在 104 人力銀行上,平均每人有四個工作可以選,是典型的『事求人』。
學校教育與產業需求有一定的落差。我曾經身為一個電機工程系的畢業生,昔日在學校時,所學的領域極廣,從 IC 設計、自動控制、嵌入式系統…。也正因為所學很廣,網頁應用程式開發的許多技能,我在剛畢業時,幾乎是多半沒有學好過。直白地來說,如果二十年前我去 Bootcamp 進修的話,也可以學到許多東西。
需求的演變
前述兩個現象也都受到了生成式 AI 的衝擊,也因此發生了一些變化。
高階的程式開發技能依然極有價值;低階的程式開發工作,則很大一部分地被 AI 取代。
不僅是學校教育、連 Bootcamp 的程式開發人才養成教育也與產業需求產生了落差。由於 Bootcamp 是營利機構,需求一旦不存在,就迅速地退場了。
高階的程式開發教育
此處有個問題一直沒有被好好地來解決,高階的程式開發人才的培養。光是何謂高階程式開發技能就很難定義,也因此更難以有系統的方式來培訓。大概也是因為這種原因,似乎從來沒有聽過什麼 mid-level programmer bootcamp 。
然而,高階的程式開發教育真的沒有需求嗎?我本人覺得,一直都有很大的需求。舉個例子,我最近與一位海外的工程師主管 J 閒聊。
J:「什麼?你寫 Clojure ?我十年前在美國也寫過一段時間的 functional programming ,前六個月實在是很痛苦,每天都在掙扎中渡過。過了六個月就好多了。」
我:「那你覺得 functional programming 如何呢?」
J:「超有道理的啊, bugs 變少很多。我們那時候做的軟體是航空業的,不能開玩笑的。」「實在是人太難找了,在美國更是天價,不然,我會很認真地考慮這個選項。」
高階程式設計訓練課
最近我有個想法,想設計一門課程來做「高階程式設計訓練」。課程的主要內容如下:
捨棄 OOP 與 imperative programming ,教 functional programming。既然很多資深工程師跟我講,每天寫都還要寫六個月才覺得『有點懂了』,那我想這個應該是需要別人教。
捨棄 Clojure, Scala, Haskell, Elixir 等一般用途的程式語言,教 Fennel 。無論是哪一種的一般用途程式語言,它們的門檻都太高了,教一個特定用途的 Fennel 就好,門檻大幅降低。
捨棄網頁應用程式 (web application) 開發,教 Neovim plugin 開發。網頁應用程式的開發包山包海:傳輸協定、資料庫、前端無所不包,很難做出取捨。如果選定了要應用資料庫做為課程內容,那就已經將資深的前端開發者拒於門外;同理,選定了要開發網頁的畫面,那就已經將資深的後端開發者拒於門外。選擇 Neovim plugin ,整個平台相對簡單,又是全新的,最沒有包袱。還有,編輯器的 plugin ,或多或少有機會就是用得上吧?不會有學了 Clojure ,卻找不到工作的問題。
探索式程式設計(exploratory programming)。高階程式設計的關鍵,在於勇於探索與實驗,透過不斷嘗試與反思,從不確定中找到方向。這不只是技術學習,更是思考模式的養成。Fennel 和 Neovim plugin 這樣相對簡潔、靈活的環境,正是練習探索式程式設計的理想場域。
總結
生成式 AI 的興起,改變了整個軟體開發產業的技能需求,也讓傳統 Bootcamp 的商業模式面臨瓦解。然而,這並不表示程式設計教育的需求消失了,而是轉移了。真正被淘汰的是「針對初階職缺的量產式教育」,而不是教育本身。
我們現在正處於一個新的轉捩點:當初階的工作越來越少,而高階的技能門檻又越來越高時,市場其實更需要的是能引導工程師跨越「中階瓶頸」的課程。只是這種課程從來沒有大規模出現過,也不容易設計出來。它不像傳統 Bootcamp 可以用簡單的成果導向(例如做出一個 CRUD 網站)來設計內容,也不像學校那樣只提供抽象理論。它需要結合經驗、判斷力、與大量實作與反思。
這也是我想設計這門課的原因:教那些有開發經驗、但想往更深一層走的人,真正掌握高階開發的關鍵技能。或許,我們可以說,Bootcamp 這個名詞不該被放棄,而是應該被重新定義。
我覺得可以變成俱樂部、社團形式。成員之間互惠。