「我把技術負債玩成了俄羅斯方塊,卻永遠贏不了!」

2021-10-22 14:14:42 字數 2034 閱讀 4549

【csdn 編者按】關於技術債務,做開發的同學應該不陌生,趕進度、需求變化萬千、舊系統、沒文件等都是常見的問題,如果不及時解決,會導致**臃腫,系統效率低,你們該如何處理呢?

作者 | eric higgins

譯者 | 彎月

出品 | csdn(id:csdnnews)

以下為譯文:

技術負債就像俄羅斯方塊,這是一場永遠無法通關的遊戲,只能控制你死的速度有多慢。

很多人都喜歡玩俄羅斯方塊,我也非常喜歡。至今我還記得第一次與小夥伴一起在任天堂的遊戲機上玩俄羅斯方塊。我認為,俄羅斯方塊不僅是有史以來最好玩的遊戲之一,而且它與技術負債還有異曲同工之處。我非常熟悉技術負債,幾乎每天都要與技術負債打交道。

我希望通過本文,分享乙個減少技術負債的故事。在這個故事中,我和我的團隊不僅減少了**中的負債,而且還修復了每年100萬美元的乙個bug。

在軟體公司,產品經理和專案經理需要與軟體開發人員一起商量編寫**的優先順序,然後交付給客戶。交付一項功能就好比消掉一行俄羅斯方塊,交付一項頗為複雜的功能就好像消掉好多行。

為了滿足業務需求(新功能、新產品),按時交付功能,我們常常迫不得已需要在**上權衡利弊。有時,產品策略的變化導致以前的設計出現不相容的現象,我們需要付出更多努力來遷移客戶,或者同時支援新舊兩種邏輯。

這類的情況會導致產品****現技術負債,就好像俄羅斯方塊中間出現了乙個空隙。所有**都有技術負債,這都很正常,就好像你在玩俄羅斯方塊的時候,也會出現一些空隙。

然而,技術負債過多,就會妨礙我們在合理的時間內交付功能和錯誤修復。

這不是什麼大問題,我們可以新增更多人手或請高手來幫忙。我們之所以稱之為技術負債,是因為到一定的時間,你必須償還這些債務。

償還技術負債可以保持競爭力,就像讓你的俄羅斯方塊遊戲繼續。

與經營公司一樣,俄羅斯方塊玩的時間越長,難度就越大。方塊的掉落速度會加快,讓你措手不及。

與經營公司一樣,俄羅斯方塊是一款永遠無法通關的遊戲,這個遊戲沒有終點,你只能控制自己死的速度有多慢。

與經營公司一樣,螢幕中間的空隙太多,就會輸掉遊戲。

不久前,我們團隊接到了一項任務:更新產品**中付款和發票的邏輯,目的是為了支援新的定價計畫、新的付款處理並改進賬單工作流程。在等待產品團隊確定一些細節期間,我們利用業餘時間深入研究了現有**。提前理解**,可以讓我們更準確地預估完成這些更改所需的技術力。

我們研究**的基本目的是檢視每個客戶的賬號,計算他們的賬單,然後將這些賬單傳送到發票api。顯然,這部分**經過了精心設計,而且**本身編寫得也很漂亮,雖然不那麼靈活,但並不是太混亂。這是乙個巨大的函式,沒有測試,日誌也很少,幾乎沒有任何文件,還有一些無法解釋的隨機因素。這是一位聯合創始人於五年前編寫的**。自該函式編寫完成以來,中間只有過一次變化,但當時的開發人員已經不在公司了。

這段**會有問題嗎?發票就是從這裡發出去的,而且公司也一直在賺錢,沒有任何跡象表明有任何問題。這麼看來,我們不應該重構這段**,但是我們知道重大的變更即將來臨,這個函式無法滿足我們的需求,如果能夠簡化這部分**,我們就可以更快地完成這項變更。

於是,我們利用乙個sprint中重構了該函式,並新增了一些急需的日誌。就在這個時候,我們才發現我們在不知不覺間解決了乙個大問題。有一天,一位會計部的同事問我們,為什麼輸出的發票上的金額突然增加了?舊**可能會超時但不會報告任何錯誤,因此部分使用者的費用並沒有體現在發票上。是因為那些隨機因素嗎?導致我們收不到某些客戶未付費的提醒?

根據我們的估計,每年丟失發票的總金額超過了100萬美元。

儘管這是乙個真實的故事,但償還技術債務並不一定總是有如此顯著的效果。我們只是走運罷了。

我非常希望能夠就何時償還技術負債給出一些建議,然而不幸的是,我只能說,技術負債非常複雜,你只能盡力平衡。即便你擁有世界上最整潔、測試最充分的**,但也會遇到沒有付費的客戶。而另一方面,即便有些公司的**非常凌亂,但客戶很滿意,而且公司也賺到了錢。

無論在何種情況下,產品經理和開發人員都應該對技術負債有統一的認識。大家應該明白,技術負債永遠無法避免,就像俄羅斯方塊一樣,在軟體開發這場遊戲中,你永遠無法通關。

AI玩俄羅斯方塊(Python實現)

1 環境 2 實現機制 pierre dellacherie演算法 3 實現 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後,在python實現俄羅斯方塊這個遊戲基礎上,利用週六週日兩天的時間去蒐集了大量的資料,在電腦...

俄羅斯方塊可以永無止境地玩下去嗎?

大家在玩俄羅斯方塊的時候有沒有想過這樣乙個問題 如果玩家足夠牛b的話,是不是永遠也不可能玩死?換句話說,假設你是萬惡的遊戲機,你打算害死你 面前的玩家 你知道任意時刻遊戲的狀態,並可以有針對性地給出一些明顯不合適的方塊,盡量迫使玩家面對最壞情況。那麼,你有沒有一種演算法能保證害死玩家,或者玩家無論如...

俄羅斯方塊可以永無止境地玩下去嗎?

大家在玩俄羅斯方塊的時候有沒有想過這樣乙個問題 如果玩家足夠牛b的話,是不是永遠也不可能玩死?換句話說,假設你是萬惡的遊戲機,你打算害死你 面前的玩家 你知道任意時刻遊戲的狀態,並可以有針對性地給出一些明顯不合適的方塊,盡量迫使玩家面對最壞情況。那麼,你有沒有一種演算法能保證害死玩家,或者玩家無論如...