我作為開發人員從事15年曆史的軟件產品的開發工作,該產品一直在持續開發中。代碼庫很大。我們有超過500mb的代碼,我懷疑這是幾百萬行代碼。這不包括圖像或具有500多個表的數據庫。擴展代碼的需求很高。客戶一直希望看到新功能。當然,這對技術債務不利。程序員經常開玩笑說,在正常的代碼庫中創建需要花一個小時才能完成的工作,而在我們的代碼庫中要花一周的時間。一個新的程序員預計將花費一年多的時間來熟悉一個模塊。高層管理人員希望我們改善軟件的性能,並指示高層管理人員這樣做,但這在票證系統中並不直接可見。
我與一個開發團隊合作,與其他四個團隊一起工作。程序員和經理。我們三個人認為,批量重構是必要的,至少在經常使用和經常開發的部分中。自該程序誕生以來就一直在從事該程序的其他程序員之一,而經理則反對該程序。他們出於不同的原因反對它。經理認為代碼重構或以其他方式減少技術債務不會幫助客戶或我們團隊的人數(這可能會影響他的薪水),而另一位程序員則認為很多代碼已經是完美的並且具有可變性和功能性是邪惡的,應該避免。另一個程序員並不比我們其他人高,但是在這里工作時間最長。有一個高級開發人員正在另一個模塊上工作,而該模塊不受該經理的管理,我們可以為我們的事業招募這些人。
這些年來,客戶的期望也發生了變化。儘管他們對15年前啟動需要5分鐘的模塊感到滿意,但現在他們對這段時間並不滿意。我認為可以得到很多。我花了一個小時來重構一個函數,該函數無論如何都要在一段時間後進行擴展,從而將一個進程的加載時間從10分鐘減少到10秒。其他團隊確實致力於減少技術負擔,從而提高了性能,減少了錯誤並提高了擴展能力。我們的團隊是唯一沒有的團隊。我們是票務儀表板上的“最佳”團隊,因為我們已解決了大多數票證,但對於高層管理人員而言,性能是當前最重要的問題。他們的解決方案的一部分是將代碼移至更新的語言,因此實際上可以進行(單元)測試,因為許多舊代碼從未經過測試,並且由於客戶升級到64位系統而失敗。
我(和其他兩位程序員)如何說服我們的經理(和另一個程序員)我們需要進行技術債務工作?
我想強調一點高級管理層確實認為我們需要提高績效,但尚未發布某些目標。另一方面,我的經理關注的是在票務儀表板上直接可見的數字。性能差主要是因為查詢無處不在,通常執行次數比必要的次數多。我建議解決查詢並將其移至單獨的函數或類,但是主要問題是其他開發人員不相信類或函數,而經理則相信他。