軟件開發(fā)是一個失敗者的游戲
在編寫代碼的創(chuàng)造過程中,如果代碼是錯誤的,那就是代碼是錯誤的,并以最簡單的方式修復(fù)它。
贏家和失敗者
在Charles Ellis的論文失敗者的游戲中,他指出,專業(yè)網(wǎng)球是一個贏家的比賽,球員贏得積分。使用不同的策略來獲勝,讓球活著,讓你的對手擊敗自己。
“在專家網(wǎng)球中,大約80%的積分是贏得的;在業(yè)余網(wǎng)球上,大約80%的積分是失誤。換句話說,專業(yè)網(wǎng)球是一個獲勝者的比賽 - 最終結(jié)果由獲勝者的活動決定 - 業(yè)余網(wǎng)球是一個失敗者的游戲 - 最終結(jié)果由失敗者的活動決定。這兩場比賽在他們的基本特征中,并不是一樣的。他們是對立面的。“ 查爾斯埃利斯
“專家網(wǎng)球是我稱之為勝利者的比賽。勝利是由于贏得更多的點,而不是對手贏得 - 不是,因為我們將在一瞬間看到,只是獲得比對手更高的得分,但通過獲勝點來獲得更高的分?jǐn)?shù)。發(fā)現(xiàn)了業(yè)余網(wǎng)球,幾乎完全不同。業(yè)余選手很少擊敗他的對手,但他一直擊敗自己。在這個網(wǎng)球比賽中的維克多得分比對手更高,但他得到了更高的分?jǐn)?shù),因為他的對手正在失去更多積分。“查爾斯埃利斯
軟件開發(fā)的游戲
我已經(jīng)在軟件開發(fā)工作了20年,在許多軟件開發(fā)人員的許多項目上工作。我估計80%的軟件開發(fā)人員是業(yè)余和20%的專業(yè)人士。
業(yè)余軟件開發(fā)人員不喜歡
- 標(biāo)準(zhǔn)
- 單元測試
- 設(shè)計模式/實體原理
- 學(xué)習(xí)和設(shè)置Devops和ALM(他們喜歡使用它)
- 修復(fù)構(gòu)建
- 編碼評審
- 代碼分析/解決方案檢查
如果您試圖破壞大多數(shù)開發(fā)團隊,您將不會執(zhí)行上述步驟,因為團隊中的大多數(shù)開發(fā)人員不是專業(yè)人士。
“避免錯誤的方法是保守和保持運轉(zhuǎn),讓另一個人有足夠的空間來打擊他的擊敗方式,因為他是一個業(yè)余愛好者(可能沒有讀Ramo的書)玩一個失敗的游戲,不知道自己。“查爾斯埃利斯
大多數(shù)開發(fā)人員低估了寫作代碼并高估了他們創(chuàng)建工作軟件的能力。他們接近編寫代碼假設(shè)寫入代碼很容易,代碼將第一次工作。
業(yè)余愛好者
如果大多數(shù)開發(fā)人員是業(yè)余愛好者,我們應(yīng)該將軟件開發(fā)人員作為失敗者的比賽,專注于減少業(yè)余愛好者傾向于制造的錯誤的努力。
業(yè)余開發(fā)人員的目標(biāo)是編寫代碼,其他活動減慢了這個過程。上面的另一個步驟是創(chuàng)建簡單的代碼,在更快的情況下之前先查找錯誤并專注于質(zhì)量。ALM / Devops允許快速錯誤的免費部署,這使得快速反饋。
快速編寫代碼的最佳方法是專注于質(zhì)量和減少錯誤,而不是通過編寫代碼更快。
我已經(jīng)在某些項目上工作,后一段發(fā)現(xiàn)的錯誤喪失了用戶的信心。
倒置
如果我們反轉(zhuǎn)軟件開發(fā),則目標(biāo)不是編寫工作的代碼,它在避免編寫差的質(zhì)量代碼和錯誤時花費時間。
“這是卓越的長期優(yōu)勢,像我們這樣的人們通過試圖始終如一而不是愚蠢,而不是試圖非常聰明。” - Charlie Munger.
業(yè)余開發(fā)人員認(rèn)為快速編寫代碼是創(chuàng)建生產(chǎn)準(zhǔn)備代碼的最快方法。大方法和復(fù)雜的代碼創(chuàng)建了一個在復(fù)雜性中增長的代碼庫,并添加了每一行代碼更加困難。這是一種方法,僅適用于一個或兩個開發(fā)人員的小項目。
錯誤的成本
此外,您可以找到一個錯誤的錯誤,修復(fù)的時間越長。例如。如果您在生產(chǎn)中找到一個錯誤,請了解它,重新創(chuàng)建它,然后開發(fā)人員必須在每個環(huán)境中修復(fù)代碼并在每個環(huán)境中進行部署和測試,直至生產(chǎn)。
如果您發(fā)現(xiàn)具有單元測試的相同錯誤,您將更快地修復(fù)并降低對其他開發(fā)人員和測試人員的影響。
我們可以將簡單的步驟添加到開發(fā)過程中以捕獲錯誤,并在一個錯誤的游戲中,在從中花費大量時間并從客戶中排出信息,這是最有效的方法。
當(dāng)我們知道大多數(shù)發(fā)展團隊都是傾向于擊敗自己和開發(fā)團隊的業(yè)余愛好者,它使得專業(yè)的開發(fā)團隊更加重視停止錯誤,而不是假設(shè)每個人都是專業(yè)開發(fā)人員創(chuàng)造了偉大的代碼。
開發(fā)中的成功不是第一次正確創(chuàng)建代碼,它是關(guān)于避免許多失敗的方式。
或者引用查爾斯埃利斯
“專業(yè)人士贏得積分,而業(yè)余愛好者會失去他們。”