後 ChatGPT 時代,寫程式這件事將要滅絕了嗎?
2023年5月20日
這兩天在 GitHub 上有一個開源隔天即破千顆星星的新專案 smol developer,又掀起生成式 AI 應用在程式開發上的新一波討論。在工程師社群中,玩過 smol developer 的人,幾乎都覺得它比 AutoGPT 更好用。所以 smol developer 是什麼? 它跟 AutoGPT 有什麼不同? 工程師可以如何用它來加速完成開發工作?
在往下讀之前,推薦大家直接看 demo 影片,看完會更懂下面的分析在講什麼。在 demo 中,透過一個指令,smol developer 直接幫忙寫出一個 Google Chrome 的插件,非常驚人!
特點一:極致發揮 10 萬 token 數的強大
前幾天號稱 ChatGPT 最強競爭對手之一的 Anthropic Claude 發表了 10 萬 token 數的上下文,而 smol developer 善用了這點,進一步做到過去做不到的事。在過去幾個月,已經有許多人拿 ChatGPT 來幫忙寫程式,但多半都只是一個函式,或一個元件;透過 10 萬 token 數,smol developer 可以幫忙直接寫一個完整的應用程式,而不只是一小段程式碼。
特點二:足夠聚焦的場景,帶來整合性更好的體驗
AutoGPT 是以通用的使用場景出發,而且目前的介面受限於命令行介面,所以實際在用沒有真的那麼方便 (AutoGPT 團隊目前正在開發 GUI,期待之後的發表)。但 smol developer 因為聚焦在程式開發的場景,搭配程式碼編輯器,用起來非常方便。
特點三:人機協作而非全自動化
smol developer 在開源專案中提到其定位是 Your own personal junior developer,意即他的存在目的不是取代工程師,而是讓你有多個初階工程師的幫手。比起 AutoGPT 指令下完後就全由 AI 下去思考與執行,smol developer 的做法是,讓你當資深工程師,而它當你的幫手,所以互動起來會是它的初步產出後,你要幫忙做 code review,然後再進一步下 prompt 去讓它優化成果。
實際玩了一下 smol developer,真的就像有了幾個初階工程師,能幫忙生出完整但不盡完美的產出,但在稍微調整一下後,就能有不錯的成果。讀到這邊,你可能會想雖然 smol developer 是人機協作,不是全自動化取代人類,但這仍意味著「初階工程師」將被取代,未來一個資深的全端工程師搭配數個 smol developer (或其他 LLM 輔助開發工具),不就可以直接頂替一個開發團隊?
你不是第一個這樣想的人。前幾個月前哈佛大學電腦科學系教授 Matt Welsh 就在 ACM 上分享這個觀點。他認為傳統的「寫程式」將在未來滅絕。 讀到這你可能心裡會想「哪來又一個在販賣恐懼、唯恐天下不亂的名嘴」,不過並非如此,雖然他認為人類寫程式這件事會滅絕,但沒有說工程師會因此不再被需要,只是會有另一波演化。為什麼他會這樣說? 他看待寫程式的觀點又為何,導致他覺得人類不再需要寫程式? 讓我們先從他的背景開始說起。
Matt Welsh 畢業於加州大學柏克萊分校博士班,是前哈佛大學電腦科學系的教授,他還在哈佛當教授時,臉書的創辦人祖克柏是他課堂中的學生。在 2010 年他離開哈佛,轉往業界發展,在 Google 當到首席工程師 (Principal Engineer)。當年辭掉哈佛的教授工作時,在學界與業界都掀起一陣討論,也有不少媒體報導,畢竟世上有多少人恨不得能讀哈佛,更不用說當哈佛教授,但他卻選擇辭去,由此可見他有著與一般人不太同的觀點。
回到談論寫程式這件事,不像那些不懂程式卻跟風亂喊 AI 將取代工程師的技術門外漢;在電腦科學與程式領域上,Matt Welsh 有超過十年的學術經歷,也累積超過十年的業界歷練,所以當他說「寫程式這件事將要滅絕」,他不是隨口說說。更具體一點來說,他認為會滅絕的「寫程式」,是指傳統由人用程式語言撰寫程式這件事會滅絕。
所謂的寫程式,不論是底層由 0 跟 1 來編寫的機器語言,或是 Python 這類幾乎像是英語的高階語言,在做的事情不外乎是在對機器下指令,讓機器做到你想做的事情。 然而隨著大型語言模型、生成式 AI 時代來臨,人類與機器溝通的媒介,可以不再是程式語言,而是可以自然語言來跟機器溝通,而程式碼將轉由機器來寫。
假如程式碼由機器來寫,難道工程師都要失業了嗎? 非也非也。Matt Welsh 認為在機器寫程式的時代下,兩種技能會特別重要,一個是產品經理的技能,換句話說能夠清楚表達需求;另一個是 code review 的技能,意即能給予機器產出的程式反饋,進而生出更高品質成果。把這兩點加起來看,簡單來說,未來的好工程師,要有能當 AI 老師的能力。
其實這件事早已不是新聞,假如你對工程師的職涯發展有一定了解,基本上越往上升的工程師,越少時間花在寫程式上面,越多時間會在需求釐清、技術規劃,以及給予初階工程師反饋。這也是為什麼在工程師面試,越資深的工程師面試,越會著重在系統設計、行為面試,而不是程式碼的實作。而隨著 AI 時代到來,好的資深工程師會越能彰顯其價值。
總的來說,人用程式語言寫程式這件,看起來不久將來的確可能消失。而工程師的工作內容會大幅往資深移動。因此,假如你現在還是初階工程師,得要加速往資深邁進了!