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






















