> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/zh-hant/2023/w11-pragmatism-what-gpt-can-and-cannot-do-on-its-impact-on-software-development.md).

# W11-務實主義：GPT的能與不能——論對軟件開發的影響

### 務實主義的立場 <a href="#a1fb1ea1-fa48-44d0-bb65-5ec80413109a" id="a1fb1ea1-fa48-44d0-bb65-5ec80413109a"></a>

**更願意支持偏好行動的務實主義者的觀點。**

正視現實，以發展的眼光去思考GPT如何影響軟件開發，而不是能否取代人類。在終極命題上“打轉”往往是空洞的。對悲觀到放棄，或者樂觀到無視的觀點，都可以視作為懶惰。計算機的出現與流行足以稱得上劃時代，它所創造的東西遠遠大於所取代的，我們更應該關注生產要素的結構性變化給社會帶來的切實影響。就像80、90後在小時候學習的心算、書法，已經不再成為當代家長的雞娃項目。

### 從Copilot能看出什麼 <a href="#ce593370-e50e-4f6b-b33f-14d7e22a2eac" id="ce593370-e50e-4f6b-b33f-14d7e22a2eac"></a>

從Github Copilot、Tabnine 等IDE插件感受一下GPT的優劣

**擅長的**

* 解放枯燥、重複勞動。如一次性腳本、CRUD、單元測試等。
* 新領域的學習和探索。如用新語言、框架、庫等快速上手。
* 機器的優勢。如寫正則、SQL、CronJob等。

**存在限制的**

* 安全問題。公司內現在就禁用了。
* 著作權的問題。由於Copilot推理出來的代碼片段來源於Github中的某個開源項目，所以會涉及到license相關產權問題。
* 準確性問題。比起搜索引擎，GPT給出的錯誤答案更容易讓人相信。GPT推理出來的答案是傾向於生成理想的答案（plausible answers）而非正確的答案（correct answers）。

### 對軟件開發的影響 <a href="#fe7a1851-1071-4294-9dd3-9490d96308a6" id="fe7a1851-1071-4294-9dd3-9490d96308a6"></a>

**編碼方面**

* 技能和學習方式需要升級。需要具備更加深入的計算機基礎技能，比如編譯技術。對於數據結構和算法，框架和第三方庫的 API 如何調用，這些知識和技能已經非常容易獲取，刷得熟練不見得是競爭力了。
* 需要積累更多業務相關的知識，增強對業務的理解力和洞察力，提升自己在技術方面的創造性。編寫應用程序的重點，可能不再是寫代碼，而是通過人工智能，訓練出能夠反映領域特點的模型。

**架構方面**

* 架構師本質是業務和技術的橋梁，核心職責是深入理解業務需求，然後判斷業務需求帶來的系統複雜度，然後設計備選方案來應對或者降低複雜度，最後基於各種情況來做取捨。
* 業務需求本身的差異性無法訓練。比如不同的部門、不同的團隊去做同一個產品，產生的需求是不一樣的。
* 架構設計過程中的判斷無法標準化。架構師要根據利益干係人的訴求、團隊的技術進程、業務的發展情況來做判斷和取捨，這些事情不能標準化也不能被訓練。
* 技術本身在不斷演進，架構過程需要創新能力。ChatGPT能創造出革命自身的下一代產品嗎？目前的判斷是不行。
