最近正在進行期中考題的出題,並且在設計大語言模型這門選修課和資料結構這門必修課的作業的時候,我一直在想一個核心的問題:同學們需要什麼樣的能力,讓他們在畢業之後可以用來當作面對如今變化多端的業界的武器?程式設計師會被AI時代淘汰嗎?
可以用ChatGPT寫作業嗎?
由於ChatGPT等強大的基於大語言模型(Large Language Models, LLMs)而推出的產品實在是很好用,我個人的看法是,既然工具那麼好用,就應該要用,不需要特別禁止學生使用,畢竟將ChatGPT等類似的產品導入企業當中,也是現在很多企業進行數位轉型的專案之一。也就是說,不少企業鼓勵員工使用大語言模型服務幫助提升工作效率,也會進行教育訓練讓員工學習使用這類型的工具。既然業界都直接使用了,那麼既然我所面對的是管理學院的學生,在考量實務應用以及組織效率的前提之下,練習操作大語言模型服務基本上也沒有什麼問題。反倒是可以期待學生能加乘大語言模型的力量,做出複雜度更高的成果。忘記之前在哪裡看過,未來程式設計師的Coding能力,將會更需要強化的是「閱讀code」的能力。如果大部分繁瑣的coding都能透過AI幫忙解決了,那麼剩下的就是要如何刪改、應用,並且將code寫漂亮、寫好在自己的開發案中。
所以,儘管作業本身有難度,但是在不限於可以使用ChatGPT等大語言模型工具的狀態下,挑戰一下同學們的極限吧。
讀〈The End of Programming as We Know It〉這篇文章之後
之所以看到這篇文章,剛好在隨意聽podcast的時候,聽到了「ITトリオの日常」這個節目講到了這篇文章。雖然我沒仔細聽podcast內討論的內容,不過這篇文章大致上是在說「當chatGPT出現了之後,寫程式的人是否會遭到取代」這類的話題。這篇文章來自於O'REILLY的技術部落格文章,在刊登的時候也引發了網路上IT界的一番討論。而主題也正好和我最近思考的問題有關,所以我就去查了原文來看。
以大語言模型(LLMs)服務完成重複性的程式碼
我的看法有蠻多跟這篇文章有共鳴也蠻相近的,文章提到了用LLMs來寫程式:
There’s even a new buzzword for this: CHOP, or “chat-oriented programming.” The rise of advanced reasoning models is beginning to demonstrate AI that can generate even complex programs with a high-level prompt explaining the task to be accomplished.
而實際上在業界的時候,當一個人要處理一個專案的時候,使用LLMs來寫程式可以幫忙處理很多問題。在POC階段或是專案開發的早期階段,在團隊員工數不足、規模不大的時候,一個人可能得要負責從前端寫到後端,可能會涉及同時必須要寫不同程式語言的情形。人腦有限,一個人實在難以同時精熟多個語言,手寫所有的code幾乎不可能,可是有了LLMs服務,可以快速大量製造程式碼,尤其是針對自己比較不熟的語言時,真的大大提升了效率。而我覺得更驚人的效果是出現在寫像是html這樣的標記語言的時候,人腦很難編輯、掌握所有的code,可是有了LLMs的輔助,可以很快速地完成這種會有大量重複的code的情境。
人類程式設計師就是各種新技術的管理者
而關於程式設計師會不會被取代的問題,作者不認為會如此。
更可以說,因為AI工具的出現,我們會需要更多的程式設計師。只是,我也同意,更多的程式設計師的工作,將會是整合型的,他們必須要會整合各種API,各種服務進入到企業/組織所提供的單一服務/產品當中。
All kinds of deep and powerful functionality was made available via simple APIs. Yet this explosion of internet sites and the network protocols and APIs connecting them ended up creating the need for more programmers.
The human programmers are their managers. There are now hundreds of thousands of programmers doing this kind of supervisory work.
原文提到,儘管還是會有一些工程師他們會寫編譯器、會寫很底層的程式與軟體,也有一些工程師,會寫一些framework或library,可是更多的工程師,是利用這些工具,發展出更多元的服務。這也是如今,Python會變得更流行的原因,它的開發速度快、可用資源多等等,面對現今的這個整合型程式設計的時代來看,它更符合時代的需求。
此外,其實這也涉及了團隊規模的問題,目前已經有非常多現成的服務,都已經被一個非常巨大的規模所建立起來,我們作為普通的企業、普通的個人,實在難以跟那些超大公司如Google, Amazon, Meta等等公司匹敵,而既然他們已經有大量收集、訓練過的資料,將他們的服務串連過來為己所用,其實也是相當合乎成本的。如何整合服務,提供更好用的工具,也會是未來的一個商機和發展方向。
讓AI工具成為巨人的肩膀
就像有了Windows之後,人類已經習慣了使用圖形化的界面組成的電腦作業系統。而程式語言本身也持續的在演進當中,當寫程式這件事情越來越能貼近人類語言的同時,也就會有越來越多人會寫程式。正如現在會使用電腦的人數,絕對也比20年前(2005年)還要多一樣。
The fact that “programming” is getting closer and closer to human language, that our machines can understand us rather than us having to speak to them in their native tongue of 0s and 1s, or some specialized programming language pidgin, should be cause for celebration.
所以回到出作業和考題的思考上,我想重要的事情也就是在於讓同學可以挑戰做一些更需要人類加工的內容,例如,
- 如何整合各種好用的工具
- 如何閱讀/修改/優化程式碼
- 如何增進與維持人與人之間的有效溝通
- 如何改善人機互動或human-AI interaction
- 如何讓產品/服務推出可以有效達成使用者的目標/需求
諸如此類等等,而作為資訊管理學系的學生,我想從這些角度來思考學寫程式的這件事情,應該也算是很貼近於這個時代的需求吧。