如果您使用的是敏捷,那麼我們的想法就是始終在進行增量重構,並且永遠不會造成巨大的技術債務。這就是說,如果你有一個敏捷的團隊接管有相當數量的技術債務的軟件,你必須把它放在某個地方。支付敏捷中的技術債務
你會去創建開發者用戶故事嗎? 。例如 。
- 作爲開發人員,我有過業務邏輯模塊50%的測試覆蓋率,所以我必須在交付
- 作爲一個開發者的信心,該應用程序支持的依賴注入,所以我們可以換出結核和在更敏捷未來。
或者是有清理這段代碼的技術債務
如果您使用的是敏捷,那麼我們的想法就是始終在進行增量重構,並且永遠不會造成巨大的技術債務。這就是說,如果你有一個敏捷的團隊接管有相當數量的技術債務的軟件,你必須把它放在某個地方。支付敏捷中的技術債務
你會去創建開發者用戶故事嗎? 。例如 。
或者是有清理這段代碼的技術債務
是您的應用程序內部或者你有一個外部客戶的另一個最佳做法?如果客戶爲您的應用程序的工作和支持付費,可能很難讓他們像您建議的那樣簽名。
此外,根據您的第二張卡片,您可能很難說出「完成」是什麼。
您的問題的一個特定方法可能是缺陷驅動測試 - 這個想法是,當您得到一個錯誤報告並估計要修復它的卡時,請查看您可以在同一時間添加哪些測試(s)這是相似的,但增加了覆蓋面。
你不特別要求有關如何測試讓你的項目的技術細節,但是這本書是非常有用的,一旦你真正開始做它:Working Effectively with Legacy Code
我在敏捷的環境中工作,但在那裏在採用敏捷技術之前,目前的代碼庫已經存在好幾年了。這導致必須嘗試以敏捷的方式工作,圍繞沒有使用自動迴歸測試編寫的代碼。
由於技術債務影響我們提供新功能的速度有多快,因此我們記錄了由於使用舊代碼而增加了多少時間。這些數據使我們能夠花時間致力於償還技術債務。因此,當客戶(無論是經理,CTO還是其他人)認爲估算過高時,您的數據可能會加強您的立場。
當然有時候,你會發現你的估計結束了,因爲遺留代碼出乎意料的怪癖,你有還清技術債務。我們發現,只要能夠解釋和解釋額外的時間,並且可以花費額外時間的好處,它通常會被很好地接受。
當然,YMMV取決於客戶或其他因素,但具有代表未來技術債務影響的統計數據非常有用。
我認爲詢問客戶希望使用該應用程序的時間長度是個不錯的主意。如果應用程序的使用壽命有限(例如,三年或更少),那麼花費很多精力進行重構可能沒有意義。如果預期(或希望)壽命更長,那麼重構的回報就會變得更具吸引力。
您可能還想嘗試創建投資重構的商業案例。顯示您想要改進的具體示例。對成本,風險和預期回報作出誠實的評估。嘗試找到一個可以獨立於其他人實現的特定重構,並遊說批准將該更改作爲重構過程的測試運行。
請注意,當您談論回報時,可能需要提供具體的數字。僅僅說「修復錯誤會容易得多」是不夠的。相反,您應該準備好說「如果錯誤修復的週轉時間縮短了至少30%」,或者「我們的體驗減少了40%」。您還應該準備好與管理層和/或客戶進行協商,以便您都同意您對他們有意義的測量,並在重構之前和之後提供測量。
應該區分工程實踐和技術債務。我將測試驅動的開發和自動化測試視爲實踐。
採取由瀑布團隊構建的代碼資產後,資產沒有自動化的單元,功能或性能測試。當我們承擔了軟件資產的責任時,我們對Agile的產品所有者進行了培訓,並告訴他們我們將使用的做法。
一旦我們開始使用這些實踐,我們開始識別技術債務。隨着技術債務的確定,技術故事卡被編寫並放置在產品所有者積壓的產品上。開發人員和測試人員使用XP工程實踐(TDD,自動測試,結對編程等)估計所有工作。這些實踐通過TDD,自動化功能和性能測試確定了代碼的脆弱性。特別是,通過自動性能測試和分析確定了一個重大的性能問題。債務太大,我們估計修復需要6次迭代。我們通知產品所有者,如果開發了新功能,由於應用程序性能差,用戶羣將無法使用它們。鑑於我們必須將應用程序從幾百個用戶擴展到數以千計的用戶,因此產品負責人將性能技術債務優先考慮爲非常高,並且我們在估計的迭代中完成了技術卡。
注意:技術債務可以通過重構固定在故事卡的估計內,不需要技術故事卡。更大的技術債務將會。對於需要技術卡片的技術債務,確定業務影響並要求產品所有者優先考慮技術卡片。然後工作卡。不要爲工程實踐創造技術債務。做所有的估算,知道工程實踐將成爲估算的一部分。不要使用自動化單元,功能和性能測試來創建卡來改進應用程序。相反,請僅將工作包含在您正在估算的卡片中,然後將自動化測試添加到您通過正在工作的卡片上觸摸的代碼。這將使應用程序隨着時間的推移而改進,而不會使進度停止。停止添加所有名片只能保存在最激烈的情況下,例如應用程序無法執行或擴展。
鑑於您繼承了沒有自動化單元,功能和性能測試的代碼庫的情況,請告知業務合作伙伴可悲的事態。讓他們知道你將如何評估工作。通過工程實踐發現技術債務。最後,通知產品所有者,隨着越來越多的代碼庫被自動化的單元,功能和性能測試所觸及,團隊的速度將會提高。
減少技術債務是每個人都應該做的事情,每次我們提交代碼。
當你編輯代碼時,你在離開露營地之前整理一下,就像偵察兵一樣。
這樣,變化的代碼經常會變得更好,這對業務有益。
永遠不會改變的代碼不會改善,但如果它工作的話,爲什麼還要這樣呢?
不要爲此計劃任務,儘管長期計劃很有幫助,討論問題的論壇也是如此。
非常大的項目將受益於某種鎖定方案,以便兩個編碼器不會同時重構同一段代碼而無需同步。
/羅傑
對於那些不熟悉技術的債務,這可能是一個很好的解釋:http://benlakey.com/2012/06/18/technical-debt/ – 2012-06-19 01:39:32
這些問題應通過https問: //pm.stackexchange.com/ – 2017-11-04 08:26:29
我投票結束這個問題,因爲這個問題應該在https://pm.stackexchange.com/ – 2017-11-04 08:26:38