首先,我並不是說軟件開發人員都是輸家,我想說的是,大多數軟件開發人員都沒能贏得軟件開發,他們都被軟件開發打敗了。
開發人員的痛點在於,他們不知道自己面對的是什麼遊戲,或者說他們不知道應該採用哪種戰術。
你必須知道軟件開發是何種遊戲,才能在遊戲中獲勝。
在編寫代碼的過程中,重點不在於代碼是否會出錯,而是代碼何時會出錯,以及如何通過最簡單的方法修復錯誤。
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 正式發佈,全新顛覆性版本!
覺得不錯,別忘了隨手點贊+轉發哦!