偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么日本代碼‘穩(wěn)如狗’?走訪豐田等多家日本團隊:寫代碼像做壽司,每天進步1%「侘寂」美學(xué)讓系統(tǒng)跑幾十年,網(wǎng)友:任天堂都30年了

譯文 精選
人工智能
這篇文章的作者是一位老鳥后端工程師?Sohail Saifi,也在用各種 AI Coding 工具。近三年里他研究了日本和硅谷程序員的代碼風(fēng)格,這篇文章就是研究成果的總結(jié)。

編譯 | 云昭

這周一,小編偶然看到了一篇角度很奇特的、有關(guān)日本代碼風(fēng)格的文章。

雖說現(xiàn)在 Vibe Coding 盛行,很多老鐵們都不那么關(guān)注代碼本身了,但若要真的讓 AI 工具編寫含金量組足夠的代碼,反而對于開發(fā)者的“代碼審美”提出了更高的要求。

這篇文章的作者是一位老鳥后端工程師 Sohail Saifi,也在用各種 AI Coding 工具。近三年里他研究了日本和硅谷程序員的代碼風(fēng)格,這篇文章就是研究成果的總結(jié)。

他發(fā)現(xiàn):日本程序員的 coding style 非常不同,而且更穩(wěn)定、更有效比如,他們甚至?xí)屢粋€團隊花兩天時間去修復(fù)一個僅影響 0.1% 用戶的邊界問題。

“因為他們把代碼當作豐田凱美瑞來對待,而不是特斯拉?!?/p>

“在西方,寫代碼是為了快速上線功能;在日本,寫代碼是為了讓系統(tǒng)運行幾十年。上線只是開始?!?/p>

文章一經(jīng)發(fā)布,就很快引起了網(wǎng)友的熱議,贏得了高達 6100 的點贊,173 條評論。

圖片圖片

評論中一方面,許多硅谷程序員在評論中表示不服,另一方面,很多網(wǎng)友對于日本的這種“快即是慢”的代碼寫作風(fēng)格表示認同。

話不多說,讓咱們撇看心中的成見,一起來看看這篇熱文。

日本軟件系統(tǒng)為什么最穩(wěn)定

在過去三年里,我一直在研究日本的軟件開發(fā)實踐。而我的發(fā)現(xiàn),完全顛覆了我對編寫代碼的認知。

當西方程序員還在追逐最新的 JavaScript 框架、為縮進到底用 Tab 還是空格爭論不休時,日本程序員卻在悄悄打造全球最穩(wěn)定、最可維護的軟件系統(tǒng)之一。他們的做法甚至可能會讓硅谷程序員翻白眼。

秘訣是什么?他們把代碼當作豐田凱美瑞來對待,而不是特斯拉。

一種改變一切的哲學(xué)

Monozukuri:「制造之道」

在日本,有一個理念叫做 monozukuri(ものづくり),意思是「制造之道」或「匠人精神」。它不只適用于實體產(chǎn)品的制造,更是一種強調(diào)工藝、持續(xù)改進、并對創(chuàng)作過程本身引以為傲的哲學(xué)。

ps:Monozukuri,直譯就是制造東西的意思。在現(xiàn)代語境下,Monozukuri 意指一種精益求精的工匠精神,是對制造過程、產(chǎn)品質(zhì)量、團隊協(xié)作與持續(xù)改進的高度重視和執(zhí)著追求。

日本程序員不是在寫代碼,他們是在“雕刻”代碼。

我曾采訪日本某大型科技公司的高級工程師中村宏(化名),他這樣說:

「在西方,寫代碼是為了快速上線功能;在日本,寫代碼是為了讓系統(tǒng)運行幾十年。上線只是開始?!?/p>

這套心態(tài)的轉(zhuǎn)變非常深刻。與其“快速試錯”,他們更傾向于“慢慢構(gòu)建,盡量不出錯”。

Kaizen:「每天進步 1%」

你或許聽說過 kaizen(改善)這個詞,原本用于企業(yè)流程優(yōu)化。但日本程序員將其直接應(yīng)用到代碼中。

他們不會搞大刀闊斧的重構(gòu)或“技術(shù)債償還沖刺”,而是每天做一點微小的改進。每一次提交,都改善一點點。

來看例子:

// 西方式寫法:計劃下一次迭代時重構(gòu)整個模塊
function processUserData(users) {
  // 200 行越來越復(fù)雜的代碼
  return results;
}

// 日本式寫法:今天改進 1%,明天再來一點
function processUserData(users) {
  const validUsers = filterValidUsers(users); // 提取了一個小函數(shù)
  return processValidUsers(validUsers);
}

日本程序員不會等待“批準”來改進代碼,也不搞“技術(shù)債沖刺”。他們就是每天持續(xù)優(yōu)化一點點。

「豐田生產(chǎn)方式」的程序員版本

Just-In-Time:「按需開發(fā)」

他們借鑒了豐田著名的生產(chǎn)系統(tǒng):Just-In-Time(JIT)按需制造。與其預(yù)先構(gòu)建可能永遠不會用到的功能,他們只在真正需要時才構(gòu)建。

// 西方式寫法:預(yù)先構(gòu)建一堆可配置選項
class DataProcessor {
  constructor(options = {}) {
    this.enableCaching = options.enableCaching || false;
    this.enableValidation = options.enableValidation || false;
    this.enableLogging = options.enableLogging || false;
    this.maxRetries = options.maxRetries || 3;
    this.timeout = options.timeout || 5000;
    // 還有15個“以防萬一”的選項
  }
}

// 日本式寫法:先解決今天的問題
class DataProcessor {
  process(data) {
    return this.validateAndTransform(data);
  }
}

「未來的復(fù)雜性來了再加,現(xiàn)在只管把今天的事情做好?!?/p>

Jidoka:「停線精神」

在豐田工廠,任何工人都可以因發(fā)現(xiàn)瑕疵而按下“急停按鈕”,整個產(chǎn)線會立刻停下。日本的開發(fā)團隊也遵循這一原則:

一旦發(fā)現(xiàn)問題,全體停工,優(yōu)先解決。

沒有“下個迭代修吧”,沒有“先上線后補丁”。

我曾見過一個團隊花兩天時間去修復(fù)一個僅影響 0.1% 用戶的邊界問題。問他們?yōu)槭裁床缓雎詴r,組長回答:

「一旦我們默認小問題無所謂,就會開始容忍缺陷。久而久之,缺陷會變成常態(tài)?!?/p>

所以他們的系統(tǒng)幾乎沒有線上 bug。

語言劣勢,變成可讀性優(yōu)勢

簡單的變量名

你可能以為日本程序員用全日文變量名,其實并不是:

// 想象中的寫法
const ユーザー = getUsers();
const データ = processData(ユーザー);

// 實際寫法
const userList = getUsers();
const processedData = transformData(userList);

// 注釋用日文解釋業(yè)務(wù)邏輯
// 業(yè)務(wù)ロジック: ユーザーの権限を確認してからデータを変換する

因為大多數(shù)日本工程師的英文并不流利,他們傾向于使用更簡單、直白、沒有炫技的變量名。這反而提升了可讀性。

| 注釋文化

他們大量寫注釋。不是因為代碼差,而是因為他們把注釋當作給未來維護者(可能是五年后的自己)寫的文檔。

// 西方式寫法:代碼自解釋
const result = users.filter(u => u.age >= 18 && u.status === 'active')
                   .map(u => ({ id: u.id, name: u.name }));

// 日本式寫法:加注解釋業(yè)務(wù)含義
// ビジネスルール: 18歳以上のアクティブユーザーのみを?qū)澫螭趣工?const eligibleUsers = users.filter(user => {
const isAdult = user.age >= 18;
const isActive = user.status === 'active';
return isAdult && isActive;
});

// 畫面表示用のデータ形式に変換
const displayData = eligibleUsers.map(user => ({
  id: user.id,
  name: user.name
}));

結(jié)果是:即使 10 年后,這段代碼依然能維護下去。

軟件開發(fā)中的「七大浪費」

借鑒豐田制造理論,日本程序員總結(jié)出“七種浪費”:

  1. 未完成的工作:寫了但沒測、沒部署的代碼。
  2. 多余的功能:沒人用的 feature。
  3. 反復(fù)學(xué)習(xí):因為缺文檔或代碼混亂而重復(fù)理解。
  4. 交接:不同團隊之間的“扔鍋”式協(xié)作。
  5. 等待:審批、代碼審查、依賴延遲。
  6. 任務(wù)切換:在多個項目之間頻繁跳轉(zhuǎn)。
  7. 缺陷:最浪費的就是修 bug,所以他們防患于未然。

「侘寂」寫法:不完美之美,擁抱演化

侘寂(Wabi-Sabi)是一種日本美學(xué),強調(diào)“不完美之美”。日本程序員不追求完美代碼,而是寫“可逐步進化的代碼”。

小編這里解釋下“侘寂”(日語:わびさび / 發(fā)音:wabi-sabi),是日本美學(xué)中極為核心、也極富哲思的一個概念,漢語中很難有一個精確的中文對應(yīng)詞,大致是“不完美之美”的意思??梢赃@樣體感一下,比如:

一只有裂痕但修補過的陶碗,比一只嶄新的碗更有溫度。因為有歲月、使用過的痕跡。等等。

// 西方寫法:預(yù)判未來需求
class DataValidator {
  validate(data, rules, options, context, metadata) {
    // 太多參數(shù)以應(yīng)對所有情況
  }
}

// 日本寫法:從簡單開始,未來再擴展
class DataValidator {
  validate(data) {
    if (!data) returnfalse;
    if (!data.email) returnfalse;
    returntrue;
  }
}

他們知道需求會變,與其預(yù)判未來,不如為“變化”做好準備。

「反省會」:持續(xù)反思的文化

每個項目結(jié)束后,他們都會舉行 hansei(反?。h。不是為了追責,而是集體回顧:“下次如何做得更好?”

我曾旁聽一場反省會,他們花了 30 分鐘討論一個函數(shù)。不是因為它出錯,而是它“可以更清晰”。

他們提出了三個改進點:

  • 改變量名更清楚
  • 加一句注釋解釋業(yè)務(wù)含義
  • 拆出一個小工具函數(shù)

看似微不足道,但積累 100 次這樣的小改進后,代碼庫就會煥然一新。

結(jié)果不會騙人

任天堂:30 年前寫的代碼仍在用。不是因為他們懶得重寫,而是代碼寫得足夠好,根本不用重寫。

對比數(shù)據(jù)(日本團隊 vs 西方團隊):

  • 生產(chǎn)環(huán)境 bug 少 60%
  • 維護時間減少 40%
  • 新功能交付快 25%
  • 開發(fā)者滿意度高 80%

為什么日本式代碼更有效?

復(fù)利效應(yīng)

每天 1% 的改善會復(fù)利增長。西方團隊每 3-5 年重寫系統(tǒng),日本團隊幾十年持續(xù)演化。

可持續(xù)節(jié)奏

沒有“996”或“爆肝上線”,他們保持可持續(xù)節(jié)奏,做出更理性的決策,寫出更持久的代碼。

長遠思維

當你希望代碼運行 20 年,而不是 2 年時,你的選擇就會不一樣:

  • 你會選擇清晰,而不是聰明
  • 你會選擇可靠的技術(shù),而不是最新的潮流

如何把這些哲學(xué)用到你的代碼中?

  • 從 Kaizen (改善)開始:每天改善一點點。堅持 30 天。
  • 實踐 Jidoka(停線精神):發(fā)現(xiàn) bug 別只修復(fù),要找出防止它再次發(fā)生的方法。
  • 擁抱侘寂:別追求完美,寫出可演化、易維護的代碼。
  • 做 Hansei(反?。好看蔚Y(jié)束,花 30 分鐘團隊反思“什么可以更好”。

真正的挑戰(zhàn)是文化轉(zhuǎn)變

技巧很容易學(xué),但從“上線第一”切換到“長久為先”,才是最難的部分。

日本程序員懂得一個簡單的道理——最快的“快”,是從來不用“慢”下來。

而不被迫慢下來的唯一方式,就是一開始就別留下讓你慢下來的“技術(shù)債”。

你的代碼不應(yīng)該像一家瘋狂擴張的初創(chuàng)公司,而應(yīng)該像一座打理良好的日式庭院——穩(wěn)、靜、美、可持續(xù)。

評論區(qū)炸鍋:太保守了,這不是日本獨有的

就如開頭所介紹的,這篇文章引起了許多網(wǎng)友的討論。有人共鳴,有人質(zhì)疑。共鳴的朋友站出來說:我就是這樣寫代碼的程序員!

圖片圖片

質(zhì)疑的網(wǎng)友則回應(yīng)說:其實這些思維風(fēng)格也存在于西方。

圖片圖片

還有一位網(wǎng)友認為:其實上面說的50%的理念,其實都寫在敏捷宣言里。

圖片圖片

甚至有網(wǎng)友直接開懟,表示:日本模式也有很大的局限。

現(xiàn)實中并沒有什么廣泛使用的日本開發(fā)的軟件。內(nèi)部使用倒是有(比如豐田)。因為他們?nèi)狈δ欠N“大膽試錯、獨立探索”的文化。還有一種“尊重權(quán)威”的氛圍,讓人們不敢質(zhì)疑現(xiàn)狀……

圖片圖片

另有網(wǎng)友質(zhì)疑:如果日本方法這么好,為什么他們沒做出全球爆款?其實任天堂就是活例。問題也許不在“模式”,而在語言、市場與文化壁壘。

當然,勸架的網(wǎng)友顯得更加睿智:

我現(xiàn)在腦海里浮現(xiàn)出兩個跨洋而立的公司,如同兄弟一樣聯(lián)手:西方的敢于質(zhì)疑與挑戰(zhàn),東方的古老智慧則以清晰和諧協(xié)調(diào)一切。

各位網(wǎng)友表面上看是實在對比日本和西方程序員的編寫風(fēng)格,其實是在探討兩種編程文化:一種是穩(wěn)定壓倒一切,另一種是大膽創(chuàng)新。跟國別關(guān)系不大。

這其實就是企業(yè)版的 slow is smooth, smooth is fast。

所以,小編在最后把問題留給評論區(qū)的大佬們,各位認同哪種風(fēng)格?你見過像任天堂那樣 30 年都不用重寫的代碼嗎?在 Vibe Coding 時代,哪種風(fēng)格更值得提倡呢?

歡迎拍磚。

責任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2010-04-14 13:38:36

Linux桌面

2013-07-10 10:41:29

2021-11-16 09:36:11

蘋果 英特爾芯片

2014-07-09 09:32:39

2020-07-30 15:20:15

代碼開發(fā)黑客

2016-12-19 08:53:44

2019-12-16 09:25:38

技術(shù)研發(fā)指標

2016-04-20 11:08:57

代碼歷史新功能

2020-03-26 15:00:52

計算機互聯(lián)網(wǎng) 技術(shù)

2023-07-28 12:47:41

2023-09-04 13:16:00

人工智能模型

2025-09-19 14:46:03

2019-06-05 10:12:11

2018-08-17 10:07:58

保險業(yè)

2015-09-09 09:41:28

十年代碼

2023-01-04 13:01:55

AI數(shù)學(xué)

2016-11-14 20:09:58

2021-02-02 10:53:10

技術(shù)研發(fā)博客

2021-02-20 16:03:50

代碼開發(fā)編程

2020-07-29 15:06:39

數(shù)據(jù)泄露源代碼泄露信息安全
點贊
收藏

51CTO技術(shù)棧公眾號