《Team Software Engineering with AI》這門課程是《Generative AI for Software Development》的第二段課程,同樣也是安排了三週的內容。課程設計的目標,是幫助學員全面了解生成式 AI 在軟體開發中的應用,並提供一套從測試與除錯、文件撰寫到依賴管理的完整學習路徑。課程在三週內,從第一週的內容逐步深入,讓學員從基礎環境設置開始,逐步掌握生成式 AI 工具的應用方法,並將其實際應用於開發與團隊協作中。
第一週的課程除了環境設置之外,主要聚焦於測試與除錯。這週的設計旨在幫助學員理解測試與除錯的重要性,並學習如何透過生成式 AI 工具(如 ChatGPT)來優化測試流程。跟第一門課一樣,平台本身有提供 LLM,以及開發環境,另外也有教材跟延伸練習的程式碼可以下載。學員首先熟悉 Jupyter Notebook 的操作以及 ChatGPT 實驗室的使用方法,建立穩固的技術基礎。在測試部分,課程詳細介紹了探索式測試和功能測試,並教授如何設計自動化測試來提升效率。除此之外,學員還會接觸效能測試與安全測試的基礎知識,並學習使用 AI 工具分析程式碼中的安全漏洞,進一步理解如何將 AI 應用於日常開發工作中。
第二週的課程重點轉向文件撰寫。文件是團隊開發中不可或缺的一部分,但往往容易被忽略。這週的課程旨在幫助學員掌握撰寫高效技術文件的技巧,提升團隊協作的效率。課程不僅介紹了內嵌註解與文件註解的實踐方法,還探討了多語言環境下文件的適應性。學員將學習如何使用生成式 AI 工具來輔助文件撰寫,並通過自動化工具如 Sphinx 生成結構化文檔。此外課程強調了文件在生產環境中的重要性,讓學員了解文件維護對專案長期發展的影響。
第三週的課程專注於依賴管理,這是軟體開發中一個易被忽視但至關重要的領域。本週的課程幫助學員理解如何解決依賴衝突,並提升專案的穩定性與安全性。學員將學習虛擬環境的設置、依賴研究與安全分析等基礎知識,並進一步探索如何利用生成式 AI 工具處理多語言環境中的依賴問題。此外課程中還包括 GPT 的應用實作,讓學員能夠熟悉使用 AI 工具解決版本與依賴管理問題,並將所學應用於實際專案中。
照例每一週的課程都有作業/考試,程式實作的部分是要求將 Python 2 的舊程式,透過 LLM 的協助來更新為 Python 3 的新版程式,同時也實作了模組依賴版本不相容的解決方式。這跟我們實務開發時經常面對到的困境一樣,以往沒有 LLM 的協助得到個大論壇搜尋取經,或是詢問其他大神。如今 LLM 就是一個隨時可以提供個性化服務的大神。
整體課程是以實務應用為導向,注重理論與實作的結合,讓學員在學習過程中能即學即用。生成式 AI 工具不僅能幫助學員提升開發效率,還能解決許多開發中常見的問題。這門課程強調了技術與團隊協作的平衡,從測試與除錯的基礎開始,到文件撰寫的專業化,再到依賴管理的穩定性,循序漸進地引導學員掌握生成式 AI 的應用精髓。對於希望提升技能並優化開發流程的工程師或技術管理者來說,這是一門不可多得的課程。這門課最後我用了七天的時間(一天平均為八小時),順利完成並取得證書。
Leica CM 相簿 https://flic.kr/s/aHBqjBztRL
Leica M6 相簿 https://flic.kr/s/aHBqjBYr2B
去年六月我收到了老婆(小孩有插花)送給我的生日禮物,一台我期待很多年的隨身底片相機 Leica CM,同時因為我跟佑昌購買的 X100VI 一直沒到貨(後來發現被詐騙),所以我就自己買了一台 Leica M6 作為生日禮物。
使用這兩台相機已經半年,這個月收到了 Flickr 的兩年自動續約扣款通知,於是把這段時間拍攝的底掃檔案都上傳到 Flickr 用相簿來歸檔。我很喜歡 Leica CM 的輕便好操作,全自動對焦加上鈦金屬機身(只有 300 多公克),是真正的口袋相機。雖然二手市場上這台相機釋出不多,且價格很驚人(依品相在六萬到九萬台幣之間),但我使用下來還是強力推薦它。
至於純手動旁軸黃斑對焦的 Leica M6(non-TTL,0.72),我使用了 Leica 28mm f2.8、50mm f2、Voigtlander 75mm f1.5 這三顆鏡頭,操作起來很有樂趣,記錄下了很多我自己很喜歡的時刻,以底片機來說 Leica M6 很符合我的需求。
拍照這麼多年,對於徠卡這個品牌始終有一種情懷,當然它的高價也是這些年來一直讓我卻步的原因,雖然算起來我其他相機跟鏡頭的花費,買上一整組最新的 M 機跟鏡頭都還有找,可是沒真正擁有跟認真拍攝之前總是很猶豫(之前有借過幾台 Leica 試拍)。這半年使用下來,真的覺得相見恨晚啊!
我還是喜歡我的 Nikon、Fujifilm、Olympus、Ricoh、SONY,每一台相機跟鏡頭的使用與操作都會帶來不同感受,而使用了 Leica 底片相機之後,又有了全新的體驗與氛圍,如果你也跟我有類似的情懷,推薦有機會要使用看看。
從基督城的Hadleigh Boutique Lodge啟程時,原本對但尼丁的旅程沒有太多期待。然而,在享用完早餐與房東Jon的閒談中,得知他曾是賽車手的經歷,更推薦了我們路上不容錯過的Moeraki Boulders。這個建議,為我們的旅程增添了意想不到的驚喜。
在Koekohe海灘上,這些最大可達三公尺的圓石散落在岸邊,完美的球形讓人難以相信是自然形成。在細雨綿綿的天候下,整個畫面籠罩在一層迷濛的霧氣中,浪花不斷拍打著岸邊,為這些神祕的圓石增添了幾分詩意。我選擇以黑白的色調來呈現這片景致,試圖捕捉當下的氛圍。
抵達但尼丁後,我們前往了令人期待已久的Larnach Castle。這座位於Otago半島中部山丘上的城堡,雖然找路時有些波折,但沿著海岸線蜿蜒而上的道路,美景足以撫平所有煩擾。傍晚時分,我們抵達了這座紐西蘭唯一的城堡,迎接我們的是溫暖的接待與意外的升等驚喜。
在城堡的晚餐是一場難忘的饗宴。我們被安排在特別的VIP餐廳,享用著當地的黑皮諾配上精緻的餐點,聆聽著這座充滿歷史的房間裡每一件傢具背後的故事。城堡的社交時光更讓我們結識了來自世界各地的旅人,特別是那位健談的英國醫生,與他分享著香港的新年風情,讓這頓晚餐增添了幾分國際色彩。
隔天清晨,在城堡周邊漫步時,霧氣繚繞的花園宛如童話世界。享用早餐時,又遇見了昨晚的醫生夫婦,延續著未完的話題,這樣的早餐體驗讓人感受到旅行中難得的溫暖。
離開城堡後,我們前往了Taiaroa Head的Royal Albatross Colony。在這個被強勁海風吹拂的海角,我們不僅看到了孵育中的信天翁,還在岸邊發現了悠閒的海豹與各式海鳥,構成了一幅生機盎然的畫面。
在但尼丁市區,我們造訪了著名的火車站、聖保羅大教堂,以及熱鬧的八角廣場。在八角廣場附近的餐廳用餐時,意外捕捉到一個溫馨的畫面:一位手臂有著鮮豔刺青的父親,與他如洋娃娃般可愛的女兒。這樣強烈的對比,恰恰呈現出這座城市多元而溫暖的一面。
啟程前往皇后鎮的路上,Central Otago區域展現出截然不同的風貌。從鬱鬱蔥蔥的森林,到光禿的山坡,再到湖光山色,每一個轉彎都帶來新的驚喜。這座最冷最熱也最乾燥的高原,用它獨特的地貌,為我們的但尼丁之旅畫下完美的句點。
從啟程到抵達基督城,歷經了二十四小時的長途跋涉。當飛機降落在基督城上空時,疲憊的身軀終於看到了這座城市的輪廓。透過機艙的雙層窗戶,我小心翼翼地調整相機參數,努力捕捉這第一眼的風景。
在領取了租用的Toyota Camry後,我駛向了下榻的Hadleigh Boutique Lodge。這座被綠意環繞的精品旅館藏身於Eversleigh Street的巷弄中,低調的外觀與紅色柵欄,讓它看起來就像一座普通的住家。熱情的主人Jon與Shirley為我們帶來了溫暖的接待,細心介紹著每一處設施。房間內的一磚一瓦都充滿巧思,從木質地板鋪設的厚實地毯,到浴室中石材與木製傢俱的完美融合,處處展現出精緻的品味。最令人驚喜的是那個能俯瞰後院花園的陽台,繁茂的樹木既保護著私密性,又不會阻擋美麗的景致。
基督城大教堂是這座城市最具代表性的建築之一,很可惜在地震後只能從照片來回憶這棟美麗的建築。教堂內的鐘聲交織出動人的旋律,而偶然遇見的合唱團練習,更為這神聖空間增添了一份莊嚴的氛圍。在這裡,我看到了一場花藝比賽緊接著一場告別式,生活的百態在此交織,見證著這座城市居民生活的點點滴滴。在拍攝教堂內部時,我選擇不使用閃光燈,讓自然光線通過彩繪玻璃灑落,呈現出空間的層次感,同時也保留了這神聖場所應有的寧靜。
穿梭在街道上的復古電車,是基督城最迷人的街景之一。這條始於1905年的電車路線,見證了城市的發展變遷。我特別喜歡在電車暫停時,尋找背景建築物的幾何元素與電車形成呼應的畫面。而蜿蜒流過市區的亞芳河,則為這座花園城市增添了幾分詩意。在河畔等待著捕捉平底船與拱橋上電車相遇的畫面時,我反而拍下了另一個驚喜的場景:橋上行人與電車交錯的瞬間。
這座城市的步調悠閒,街道綠意盎然,處處可見歷史建築與現代生活的完美融合。即使是南島最大的都市,基督城依然保持著怡人的生活氛圍,讓每個到訪的旅人都能在此找到屬於自己的片刻寧靜。
《Introduction to Generative AI for Software Development》是《Generative AI for Software Development》的第一段課程,它共安排了三週的時間,其課程的目標是希望參與者可以全面掌握生成式 AI 工具(如大型語言模型,LLMs)在軟體開發中的應用,並學會如何將其融入日常工作,提升開發效率、解決問題的能力,同時啟發學員探索更多應用的可能性。
課程從基礎概念開始,幫助學員了解生成式 AI 的運作原理,例如 Transformer 架構如何實現語言理解與生成,並讓學員認識到生成式 AI 與傳統軟體開發的差異與優勢。接著課程逐步引導學員學會與 LLMs 協作,透過角色設定和精準的提示工程,讓 AI 工具能針對特定需求提供專業建議。同時課程強調回饋與迭代的重要性,幫助學員在反覆互動中改進 AI 輸出的品質,逐步建立提問的能力與批判性思維。
課程中有不少實作練習,讓學員熟悉如何使用生成式 AI 協助完成程式碼的生成、效能優化,以及程式碼分析等工作。課程設計不僅涵蓋了資料結構與演算法的開發,還展示了如何利用 AI 驗證程式碼的效能跟安全性,讓學員在實務操作中體會生成式 AI 的價值與潛力。
透過這三週的學習,不僅能學會如何操作與應用生成式 AI,還能理解其背後的運作邏輯及 AI 的應用限制,進一步將其視為開發過程中的得力助手。課程的核心目標在於讓學員成為一個更高效、更有創造力的開發者,同時具備運用生成式 AI 解決實際開發挑戰的能力與信心。由於課程有一週的免費試讀,透過我這篇介紹大家可以考慮是否報名,進入與 AI 人機協作的領域來探究跟學習。
在課堂進行的過程裡,它提供了開發環境跟 LLM(GPT-4o)的資源,所以就算是初學者也可以在 coursera 課程平台上進行練習。授課老師 Laurence Moroney 在每一堂課都有提供下載的資料,包含課程影片、字幕、程式碼。因此需要延伸探究跟實作時,可以參考課堂上提供的附件。每一週的課程都會有作業/測驗,要求要達到 80 分以上才能過關,這些作業都是問答題,有的是複選,若沒有達到標準可以重作。
在第三週的課程會迎來第一個程式作業,是透過平台內建的 Jupyter 來進行開發,並上傳評分。除了計分的作業/測驗之外,也會有延伸的題目,讓我們自行延伸探究跟練習。我自己是花費了九天的時間(平均每天用八個小時上課跟練習),完成了這堂課的內容。以下我簡述課程得大綱,以及我自己的心得。