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