過去幾個月來,我跟很多剛剛步入前端開發(fā)領(lǐng)域的朋友們交流過,大家都對步步緊逼的 AI 感到焦慮。他們看到 GPT-4 等工具帶來的令人印象深刻的演示,擔心自己學(xué)成 HTML/CSS/JS 知識之日,就是崗位消失之時。
澄清聲明我先向大家承認,這個話題跟我有切身關(guān)聯(lián):我的工作就是在網(wǎng)上教學(xué)員開發(fā)軟件。如果開發(fā)者崗位逐漸消失,那我的飯碗也就完了。
但我向大家保證,我在本文中表達的所有觀點都出于自己的真實判斷。歡迎大家自行斟酌這些觀點是否存在偏見。
CSS 語言最初發(fā)布于 1996,隨 IE 3 一同推出。兩年之內(nèi),首款“無代碼”網(wǎng)站構(gòu)建器 Homestead 就跟大家見面了。
Homestead 能幫助人們在無需編寫代碼的情況下,輕松構(gòu)建起自定義網(wǎng)頁:
也就是說,從 Web 開發(fā)這類崗位剛剛出現(xiàn)時,就有人擔心會被某些新技術(shù)所淘汰。2000 年代的威脅源頭是 WordPress,2010 年代是 Webflow,2020 年代初則是“無代碼”工具。
其實從某種意義上講,Web 開發(fā)者確實已經(jīng)過時了。如今,本地面包小店、牙醫(yī)診所或者藝術(shù)家如果需要一個網(wǎng)站,那大概率不會花幾萬美元聘請開發(fā)者從零開始做設(shè)計。他們可以直接前往 SquareSpace,找到自己喜歡的模板,然后每月花 20 美元來運營自己的業(yè)務(wù)門戶。
上星期,OpenAI 公布了 GPT-4,期間有一段令人印象深刻的演示:GPT-4 能夠?qū)⑹掷L的網(wǎng)站草圖轉(zhuǎn)化成功能齊全的網(wǎng)站,甚至包括一些 JS 來連接“Reveal Punchline”按鈕。
這功能確實很酷,在原型設(shè)計方面有很大的潛力……但我們還是得明確一點:幾十年來,我們的 Web 開發(fā)者負責構(gòu)建的從來不是這類頁面。演示中的 HTML 文檔跟目前前端開發(fā)者編寫的各種代碼,可以說是天淵之別。
到目前為止,我個人看到的大部分演示都非常有限:要么是一個簡單的 HTML 頁面,要么是 JS 函數(shù)。總之,就是那種開發(fā)者可以隨手搞定的東西。
但這一切還僅僅只是開始!如果 AI 繼續(xù)保持目前的發(fā)展速度,再過幾年就能構(gòu)建起完整的應(yīng)用程序了,對吧?
我當然不是什么大語言模型專家。但對于 GPT-4,我完全能夠理解它的宏觀工作原理。
從本質(zhì)上講,大語言模型是一種超級強大的文本預(yù)測器。給定一個提示,它們就能使用機器學(xué)習(xí)來嘗試找到最可能符合提示要求的字符集。
OpenAI 等廠商花費了大量的時間和精力來調(diào)整模型,借此改善輸出質(zhì)量。一大群人工標者對模型的輸出進行“評級”,借此引導(dǎo)模型不斷學(xué)習(xí)和進化。
如果大家體驗過 CHatGPT 或者 Bing 的 AI 搜索等工具,就會發(fā)現(xiàn)這些回答大概有個 80% 的正確率,但 AI 卻表現(xiàn)得像是有 100% 的把握。
大語言模型無法驗證或者說測試自己的假設(shè),無法確定自己的表達內(nèi)容是否為真。它們還是在玩概率游戲,猜測給出的字符應(yīng)該會跟用戶在提示中輸入的字符相匹配。
有時候,AI 甚至?xí)o出非?;闹嚨幕卮?。OpenAI 團隊將其稱為“幻覺”。
隨著技術(shù)進步,預(yù)計某些粗糙的問題會被一一克服。但從根本上講,AI 或多或少還是會存在準確度問題。畢竟 AI 工具沒有任何機制能夠?qū)ψ约旱捻憫?yīng)做出客觀驗證。
因此,準確率可以不斷提高,但永遠達不到完美。而趨于完美,正是 AI 真正取代 Web 開發(fā)者的前提。如果它本身不是程序員,那就無法判斷哪些部分是對的、哪些是錯的。AI 自己發(fā)現(xiàn)不了“幻覺”。
但大家別急,我也認線 的演示,AI 似乎能夠自我糾正!只要復(fù)制 / 粘貼錯誤消息,它就能找到并解決問題。
但是……并不是所有幻覺都會引發(fā)異常。比如說,我最近用 GPT-4 在 React 上生成了一個〈Modal〉組件,雖然輸出非常好,但還是存在一些可訪問性錯誤。創(chuàng)建應(yīng)用程序的人可能注意不到這些問題,不過最終用戶肯定會發(fā)現(xiàn)!
還有一點:生成一個 50 行的 HTML 文檔,跟輸出生產(chǎn)就緒的 Web 應(yīng)用程序之間根本就不是一回事。像博客這樣的小型 JS 應(yīng)用就有大約 6.5 萬行代碼,總計 900 多個文件。這還不包含寫作文本,單是 JavaScript 和 TypeScript 的體量。
也就是說,即使準確率達到 95%,在這樣的應(yīng)用規(guī)模下也將很難調(diào)試。這相當于一位開發(fā)者用幾個月時間構(gòu)建一個巨大的項目,但卻從未做過任何代碼測試,直到 100% 完成后才加以驗證。這不是生產(chǎn)力提升,而是前所未有的噩夢。
AI 不是什么神跡和魔法,它的質(zhì)量直接取決于訓(xùn)練數(shù)據(jù)。而代碼片段在互聯(lián)網(wǎng)上隨處可見,往往高度通用。相比之下,每個代碼庫都是獨一無二的,網(wǎng)上鮮有大型開源代碼庫。那么,AI 要如何學(xué)會構(gòu)建能夠?qū)嶋H應(yīng)用的大型項目?
按現(xiàn)在的發(fā)展速度看,很快非開發(fā)者就可以直接跟聊天機器人對接,輕松啟動一個小型獨立項目。也就是說,如今的 Webflow 等工具會被 AI 所替代,而且效果更好、功能更強,這絕對是件大好事!
但要讓科技大廠們放棄自己的開發(fā)隊伍,全面選擇 AI 工程師?那還有很長的路要走,前面提到的這些潛在問題將嚴重阻礙這種想象在現(xiàn)實中落地。
我認為最有可能的情況,是 GPT-4 這類工具被整合進開發(fā)者工具當中,用來擴大熟練開發(fā)者的生產(chǎn)能力。
木匠并沒有被電動工具所替代,會計師沒有被電子表格替代,攝影師沒有被數(shù)碼相機 / 智能手機替代,我認為開發(fā)者也不會被大語言模型替代。
我當然不確定未來的開發(fā)者職位總量會不會有所下降;畢竟如果每位開發(fā)者的效率都顯著提高,那崗位方面的整體需求應(yīng)該減少才對。
但也不一定。就目前來講,軟件開發(fā)者仍處于供不應(yīng)求的狀態(tài)。在我工作過的每家公司,大家都有太多想做的事情,只因開發(fā)者數(shù)量有限而被迫作罷。
那如果開發(fā)者的工作效率瞬間提升 2 倍,結(jié)果會如何?無疑是修復(fù)更多 bug、發(fā)布更多功能、賺取更多利潤。我們可以開發(fā)的東西太多了,根本不存在開發(fā)者過剩一說。
目前,很多企業(yè)根本就不雇用軟件開發(fā)者。我曾在一家名叫 Konrad Group 的公司工作,這是一家專為客戶構(gòu)建 Web 應(yīng)用程序的企業(yè),客戶名單里不乏家喻戶曉的大廠。但因為開發(fā)成本太高,他們發(fā)現(xiàn)與其招聘固定開發(fā)人員,還不如把這活兒外包出去。
這些財富五百強公司會根據(jù)當前的軟件開發(fā)成本做核算。這里我們假定一個場景:如果他們需要 4 名開發(fā)人員,平均年薪 15 萬美元,那每年就是 60 萬美元。在這種情況下,他們不如向外包機構(gòu)支付 50 萬美元來搞定這方面需求。但如果大語言模型真能提高開發(fā)者的工作效率,他們也許只雇 2 名年薪 15 萬美元的開發(fā)者就夠了。突然之間,原本自己沒法做的項目現(xiàn)在可以做了!
我要澄清一下:我不是經(jīng)濟學(xué)家,以上案例安全就是隨口一說。我不知道未來的情況會不會朝這個方向發(fā)展。但我想提醒大家,大語言模型的爆發(fā)并不一定會摧毀我們的工作和生活。沒人知道未來會向哪里去,而我實在受不了人們言之鑿鑿地把前景描述得愁云慘淡。
Aaron Blaise 是一位經(jīng)驗豐富的動畫師兼插畫家。他在迪士尼工作了近 20 年,曾為《美女與野獸》(1991)、《阿拉丁》(1992)、《風(fēng)中奇緣》(1995)等經(jīng)典影片做出貢獻。
幾周之前,他在 YouTube 上發(fā)布了一段視頻,題為《迪士尼動畫師對 AI 動畫的反應(yīng)》()。他的觀點跟我很像,并不覺得 AI 工具是種威脅,而認為它將提高動畫師的生產(chǎn)力并創(chuàng)造出更多動畫崗位。
來自幾十個行業(yè)的藝術(shù)家和知識工作者們都在討論這方面話題,畢竟很多人擔心自己的工作會被 GPT-4、DALL-E 2 和 Midjourney 等 AI 工具所吞噬。
GPT-4 能通過模擬律師考試嗎?可以,而且得分在人類應(yīng)試者里能排進前 10%。所以律師們也慌了。
我個人認為,大多數(shù)專業(yè)人士都能找到將 AI 技術(shù)整合進工作流程的辦法,借此提高自己的生產(chǎn)力和價值。一部分任務(wù)可能被全面委托給 AI,但只是部分任務(wù)、而非整個工作。
那如果我是錯的,事實證明大語言模型可以全面取代軟件開發(fā)者,又該怎么辦?如果真是這樣,那我覺得也不用太擔心了,到那時候絕大多數(shù)知識工作者都會被“清洗”。
這樣一來,我們就算是轉(zhuǎn)行、轉(zhuǎn)專業(yè)也沒有用,AI 海嘯之下將沒有安全的高地。所以與其去賭未來會不會朝著最糟糕的方向去,倒不如專注于自己熱衷的工作、感興趣的問題、擅長的方向。
網(wǎng)上有幫家伙,一直在暗示前端開發(fā)特別容易被 AI 替代,還建議開發(fā)者再精進一步,往后端或數(shù)據(jù)工程那邊努力。
但我的觀點恰恰相反。我覺得開發(fā)者群體根本就不用擔心被淘汰,如果非得說哪部分群體更危險,我倒認為是后端。
在這兩個項目中,Python 代碼對我來說似乎更接近生產(chǎn)。我最近用 Node.js 構(gòu)建了一個 Discord 機器人,跟 GPT-4 生成的代碼確實差不多。
相比之下,AI 為那個笑話網(wǎng)站生成的基礎(chǔ) HTML 文檔,就跟我每天編寫的前端代碼間相隔十萬八千里。
這可能有點以偏概全,但過去十年來,我發(fā)現(xiàn)很多復(fù)雜性要素已經(jīng)從服務(wù)器轉(zhuǎn)向了客戶端。
Monolithic Express 應(yīng)用程序已經(jīng)轉(zhuǎn)化為無服務(wù)器函數(shù)的集合,而我們的前端也從超鏈接數(shù)字文檔發(fā)展為成熟的桌面質(zhì)量應(yīng)用程序。
再有,前端是用戶與之交互的產(chǎn)品部分。企業(yè)當然希望自己的產(chǎn)品能體現(xiàn)出定制化、獨特性和根據(jù)品牌形象精心設(shè)計等特點。與之對應(yīng),后端則完全不可見,所以通用后端要比通用前端更讓人易于接受。
我聽有些人說,ChatGPT 能幫助大家快速學(xué)習(xí)技術(shù)性技能。如果各位對教程中的某些內(nèi)容感到困惑,不妨問問神奇的 AI。
這對我來說是個非常有趣的用例。從本質(zhì)上講,ChatGPT 就像你的結(jié)對程序員,能幫助你了解自己不熟悉的事物。你可以向它提出具體問題,并獲取具體答案。
當然,使用過程中也要當心。利用 AI 工具來學(xué)習(xí),也有正確的方式與錯誤的方式之分。
所謂錯誤的方式,就是把 AI 當作 GPS 導(dǎo)航。當我們打算開車前往某地時,就會把地址輸入 GPS,然后不假思索地按它的指示前進。等到了目的地附近時我會把導(dǎo)航關(guān)掉,整個過程不做任何思考和評判。結(jié)果就是,我的方向感完全萎縮了,現(xiàn)在如果沒有合成語音的指示,我根本不知道該往哪里走。
與之相對,我們最好把大語言模型當成“被告”,而自己則扮演“陪審團成員”。
你要認真聽它在說什么,但不可全盤相信。保持懷疑的態(tài)度,以批判的心態(tài)考量一字一句。
不可盲目復(fù)制 / 粘貼 ChatGPT 生成的代碼,而是逐行檢查并保證你理解了其中內(nèi)容。有不清楚的地方要提醒它做出澄清,并配合權(quán)威來源(例如官方文檔)仔細檢查看似可疑的部分。請記住,大語言模型 100% 自信,但卻并非 100% 準確。
我之所以要寫下這篇文章,就是想鼓勵各位正在學(xué)習(xí) Web 開發(fā)、并為大語言模型的爆發(fā)式進步壓得喘不過氣的朋友們。很多人徹底失去了信心,認為隨著 AI 技術(shù)的繼續(xù)成熟,自己耗費時間和精力掌握的所有技能將被無情淘汰。
我不敢保證未來一定不會這樣。但我對 AI 能夠給工作方式帶來的影響仍抱懷疑。早在 2007 年,我就開始研究 HTML/CSS/JS,多年以來情況已經(jīng)發(fā)生了很大變化。但開發(fā)者們?nèi)匀粦{借強大的適應(yīng)性,與技術(shù)一同進步、攜手為網(wǎng)絡(luò)世界塑造新的樣貌。
到目前為止,我還沒看到有切實跡象表明前端開發(fā)的工作處于危險之中。我也想象過未受任何專業(yè)訓(xùn)練的非開發(fā)者,在不了解 Web 技術(shù)的情況下會開發(fā)出怎樣的 Web 應(yīng)用程序。太多的因素會導(dǎo)致其無法運行了,所以即使 GPT 未來繼續(xù)保持迭代,大家也沒必要過于焦慮。這,又何嘗不是另一種“幻覺”。
再次強調(diào),我的觀點很可能是錯的,畢竟我可沒有能預(yù)見未來的水晶球。但未來總有不確定性,沒準明天太陽就爆炸了,誰知道呢。但我真的很難相信 Web 開發(fā)者會被迅速淘汰,反而更擔心潛在開發(fā)者會因為這種莫須有的可能性而放棄學(xué)習(xí)。
總之,但愿不要五年之后軟件開發(fā)者需求更旺之時,大家才感覺后悔、反思當下的自己為什么要停止追求夢想。請繼續(xù)努力吧,各位同學(xué)!??