首先,我并不是說軟體開發人員都是輸家,我想說的是,大多數軟體開發人員都沒能贏得軟體開發,他們都被軟體開發打敗了,
開發人員的痛點在于,他們不知道自己面對的是什么游戲,或者說他們不知道應該采用哪種戰術,
你必須知道軟體開發是何種游戲,才能在游戲中獲勝,
在撰寫代碼的程序中,重點不在于代碼是否會出錯,而是代碼何時會出錯,以及如何通過最簡單的方法修復錯誤,
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
原文:https://thehosk.medium.com/software-development-is-a-losers-game-fc68bb30d7eb
譯者:彎月
出品:CSDN(ID:CSDNnews)
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2021最新版)
2.終于靠開源專案弄到 IntelliJ IDEA 激活碼了,真香!
3.阿里 Mock 工具正式開源,干掉市面上所有 Mock 工具!
4.Spring Cloud 2020.0.0 正式發布,全新顛覆性版本!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288974.html
標籤:Java
