如果你是軟體工程師,相信應該使用過 GitHub Copilot 等 AI 輔助開發工具,或是要求 ChatGPT 生成過程式碼。許多目標明確、不需要複雜思考的的程式碼,很適合交給 AI 生成,不僅省時也省下精力。
由於我是 iOS 與前端工程師,近期很常要 AI 生成「動畫」——動畫的程式碼簡單、目標也明確,但是參數很多,每次都要重新查一次。以前時程緊迫時,常常直接省略動畫,或改用最簡單的淡入淡出;但現在有了 AI,可以快速生成基本且合用的動畫,我只需要微調參數即可。這讓產品體驗與完成度提升了一個檔次。
當然,工程師的工作並不僅止於「生產程式碼」,在寫程式以外,AI 也能協助不同層面的工作。對於「工程師如何運用 AI 提高生產力」,本文將按照工程師的職涯與類型,分別討論初階工程師、資深工程師與獨立開發者可以怎麼運用 AI 增強自己的表現。
初階工程師:與 AI 共學
有個流傳起碼十年的老笑話是:工程師每天的工作,就只是去 Google 現成的解法,然後複製貼上 StackOverflow;如今,這個笑話可能會被改成「複製貼上 ChatGPT 生成的結果」。
初階工程師的工作,大多是完成指定的明確任務,並從中學習技術與協作能力。ChatGPT 問世後,許多討論圍繞在「初階工程師是否會被 AI 取代」。然而我認為,AI 目前對於初階工程師來說,更重要的是多了共學的夥伴,而得以加快學習速度。
為了成長,初階工程師不能只滿足於完成任務,更要尋求從任務中,盡可能學到更多。關於如何透過 AI 加速學習,我有三個想法:
不要停留在「複製貼上」
過往初階工程師很依賴 Google 搜尋或是在 StackOverflow 找答案,如今多了一條「問 AI」的管道。AI 的優勢在於,可以不斷生成程式碼,並且詳細解釋不同的寫法,因而省去了許多搜尋的時間。
但是,正如同從 StackOverflow 複製貼上程式碼永遠不是學習的好方法,從 ChatGPT 複製貼上程式碼,也不會讓人自動變成更好的工程師。不論過去與現在,學習路徑在本質上並沒有不同:遇到問題、尋找解法、嘗試錯誤、徹底理解。學習的最好辦法,是多花一些時間,搞清楚為什麼程式碼能動;甚至「故意試試看別種寫法」,不論是寫錯或意外發現另一種思路,都有助於理解背後的原理與邏輯。
與 AI 討論:這是最好的寫法嗎?
學習寫程式時,應該不斷反問:這是最好的寫法嗎?不要假設 AI 寫出來的就是完美解,就如同我們不該假設 StackOverflow 上網友的寫法是最佳解。
如果把 AI 視為共學夥伴,可以直接問它為什麼這段程式碼正確(或錯誤)。例如,可以直接說明「我正在學習怎麼寫程式,還有沒有其他種寫法?」「每種解法的優劣勢在哪裡?」並從中理解不同寫法間的差異。
AI 的表現反映使用者的能力
值得一提的是,AI 的產出品質,實際上與使用者的能力相關。當使用者自己懂得愈多,就愈能引導 AI 生成正確的程式碼。
舉例而言,由於我相當熟悉 iOS 與前端開發,有時候當我要求 AI 生成時,會直接指定我認為最合適的 API、function 或程式邏輯。而如果沒有指定,AI 通常無法第一次就寫出最好的解法,或是因為缺乏脈絡而寫出錯誤的程式碼。
這也是另一個不該直接假設 AI 寫出完美解的好理由——作為初階工程師,很可能根本不知道該怎麼問問題,才能得到真正的答案。更好的做法是自行研究後,將找到的資料放入 prompt 內,將 AI 視為討論對象而非解答機器。
資深工程師:專注力重新分配
對於資深工程師而言,撰寫程式碼已經不是主要的工作。在 AI 減輕了部分寫程式的工作量後,資深工程師可以將更多精力,投入於架構、技術選用、產品與使用者等具有更大綜效事項上。AI 對於資深工程師帶來的生產力提升,不只是「節省了一些時間」,而是透過專注力的重新分配,釋放出更多潛在價值。
而這也是 Sam Altman 在 Bill Gates 的 Podcast 上提到的:「如果讓工程師的效率變成三倍,這不只是讓他們可以做三倍的事,而是讓他們可以用更高的抽象層次做事,使用更多的腦力。就像從打孔卡到高階程式語言,不只是寫程式快一點,而是可以做出性質上截然不同的全新事物。」1
知名電子報《The Pragmatic Engineer》在 2023 年有一篇文章〈Measuring developer productivity? A response to McKinsey〉,2作者 Gergely Orosz 和 Kent Beck 討論應該如何衡量工程師的生產力。他們建構了一個模型,將生產力分為「努力(Effort)」→「產出(Output)」→「成果(Outcome)」→「影響(Impact)」。愈後面的生產力,愈難設立指標追蹤,但是和團隊或公司的目標愈一致。
(這是我們參考原文重繪的版本。)
當 AI 愈來愈擅長生產程式碼,單純的「努力」或「產出」已經不足以用來判別工程師的生產力。資深工程師,得以將更多心力放在產出「成果」與「影響」,在更高層面幫助團隊。
獨立開發者:成為全能個體
AI 或許對於獨立開發者、小團隊內的工程師,有最大的加成。過往需要跨部門合作的任務,現在有許多都可以由單人完成,如:內部工具的 UI 設計、圖片生成、翻譯等。單一個人的覆蓋範圍擴大,對於新創或獨立開發者而言是顯著的生產力提升。
隨著 AI 能力不斷擴大,未來包含語音、音樂、UI 設計,都可能直接交給 AI。屆時,我們或許將能看到 Sam Altman 預測的「價值 10 億美元的一人公司」——借助 AI 的能力,只靠著創辦人一個人,便做到 10 億美元的市值。
AI 最適合「有品味,但缺乏技術的人」。對於能分出圖片的美醜,但自身沒有繪圖能力的人,可以利用 AI 反覆生成,再從中挑選出品質夠好的圖片,作為人力不足時的替代方案。AI 翻譯也因為可以考量情境與脈絡,得以加速國際市場的推展,在商業層面幫助獨立開發者與新創團隊的成長。
當然也不只是工程師,才有機會享受 AI 的加成。PM、UI 設計師、行銷⋯⋯不同職務的人,只要能定義出自己想做的產品,並且學會基本閱讀與修改程式碼的技能,並可能與 AI 一起開發產品。
AI 並非取代,而是增強
相較於「AI 將取代什麼工作」,我更常將 AI 視為可以大幅提升能力的工具,如同耕耘機之於農業、廣播之於音樂產業。即使在可預見的未來,將會出現足以自行完成任務的軟體工程師 agent,我也不認為工程師會因此被取代。屆時的「工程思維」將會與現在相當不同,工程師與 PM 的界線將更進一步模糊,如何與 AI 協作並產生影響力。
況且,人類很擅長「發明工作」。一旦每個人的生產力提升,我們將會開始著手解決那些原先被視為「不可能」的問題。相較於擔憂現在的工作被 AI 解決完,我更期待能夠解決那些從來不曾想像過的問題。
延伸閱讀
- GitHub Copilot 教學:AI 程式開發助理如何使用
- AI 工具大全:2024 好用的 AI 工具推薦
- 軟體團隊與 AI 協作的成與敗:資深工程師的實戰經驗與建議
- ChatGPT 是什麼?AI 寫程式工具如何幫助軟體工程師
-
Measuring developer productivity? A response to McKinsey,我們曾經介紹過這篇文章,對於《The Pragmatic Engineer》電子報感興趣的讀者,可以參考這篇文章。 ↩︎
如果你覺得這篇關於 AI 的文章很有幫助,想要了解更多,歡迎填寫下方問卷,免費領取「LLM 應用開發 Roadmap」: