在巨人的肩膀上握好方向盤:重新定義 AI 時代的開發者角色
只經過三個月左右的時間,我的生活已經離不開 AI
從一個完全不靠 AI,每一行程式都親自輸入的工作模式,轉變成今天重度依賴 AI 為我生成程式、文件。只經過三個月左右的時間,工作型態發生非常巨大的變化。
不單是程式碼的生成與相關測試,包含討論程式的結構、技術框架的選擇、資料庫的規劃,以至於 CI/CD 腳本的撰寫,統統離不開 AI 的協助。
對於 AI 的依賴,並不是因為我自身的技術能力變弱了,而是因為 AI 把我的「胃口變大了」。它不單單像是一個可以站在其肩膀的巨人,還可以讓巨人往你指的方向前進。
那麼,誰還會想離開巨人肩膀,回到地面上用自己的雙腳走。用盡全身之力也抵不過巨人的隨意一步。所以不該想著靠人力去超越 AI,而是和它好好合作。
過去方案無法選擇的種種限制,被 AI 消除了
以往評估不同技術的導入時,得先花費數週的時間去了解其特性、其它人的評價等資訊,熟悉使用的方式與其開發思維。同時需要思考現有的專案成員所會的技術,接受程度與上手要花費的時間。同時得盤點既有的程式,有哪些可以延用,哪些需要大幅改寫。
進入導入階段後,每一個開發者都需要時間去改變習慣,與選用技術貼合,過程中會必然會讓開發變慢,產生一些不太理想的程式,需要額外的時間回頭修改,或增加測試的能量,來確保產品的功能如預期。
因而在緊迫的開發時程,沒有能返工重來、試錯再改進的餘裕之下,延用舊的、已經被證明穩定的作法,就變成唯一可行的方案。因為即使失敗的風險再低,也承受不住發生時要付出的代價。
而 AI 能依要求快速産生程式碼,遠超人類撰寫的速度,恰恰減緩了時間的壓力。而強大的改寫能力,也能夠以不同的程式框架、資料庫為的目標,產生相同功能的程式讓人進行比較。「需要先熟悉框架思維才能使用」已經不再那麼的必要。
當產能提升,選錯方案後,讓 AI 改寫回既有作法的代價變低,嘗試各種不同方案的機會很自然地變多了。
更多元的答案與觀點,開啟新的學習之路
當程式可以由 AI 代勞不用自己輸入,當嘗試不同的方案變成可能。思考的重心,就可以「由怎麼用最少時間、正確完成功能?」變成「哪一種解決方案組合的功能最理想?」
在這樣的狀況下,我的眼界漸漸被打開了。發現原來熟悉的最佳實踐,已經因為整體環境的改變,而其它幾個更好的方案出現,自己的日常由本來的程式輸出,變成了天天吸收、使用的新知識。
在討論商品具有不同類型的屬性,每一種都能變成查詢條件時,我學到了刻面搜尋(Faceted Search)這個名詞,也透過與 AI 反複調整,得到足以應付的資料庫 Schema 與查詢程式。
在討論內部驗證環境的建置,我學到主機、磁區規劃、設定檔擺放等許多想法。不單看到了資源充足時的作法,也得到了在我當前的有限條件下,能夠運作起來的方案。
以前那些得花大量時間,閱讀許多書籍後,才能內化、歸結出來的答案,或是得在相關工作數年才能累積的經驗。現在只要「好奇」, AI 就能讓我窺其一二。
透過要求以更淺顯的方式說明,或是以自己的方式描述來得到 AI 回饋確認。得到的那些資訊雖然無法讓我成為該領域的專家,但讓我更有大局觀,能更有信心的去選擇方案,因為知道它們有什麼樣的特性,能幫我解決什麼樣的問題。
開發的速度與產量都有所提升,但並非每次都往對的方向
「出現幻覺」是 AI 一直以來無法完全解決的問題,自己在互動的時候,也遇到過幾次。那種在正確答案邊繞來繞去就是到不了的無力感,滿讓人難受的。
排除生成本身是一種創意,與真實兩者無法同時完全滿足的那個部分…
在我個人的觀察,許多時候的「幻覺」,是因為給它的資訊不夠清楚。在 AI 大多自動補足沒提及的細節,而不是要求人類提供更完整資訊的特性下,需要 AI 猜的部分越多,猜歪的機會當然就越大。透過給予更完整的背景,能更快地得到想要的答案。
另一種狀況則是在 AI 的記憶機制上,它還沒能好好區分出一串對話裡,語意的脈絡。當對話裡夾雜了一些突發奇想冒出的問題,或是討論後我所放棄的方案。它並不能總是清楚判斷那些是「非討論重點」或「已經放棄的想法」,而持續影響著後續的對話,最後讓我不得不開啟新的對話重新開始。
最後一個我還沒找到緩解方式的問題,就是提示詞 (Prompt) 與設定檔。即使我透過 AI 協助產生了很完整的提示文檔,但偶而仍會遇到指示被忽略,出現預期之外結果的狀況。其中運作的原理對我而言仍是黑箱,只能期待未來能夠出現夠一致、穩定的作法。
AI 給出的答案的有隨機性,需要快照與記錄去「穩」下來
因為會出現意料之外的狀況,所以「保護已有的成果」與「讓事情快點回到正軌」就變得重要。
在保護成果方面,我選擇了是差不多統一版本管理的 git 方案,每次只前進一點,完成後建立 commit 來為「可用版本」製作快照,能夠在透過指示無法將問題修正的時候,還有一個「回到可用狀態」的選擇。也因為有了這個保險,就能夠更大膽的讓 AI 測試各種作法。
在不得不重啟對話的狀況下,如果能將之前的成果,總結成文字作為起點,會大大加快 AI 進入狀況的速度。因此除了讓 AI 產生程式,將討論的內容總結與記錄製作的想法,就變得很有價值。我發現到最近的 AI 代理也開始主動留下一些記錄,讓新對話裡的 AI 也能延續之前討論,給予更一致性的回應。
不只是在自己的電腦,在多人開發之下,其它成員也能透過版本管理取得最新的文件。讓所有成員的 AI 無論是哪一家公司的,都會依同一份文件行事,省去了許多溝通與交接的時間,更可以避免許多「開發者自己忘記」的情形。
有趣的地方在於,本來撰寫文件是件浪費時間的事,寫了也不見得有人看的內容,現在變成了 AI 有耐心看完的關鍵,重要性大大的提升。
要把握好 AI 這台的高速工具的方向盤,需要架構師的思維模式
當工作的內容由輸入程式碼,變成指揮 AI 往正確的方向前進。怎麼把握好這個方向盤,就是一個很值得思考的課題。
當不再需要擔心文件的文字過多,而是怕細節不夠讓 AI 清楚狀況的前提下,有結構化、能完整記錄的文件就變得很有價值。
這些人類能夠看懂的文件,自然成為能承截規劃想法的好地方。將規劃時的想法,選擇方案的理由,與當時的限制記錄下來,不再是浪費時間的事情,而是能夠幫助 AI 給出更針對應的答案。
發覺架構師的思維更重要,不單單是專案本來就需要以不同的層面進行的考量。而是原本人與人溝通會損失、遺忘的細節,現在能夠透過 AI 的耐心被「撿回來」。在 AI 能大量承接實作工作的前提下,我的角色不再只是把功能寫出來,而是更清楚地定義「什麼值得被寫」、「要往哪個方向演進」。
AI 不是取代判斷,而是讓判斷終於有空間與機會被好好使用。