軟件開發打敗了 80 %的程序員

首先,我並不是說軟件開發人員都是輸家,我想說的是,大多數軟件開發人員都沒能贏得軟件開發,他們都被軟件開發打敗了。

開發人員的痛點在於,他們不知道自己面對的是什麼遊戲,或者說他們不知道應該採用哪種戰術。

你必須知道軟件開發是何種遊戲,才能在遊戲中獲勝。

在編寫代碼的過程中,重點不在於代碼是否會出錯,而是代碼何時會出錯,以及如何通過最簡單的方法修復錯誤。

1、贏家與輸家

Charles Ellis曾撰寫過一篇文章《Loser’s Game》,他指出,職業網球是贏家的比賽,即選手利用自己的技能主動贏得比賽。而業餘選手會使用不同的策略避免自己失誤,然後等待對手出現失誤,從而自己打敗自己。

“在專業網球比賽中,80%的得分是贏得的;而在業餘網球比賽中,80%的得分是輸掉的。換句話說,職業網球是贏家的遊戲,即最終結果取決於贏家的活動;而業餘網球是輸家的遊戲,即最終結果取決於輸家的活動。這兩種遊戲的基本特徵完全不同,甚至是相反的。”

—— Charles Ellis

遊戲雖然相同,但你需要根據對手選擇有效的策略:

“專業網球就是我所說的贏家遊戲。贏得分數更多的一方選手獲勝,也就是說並不是看哪個選手得到的分數更高,而是看哪個選手贏得的分數更高。Ramo發現業餘網球則完全不同。業餘選手很少打敗自己的對手,但是他們會自己打敗自己。在這樣的比賽中,得分更高的選手獲勝,但他得分更高是因爲他的對手輸掉的分數更多。”

—— Charles Ellis

2、軟件開發遊戲

我從事軟件開發工作已20載有餘,曾與許多軟件開發人員一起從事過許多項目。我認爲80%的開發人員都是業餘玩家,只有20%的是專業玩家。

我爲什麼這麼說?

業餘軟件開發人員不喜歡:

  • 標準
  • 單元測試
  • 設計模式/ SOLID原則
  • 學習和設置開發運維和產品生命週期管理(他們喜歡使用)
  • 修復構建
  • 代碼審查
  • 代碼分析/解決方案檢查

如果你想毀掉一個開發團隊,那就不要執行上述步驟,因爲團隊中的大多數開發人員都不是專業人員。

“避免犯錯的方法是保守行事,想辦法讓比賽繼續下去,給對手充裕的機會出現失誤,從而自己打敗自己,因爲業餘選手玩的是輸家的遊戲,而且他深陷其中卻不自知。”

—— Charles Ellis

大多數開發人員都會低估編寫代碼的難度,同時還會高估自己的能力。他們以爲編寫代碼非常容易,而且編寫好的代碼第一次運行就可以成功。

3、業餘玩家

如果大多數開發人員都是業餘玩家,那麼我們就應該將軟件開發視作輸家的遊戲,竭盡全力減少業餘玩家容易犯的錯誤。

業餘開發人員的目標是寫代碼,其他活動都會降低開發的速度。上述提到的其他步驟就是爲了創建簡單的代碼,更快地發現錯誤,並注意提高質量。產品生命週期管理/開發運維可以快速地完成部署,而且還不容易出錯,從而實現快速反饋。

快速編寫代碼的最佳方法是專注於質量和減少錯誤,而不是更快地編寫代碼。

項目和開發團隊的規模越大,爲bug和錯誤所付出的代價就越沉重。大型團隊的問題可能會導致很多人的進度延誤,而實施上述列表中的活動可以讓我們集中精力處理阻礙。

我曾經歷過一些項目,直到項目後期才發現的一些bug導致用戶失去信心,並給上線帶來了風險。

4、本末倒置

我們的目標不是編寫有效的代碼,而是花時間避免編寫質量低劣的代碼和bug,否則就會本末倒置。

“對於你我之輩來說,難得的不是一時的聰明,而是堅持不做蠢事。”

—— Charlie Munger

業餘開發人員認爲,快速編寫代碼是最有效的創建產品的方法。如果方法龐大,代碼複雜,則代碼庫會越來越複雜,而且每添加一行代碼開發工作就會更加困難。這種方法僅適合只有1~2名開發人員的小型項目。

5、Bug的成本

從代碼編寫完成開始,發現bug的時間越晚,修復所需的時間就越長。舉個例子,如果你發現了生產中的某個bug,那麼首先你必須設法復現bug,並搞清楚bug發生的原因,修復bug,並通過每個環境的部署和測試,最後才能進入生產。

如果在單元測試中發現相同的錯誤,則可以快速修復,同時還不會影響到其他開發人員和測試人員。

我們可以在開發過程中添加一些簡單的步驟來找出bug,在軟件開發這個遊戲中,bug會浪費大量時間,並消磨掉客戶的信任。

如果我們知道大多數開發團隊的成員都是業餘玩家,他們很容易犯錯並導致自己甚至團隊的失敗,那麼我們就更加應該重視防止bug,而不是假定每個人都是專業的開發人員,每個人都可以編寫出色的代碼。

贏得軟件開發這場遊戲的關鍵,不在於第一次就能創建正確的代碼,而在於避免失敗的各種方式。

“專業人士靠主動贏分獲勝,而業餘人士靠對方丟分獲勝。”

—— Charles Ellis

作者:Ben Hoskin<br> 原文:https://thehosk.medium.com/software-development-is-a-losers-game-fc68bb30d7eb<br> 譯者:彎月<br> 出品:CSDN(ID:CSDNnews)

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2021最新版)

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.阿里 Mock 工具正式開源,幹掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式發佈,全新顛覆性版本!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章