制定連貫的人工智能政策
一位軟件工程經理批評了“Tokenmaxxing”(將AI令牌使用量作為指標)的做法,並分享了他團隊的AI政策:不強制使用AI,必須理解生成的代碼,能夠在沒有AI的情況下工作,並關心人。他強調初級工程師不應過度依賴AI,以免阻礙學習。
我的第一份大學畢業後工作是在一家有數百名律師助理的律所。他們運行內部工作流系統處理止贖和破產案件。當房地產泡沫破裂時,我幸運地進入了一個蓬勃發展的行業。高峯期我們每年處理超過10萬件案件。工作被細分成精細的任務,律師助理從任務隊列中領取任務,大部分是重複性的。這就像法院文件的流水線,泰勒主義被應用到法律工作中。在我入職前,一位新高管被請來簡化流程。她的計劃簡單粗暴:拿秒錶站在員工身後計時,然後據此制定KPI。結果可想而知——有人盯着時,員工的表現完全不同。她很快意識到這毫無價值。這一切都是為了引出軟件工程中最新垃圾KPI——“Tokenmaxxing”,以及我為團隊制定的AI政策。Tokenmaxxing是管理層的最新噱頭,他們至今仍不明白每個指標都會被鑽空子。二十年前那個拿秒錶的高管不明白,顯然今天仍有未收到通知的領導者。他們通過創建誰使用最多令牌的排行榜來鼓勵採用AI工具。工程師立刻鑽空子:寫一個循環浪費令牌,然後登上榜首;或者僅浪費足夠顯示“使用”AI的量,而不解釋用途。這就是所謂的領導力——創建易被操縱的指標,迅速脱離真正幫助人的初衷。因為歸根結底,我們存在的目的是幫助人,對吧?我在這裏是為了幫助客户實現目標,而不是使用一定數量的令牌。Tokenmaxxing是偽裝成領導力的虛榮指標。我管理一個對AI非常懷疑的團隊,這合情合理。我不需要列舉倫理問題——已經有很多文章了。我也無需列舉生產力問題——在現有大模型時代,你的體驗可能從0.1倍到10倍不等,取決於你怎麼用。但我確信,當前這代LLM正引發我近二十年職業生涯中最大的顛覆。作為團隊經理,我必須對此有立場。經過與團隊充分討論,我很快制定了一份AI哲學指南。令我驚訝的是,許多開發者告訴我他們公司沒有此類文檔,命令只是“儘可能用AI,然後希望一切順利”。政策摘要:不強制使用AI;你必須理解AI生成的代碼;如果AI工具消失,你仍能勝任工作;關心你的隊友和客户。下面詳細説明。何時使用AI工具:沒有強制要求。你不會因使用量而被評估。但話説回來,這些工具是幾十年來行業最大的顛覆。即使你不日常使用,也應瞭解其演變。這個領域變化極快,六個月前的經驗可能已過時。高級工程師被鼓勵以最適合自己的方式使用AI,無論是日常流程還是偶爾用於非生產代碼的概念驗證。AI推動者存在內在矛盾:如果現在不跟上,你就會被拋棄;AI發展太快,你今天所知的一切六個月後都會過時。但這兩者不能同時成立。為什麼我不能等六個月後使用更好的模型和技術?那時我無需學習只為了規避當前工具不成熟而存在的技巧。我們僱用聰明人並信任他們。我不關心他們用什麼操作系統、編輯器或AI工具。我關心他們是否為客户交付價值。但正如政策所説,顛覆是真實的。你的職業責任是偶爾嘗試這些工具。2025年6月的工具比2026年1月差很多。我期待2026年6月的工具會更好。仍然是你自己的代碼:任何AI生成的代碼都是你的代碼。無論你的PR中有多少AI寫的代碼,你都需要理解它的功能。代碼應符合現有模式。我們的AGENTS.md文件有幫助,但不保證。你有責任確保提交審查的代碼合格。不要給審查者帶來不當負擔。我們有時都會提交有問題的PR,但這不是藉口。最終架構決策由人而非AI做出。當選擇更容易被機器理解還是人類理解的代碼時,我們優先考慮人類。如果AI工具不斷輸出不符合編碼標準的代碼,那麼需要改變的是AI工具,可能是改進AGENTS.md。AI最大化主義者讀到這會嗤之以鼻——他們已經在Vibe Coding了,對生成的代碼幾乎不瞭解。如果我們是個初創公司,我可能也會這麼幹。但我們的代碼庫有十年曆史,充滿不同團隊帶來的矛盾風格。有時需要完全的代碼考古才能弄清楚為什麼這樣。AI最大化主義的賭注是模型改進速度會超過它們積累的技術債。這類似於初創公司多年來的賭注:代碼好壞不重要,重點是找到產品市場契合度。但我們已經有產品市場契合度了。我們關心未來十年能否繼續在此代碼庫上工作。我們的客户關心現有功能是否持續工作。如果你是個AI最大化主義者,瓶頸在何方?是代碼審查?是瞭解客户需求?還是客户能接受的變更速度?理論上能寫10倍代碼並不意味着為客户提供10倍價值。如果Claude明天宕機,你還能工作嗎?你能理解面前的代碼嗎?如果OpenAI下週破產,你會看着代碼庫中的恐怖景象哭泣嗎?我做了十年諮詢,空降過一些極其糟糕的代碼庫。你選擇的LLM某天不可用,不應該讓你在試圖理解自己創造的AI垃圾中恐懼顫抖。那初級工程師呢?不管你自認為的學習風格如何,我們都是通過實踐學習。在軟件領域,這意味着寫代碼。你必須多層面思考代碼的含義和細微差別才能真正學習。AI編碼工具通過剝奪你的練習機會來短路這一過程。因此,初級工程師應謹慎使用這些工具。長期依賴AI寫代碼會限制你的成長。你不會獲得職業發展所需更深層次的理解。但這不意味着禁止使用。然而,如果明天AI工具消失,你發現自己無法貢獻,那就是問題。這可能是政策中我最強烈的部分。我們的行業正在快速抽掉初級工程師的梯子。我們拿走了他們需要學習的工作。你需要重複練習AI擅長自動化的苦活。當前這代AI迅速暴露了大多數人根本不懂學習。學習風格是迷思。你可能偏好某種信息接收方式,但學習是通過實踐發生的。學習發生在掙扎中。你必須與概念搏鬥,有時必須困惑。這不是可選項。如果你依賴LLM寫大部分代碼,沒有自己重複練習,你將學不到東西。你不會獲得更深的理解。初級工程師應該使用多少工具取決於你認為他們在團隊中的角色以及你對他們的職業責任。我不期望初級工程師一開始就高效。我期望他們學習如何高效。我期望他們犯錯,學習如何學習代碼庫和領域。如果他們把這大部分外包給LLM,他們就學不會自己思考。當前形式的AI是過於泄漏的抽象,這些細節在合理複雜的代碼庫或領域中會不斷浮現。在那改變之前,初級必須學習,學習通過實踐。你應該能夠以某種方式闡述初級在你的團隊中的角色以及你對他們的成長責任。角色和目標可能與我不同,這應驅動你對工具使用的哲學。我們關心人:最終,我們交付代碼是為了幫助客户接觸人。我們關心客户。同時,我們在團隊內部工作,關心隊友。這兩個羣體時常存在張力。有時為了幫助客户,會有壓力交付更多功能。短期可以,但長期會損害隊友。在AI世界中,誘惑在於儘可能多地交付AI生成代碼讓客户更滿意。但這不能以代碼庫中的AI垃圾為代價,否則會損害長期生產力和團隊幸福感。工程師不想整天審查AI垃圾PR。Tokenmaxxing與關心人脱節。我關心人,而不是令牌。如果使用令牌能幫你幫助人,那就儘管用。但令牌不是目的,而是手段。我的編輯器是手段,我選擇的編程語言也是手段。我的團隊是‘人’這個範疇的子集。我關心人,特別是那些被我影響的人。最終,我希望我的團隊能為客户提供價值,同時享受工作併成長。這就是我制定這項政策的原因。