學習用生成式 AI 寫程式 — Coursera 課程心得

by 好豪
Published: Updated:
Coursera – Introduction to Generative AI for Software Development

想讓程式碼高品質又簡潔、開發效率再提升?身為一名資料科學家,這些都是我的職涯不會停止追求的目標。現在有 LLM 的蓬勃發展,大大幫助我強化這些程式技能。生成式 AI 不僅能生成文字,更能成為強大的程式設計夥伴!為了增進我的 LLM 運用,我花費了三週、累積大約 10 個小時的時間修習了 Coursera 上的「Introduction to Generative AI for Software Development」課程,親身體驗了 AI 如何徹底改變我的軟體開發流程。

在這篇學習心得筆記中,我將帶你一窺這門課的精華,分享如何利用大型語言模型(LLM)來達到:加速程式開發、提升程式品質、與 AI 合作激發創新思維,突破傳統的開發框架。

這則筆記的目的很簡單:推薦對 AI 工具與軟體工程有強烈熱情的你,一起修習這門生成式 AI 寫程式的線上課程。以下將簡短介紹 Coursera 的線上課程內容與教學方式,並分享我完成課程實作練習後收穫的學習心得。無論你是經驗豐富的開發者,還是對寫程式與 AI 感興趣的新手,我相信這門課都能為你帶來啟發。

好豪在線上修習「Introduction to Generative AI for Software Development」這門課的證書
連結

這門課在學什麼?

Introduction to Generative AI for Software Development」這門課是 DeepLearning.AI 在 Coursera 平台上開設的線上課程。當今人工智慧、深度學習的研究教學領域,科學家 吳恩達 (Andrew Ng)的名字幾乎是家喻戶曉了,DeepLearning.AI 正是他創立的 AI 教育公司,而他們出品的這門生成式 AI 課,同樣是內容豐富、品質極高。

官方課程介紹

這門課的目標就如同其標題:幫助你學習如何用生成式 AI 工具來寫程式、以及完成大型軟體工程專案,期望學生上完這門課後,將懂得利用大型語言模型(LLM)讓自己寫程式既能更有效率、也更有創造力。課程將會是基礎知識與實務操作結合:

  • 基礎知識:什麼叫資料導向(Data-Driven)的 Coding?深度學習是什麼、以及到底 AI 產生程式碼的運作原理為何?
  • 實務操作:如何寫「好的」提示詞(Prompt)?大型語言模型能幫助寫程式過程的哪些任務?又有什麼是 LLM 可能做不好的?如何避免?

課程大綱

這門課總共為時三週,每週的課程都是基於前一週、內容環環相扣,幫助學生漸進地練習 AI 技能。

  • 第一週:介紹什麼是生成式 AI,理解機器學習、深度學習、人工智慧、大型語言模型(LLM)這些關鍵字各自代表什麼意思,還有它們的運作方式
  • 第二週:與 LLM 協作寫程式(Pair-coding),學習提示詞與工具使用策略,把 LLM 當成一起寫程式的合作夥伴、而不是盲目地請 AI 「代筆」寫程式
  • 第三週:用 LLM 分析程式碼,練習讓 AI 幫助我們找出專案的盲點,並與 AI 合作讓演算法或軟體架構都更安全、可靠、高效率
課程中會提出很多範例提示詞,並說明如何調整提示詞能得到更有效的結果
(截圖來源:DeepLearning.AI – Coursera

教學方式

Introduction to Generative AI for Software Development」課程中會用到很多資料結構與演算法的案例,主題非常明確:我們在軟體專案中遇到了難關,該如何用 LLM 來協助我們尋找適合的資料結構與演算法解決方案。

影片教學主要是老師說明他的 AI 運用建議,然後課程有很大一部分是小考加上作業。這門課的作業設計方式是我最喜歡的部分,老師會丟出一個如果沒有精通演算法、很難直接回答的問題,而我們學生要「循循善誘」LLM,讓 AI 跟我們一起找出答案,才有辦法回答作業中的問題。

尤其是第三週結尾的小型專案練習,老師提出了數個尋找最短路徑的情境題,都要應用圖論以及作業研究中經典的 旅行推銷員問題(Travelling salesman problem)來解,但是每個題目都會有微小的情境變化,像是要求運算速度最大化、或是要求必須能容量巨量資料等等。因為情境的微妙差異,用同一套提示詞無腦問 AI、會解不出所有情境,而必須要細細閱讀老師提供的情境,理解問題、目標、與情境,才知道如何調整提示詞、讓 AI 理解該如何幫我們解決。

在作業中會充分體驗到,跟 AI 溝通必須跟人一樣有策略地溝通,不然,沒對 AI 講清楚我需要什麼、它當然幫不了我。


我的學習收穫

經過三週的影片與 AI 工具大量實作練習後,我累積了以下心得:

1. AI 不只是工具,更是重要學習資源

LLM 不是只拿來生成程式碼,然後看程式碼能動、就當作完事了。AI 是強力的知識來源!

這門課提到的兩個主題讓我特別有感:寫程式的安全性穩定性,AI 幫我抓出了例外處理(Exception Handling)、潛在風險等錯誤後,我學會多花幾分鐘、進一步請 AI 說明它為什麼那樣子改寫程式碼,這樣與 AI 對話學習過程中,我會累積更多我原本不知道的軟體知識、逐漸建立寫程式的好習慣。

例如,在 AI 告訴我之前,我根本不知道 Python 的遞迴(Recursion)的預設最大深度限制是 1,000 層!

AI 比我更能辨識程式盲點,我也向 AI 學習它分析程式碼的眼光
(截圖來源:DeepLearning.AI – Coursera

2. 脫離單純的工程腦,像產品經理般思考

使用 LLM 大幅提升寫程式的工作效率後,我們有更多時間專注在最重要的事情上:了解使用者的需求、還有產品規格(Product Spec)。要是不能解決使用者的真實問題、或是為專案產生商業價值,就算生成毫無 Bug 的程式碼,也毫無意義吧!

以前我們光是要寫出能運作、沒錯誤的程式碼,就要花不少時間,現在 LLM 幫我們省下大把時間後,我們可以把自己當作產品經理,閱讀 AI 提供「看似完美」的程式碼,判斷它到底是否符合我們對設計的要求,如果不符合,我們也有更多心力思考到底是問題是在軟體工程、還是產品策略?

3. 何必單戀一個模型?

不同的 LLM 模型有不同特性與強項,即使使用一模一樣的提示詞,不同的 LLM 模型(例如 Gemini、ChatGPT、Claude 等等)可能會提出不一樣的回答。雖然社群媒體上整天有人發表「XX 模型才是最強」這種言論,但實際工作中,我們絲毫沒必要堅持只用一種模型,可以用不同模型來執行相同任務,快速得到不同的解決方式能幫助我們迅速進行利弊權衡,更能像我在第一點提到的 — 觀察多個模型的回答,就像是向不同教學風格的老師求教一樣,讓我從 AI 提供不同的解決方案中持續學到新知!

我在這門課最終的旅行推銷員問題作業中,深刻體會到這點,我更新了好多種提示詞,都得不到符合要求的程式碼修改方式,我也沒搞清楚自己少寫了什麼提示詞要求。而我把相似的提示詞換到幾個不同的 LLM 模型後,其中一個模型的回答把它的思考方式講的特別詳細,我才發現原來我沒把我需要的記憶體限制說清楚、AI 沒聽懂,難怪解不出作業問題。

4. 與 LLM 合作,而不是工作丟給它就自動完工

就算是跟聰明的人類隊友一起工作,要完成一項複雜任務,本來就需要一連串的討論;跟 LLM 一起寫程式也是相同道理,是透過來回討論(iteration process)來完成任務,想在一次問答(一個 Prompt)達成目的,實在是不太實際的期望。

畢竟,連人類都不會「通靈」了,何況是 AI 呢。

完美的輸出結果通常不會在一次 Prompt 就出現,你可能需要基於 AI 目前給你的程式碼來修改提示詞、或是再補充新的提示詞。在課程的實作練習中,我經常發現,如果輸出結果不符合我需要,不是因為 AI 模型不夠聰明強大,而是我自己忘記把自己的特定程式需求寫進 Prompt 中,像是例外處理、可擴展性(Scalability)等等,而這些來自我自己的疏失,也是我經過幾次與 LLM 對話、仔細觀察自己的 Prompt 與 AI 回覆內容後,才陸續發現的。

(延伸閱讀:Google Gemini 的官方 AI 指南也開示 – 別想一次 Prompt 就完工!


結語

Introduction to Generative AI for Software Development」這門課不僅是教導你如何用 AI 寫程式,更重要的是培養「與 AI 協同工作」的能力與態度。課程從基礎概念講起,帶你深入了解生成式 AI 的運作原理,並透過實作練習,讓你動手訓練與親身體會如何撰寫有效的提示詞,與大型語言模型合作解決複雜的程式問題。如果你是想提升程式開發效率的軟體工程師或資料科學家,或是對 AI 在軟體開發領域的應用感到好奇,請務必花點時間完成學習 這門課。你將學到如何利用 AI 協助你分析程式碼、找出潛在問題、並激發你的創造力,寫出更高品質的程式。

給 AI 愛好者的延伸閱讀:


coursera-generative-ai-codingCoursera 課程連結


這篇文章有幫助到你的話,歡迎追蹤好豪的 Facebook 粉絲專頁 或者 Threads 帳號,未來我會持續分享我學習使用 AI 工具與寫 Python 程式的心得;也推薦你點選下方按鈕,把此文章分享給對 AI 有興趣的朋友們。

推薦閱讀