Здається, ваші проблеми більш загальні.
Проблема рефакторингу - це як симптом, так і потенційне полегшення частини проблеми.
Ведучий програмного забезпечення та команда виділяють час команди
З мого досвіду, я думаю, що ви можете зіткнутися з проблемою, яку я називаю, "всі є менеджером програмного забезпечення". Менеджери продуктів, менеджери проектів, а іноді системні інженери та тестери можуть бути відомими для спроб мікро-керування розробниками, які, ймовірно, вже мають досвідченого менеджера програмного забезпечення. У вас може бути навіть кілька членів вашої команди, які вважають, що їх роль полягає в управлінні.
Якщо ви менеджер програмного забезпечення, виконайте завдання для рефакторингу, який ви хочете, а ще краще, запропонуйте вашій команді запропонувати вам рефакторинг на затвердження. Для того, щоб не проводити мікроконтроль, у вас можуть бути вказівки щодо віку / автора / розміру / контексту коду, який слід реконструювати, який можна вільно відреставрувати відносно, потребуючи схвалення. Якщо член вашої команди хоче масово переробити чотири великі класи складного старого коду, який він не написав, що не є частиною його функції, його два тижні відхилення - це ваша проблема, тому вам потрібен шанс сказати "ні".
Ви можете прокрастись, але я думаю, що краще просто ретельно скласти свої оцінки з часом для аналізу, проектування, кодування, декількох форм тестування (принаймні одиниці та інтеграції), рефакторингу та ризику, як судили історично та через відсутність досвід чи зрозумілість, пов’язані із завданням. Якщо ви занадто відкриті щодо роботи вашої команди (або у вас є члени вашої команди), може бути розумним звузити канали комунікацій, щоб вони проходили через вас і обговорювали ресурси та результати, а не методи.
Ранній вибір проектів створить загальний цикл рефакторингу
Обслуговування програмного забезпечення важке. Удвічі важко, якщо інші в організації роблять вибір за ваш рахунок. Це неправильно, але це не нове. До нього звернувся Баррі Бум, який є одним із наших великих авторів програмного забезпечення, який висуває модель управління, яку він характеризує як Теорію В.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Часто розробникам програмного забезпечення забивають виробляти за підходом до управління теорією X, який говорить про те, що працівники в основному ледачі і не будуть працювати, якщо їх не піддають. Бум підсумовує та протиставляє запропоновану модель наступним чином:
"Замість того, щоб характеризувати менеджера як самодержавника (Теорія X), тренера (Теорія Y) або фасилітатора (Теорія Z), Теорія W характеризує головну роль менеджера як переговорника між його різними округами та упаковкою проектних рішень. з умовами виграшу для всіх сторін. Крім цього, менеджер - це також постановник цілей, моніторинг прогресу у досягненні цілей та активіст у пошуку щоденних конфліктів виграшних чи програшних проектів, протистояння їм, і змінюючи їх на безпрограшні ситуації ".
Швидкий і брудний часто просто брудний
Бум продовжує зазначити причину, через яку розробники в службі технічного обслуговування так жалюгідні.
"Створення швидкого та неохайного продукту може бути недорогим, короткочасним" виграшем "для розробника програмного забезпечення та клієнта, але це буде" програш "для користувача та обслуговуючого персоналу." Зверніть увагу, що в моделі Boehm замовник є більше адміністратором контракту, а не кінцевим користувачем. У більшості компаній продуктовий менеджер вважає сурогатом замовника або, можливо, людиною, яка купує продукт, за його списком характеристик.
Моє рішення полягало б у тому, щоб не випускати оригінальну команду розробників (або принаймні оригіналу), поки код не буде відновлено, щонайменше відповідає стандартам кодування.
Щодо замовника, я вважаю, що доцільно вважати менеджера продукту сурогатом замовника, і групу людей, нагороджених за те, що вони швидко і брудно поставили, можна, безумовно, розширити, тому існує велика громада для того, щоб робити справи не так.
Реконструкція не підлягає переговорам
Не відступайте від своєї ролі менеджера програмного забезпечення. Ви повинні мати повноваження та розсуд використовувати час своєї команди для вдосконалення процесів та продуктів. У цій ролі вам може знадобитися узгодити свій вибір, щоб зробити вашу команду більш професійною. Однак, що стосується процесу, не домовляйтеся з маркетингом, тому що, на мій досвід, це програча гра. Переговори з інженерним управлінням. Це показує, що у вас є зір. Створення професійної команди програмного забезпечення - це розширення їх ролі, і набагато більше шансів сприймати як безпрограшний.