不用AI編程:一種革命性的新工作方式
作者自稱是“早期採用者”,嘗試了完全不用AI輔助的編程方式,並發現這種方法能增進理解、提高代碼質量、簡化邏輯、加快交付、節省成本、提升工作滿意度,還能降低AI相關疾病風險。文章以幽默口吻探討了手動編程的好處。
在過去大約20年的時間裏,我嘗試了一種新的編程方式——令人驚訝的是,這種方式完全不使用任何大語言模型或AI編碼代理。只有我、一個鍵盤,以及一個IDE或文本編輯器,逐行編寫代碼——就像輸入函數和花括號那樣。
我知道這聽起來很古怪。我是什麼,某種極簡主義者嗎?實際上,我算是所謂的“早期採用者”。我在嘗試一些不同的、激進的東西,我知道不是每個人都能領會這種願景。大多數人認為編程和AI是一回事。但我在這裏要告訴你,無AI編程是真實存在的,是可以做到的,並且有一些令人驚訝的好處。
讓我們來談談這些好處。你甚至可能決定自己也要嘗試一下無AI編程。(也許只是週末試試,以防它成為未來的潮流。)
1. 加深理解
當我手動編程時,我不能簡單地對我的代理説:“修復這個隱藏提交按鈕的bug”或“確保這個異步任務更新數據庫”。根本沒有代理!相反,我必須仔細閲讀、測試和調試代碼,以建立它如何工作的心智模型。這很難做到,但我已經相當擅長了。在這個過程中,我注意到:
- 我的心智模型比AI準確得多。一旦我徹底檢查了代碼,我就能對其行為做出各種有用的預測。
- 當代碼有bug或不符合規範時,我常常能在腦海中想象出需要更改的確切文件或方法。這難以描述,但極大地加快了我的工作流程。
- 在閲讀代碼時,我不可避免地會發現一些我本沒計劃學習的東西,因為代碼都是相互關聯的。這些“額外收穫”後來經常派上用場。
- 我經常注意到代碼可以改進的地方,使其更可靠或更易用。
- 當人們詢問關於應用程序的問題時,我有時能脱口而出答案,無需諮詢任何聊天機器人。
- 最終,我達到了一個程度——找不到更好的詞——我是代碼庫及其所用技術的專家。這種專業知識隨時隨地免費可用。不需要任何代理。它就在我的大腦裏。
你可能會認為這聽起來很慢,但實際上,我在一個代碼庫上工作得越久,我構建它的速度就越快。AI在快速搭建原型方面仍然更快,但我發現自己也能獨立構建那些原型,因為沒有什麼能替代深刻、真正的理解。
我利用這種理解在工作上變得極有價值,多年來獲得了多次晉升和讚譽。不過,不要告訴我的同事我在不用AI編程——他們可能會視其為不公平的優勢。
2. 可用的軟件
世界對不怎麼好用的軟件有着巨大的胃口,我承認,稍加努力,我甚至能手動寫出不好用的軟件。但大多數時候,經過少量測試和調整,我的無AI代碼運行得相當好。而且由於某種神秘的效果,它隨着時間的推移越來越好。我的很多代碼可以放着不管,持續運行數月或數年。我沒開玩笑。我覺得自己發現了一個禁忌的秘密:擁有不需要不斷丟棄和重新生成的代碼。
當我的代碼有bug時——老實説,不管用不用AI,bug總是存在的——我對修復它們的能力越來越有信心。而不是與聊天機器人來回折騰,它編造幾個錯誤解決方案,最後才寫出足夠多的代碼來掩蓋問題。我使用調試技術逐步縮小bug來源,直到我確定它在哪裏,然後高置信度地修復它。有時修復只是一行代碼,如果你能相信的話。
我想我終於理解了那些自己縫製衣服或製作傢俱的人。結果就是質量更高。想象一件穿了幾次都不會散架的T恤!當然,前期投入更多,但質量無可爭辯。
3. 更簡單的代碼
你可能沒有意識到,AI常常把簡單的任務複雜化。有時它會為你寫出三頁的數據結構和算法,而你需要的只是一個if/else塊。手工編寫代碼教會我把複雜性視為負債而非資產,並儘可能保持簡單。
當你不用AI編程時,你自然從底層開始,只編寫你需要的簡單代碼。你隨時可以擴展和構建;而事後簡化要困難得多。
我有時發現我的無AI代碼如此直接,以至於連不編程的人都能理解。我不是説他們把代碼輸入ChatGPT——他們只是閲讀並理解它在做什麼。聽起來難以置信,但代碼真的可以那麼簡單。
為什麼你該關心代碼是否簡單?一方面,更簡單的代碼更容易預測和調試。當你不用AI編寫代碼時,你可能發現後來不需要AI來向你解釋;你可以直接回去,快速回憶並更新它。另一方面,更簡單的代碼首先就不容易出問題。沒有那麼多的代碼行可能出錯。
這違反直覺,但我現在把無AI編程的額外阻力視為雙贏。它讓我成為更好的程序員。它促使我保持簡單。它幫助我對沒有價值的事情説不。
你可能仍然認為用AI會快得多,但這不是重點。舉重運動員如果沒有負重會移動得更快。冷水浴如果水更暖會更舒服。創業如果客户期望更低會更容易。讓事情具有挑戰性的東西,也可以讓事情變得有價值。
4. 更快的交付
有時當我告訴人們我不用AI編程時,他們露出擔憂的表情。他們想知道我是否因為功能交付太慢而經常惹麻煩。想象一下他們聽到我實際上交付得更快時的驚訝。
編程是我用AI時工作流程中最快的部分,現在仍然如此。事實證明編程根本不是瓶頸。我大部分時間花在其他事情上:理解需求、解決歧義、等待反饋、測試和驗證、與其他團隊協調、參加會議、項目規劃等等。是人的事情慢,而不是計算機的事情。
所以這就解釋了我為什麼不慢。但我為什麼更快呢?
一方面,當我手動編程時,我被迫在過程中做出決策。不可能編寫模稜兩可的代碼。當我不知道正確的決策時,我必須停止編程去尋找答案。前期較慢,但到代碼完成時,我知道我們做了我們想做的事。歧義和未解決的問題在流程早期就被解決了,遠在代碼發佈之前。這從長遠來看節省了時間。
還有我提到的其他方面。我的速度和專業知識隨時間增長。代碼更簡單。它工作得更好。所有這些都有助於更快的交付。當然,AI打字比我快。但回想起來,很難相信我們曾認為打字速度是問題所在。
5. 成本節約
也許説出來不禮貌,但我覺得AI公司總是想賺更多錢。我的聊天機器人的每次更新似乎都專門設計來消耗更多token。
我知道你在想什麼。“無AI編程用多少token?”答案簡單得令人驚訝:一個都不用。
我交付了多個完整的應用程序,沒有為一個token付費。我也沒有運行某種法律上可疑的免費試用方案——我交付那些應用程序時沒有使用任何token。我編寫軟件不需要任何人的許可。我可以在沒有互聯網連接的Linux上使用開源文本編輯器編寫軟件。這真是解放。
老實説,我用普通大腦替代聊天機器人省下的錢相當可觀。我可以免費編程。我幾乎還清了債務。而且我還算比較温和的——我的一些同行在token上的花費比我的房貸還多。
6. 更高的工作滿意度
還記得我之前提到的那些自己縫衣服或做傢俱的人嗎?我注意到的另一件事是他們樂在其中。對他們來説,這既有趣又有回報。我從未聽過在服裝廠工作的人這麼説。
AI編程並不是世界上最糟糕的工作,但肯定不令人滿意。這是工廠工作。苦差事。有時感覺更像是在教補習班而不是創造性工作;你不斷審查AI的工作,留意它常犯的錯誤,讓它重做直到正確。而且至少在教學時,學生可以學習提高;你可以與他們建立有意義的關係。AI只是……繼續做AI。
不用AI編程感覺像魔法。過程中有創造的樂趣,有成就感和所有權。它既是藝術也是科學。我不是為了滿足老闆而產出代碼,我在構建有用的東西。我也為此自豪。那種自豪激勵我讓它更好,在它出問題時修復它,在不上班時思考它。
有商業頭腦和 hustle 文化是一回事。熱愛你的工作是另一回事。我不羞於説我熱愛我的工作。
7. 更低的AI相關疾病風險
似乎每個人都接受了AI精神病和AI倦怠是生活的事實。誰沒有在通宵和聊天機器人交流後住過院?早期關於AI相關認知下降的報告也沒有引起多少關注。
我認為不必如此。從我小小的無AI編碼社區中的軼事來看,我們相當確定如果你不使用AI,你患AI相關疾病和傷害的風險降為零。非凡的主張需要非凡的證據,我們顯然需要科學研究來確認,但數學上是説得通的。
再次,我意識到我處在邊緣。但是放棄AI並不不同於我們熟悉的其它風險規避策略。我不吸煙。我不迎面駛向車流。我吃蔬菜。AI禁慾只是保護我健康的另一種方式。
AI使用的風險可能很小。大多數吸煙者不會得肺癌;大多數AI用户不會得精神病。但每一點都很重要。健康是無價的。
接下來是什麼?
我的一些朋友認為不用AI編程是滑坡。接下來是什麼?不用IDE編程?用低級編程語言編程?用紙筆編程?
事實上,我不知道。如果AI不再流行,我賴以生存的職業生涯會怎樣,這很難説。當人們可以自己編寫代碼而不需要……
[原文截斷以控制AI成本]