Похоже, ваши проблемы носят более общий характер.
Проблема рефакторинга является как симптомом, так и потенциальным избавлением от части проблемы.
Программный лидер и команда выделяют время команды
Исходя из моего опыта, я думаю, что вы можете столкнуться с проблемой, которую я называю «каждый менеджер программного обеспечения». Менеджеры продуктов, менеджеры проектов, а иногда системные инженеры и тестировщики могут быть печально известны тем, что пытаются микроуправлять разработчиками, у которых, вероятно, уже есть опытный менеджер программного обеспечения. В вашей команде может быть даже несколько человек, которые считают, что их роль - управлять.
Если вы являетесь менеджером программного обеспечения, сделайте назначения для рефакторинга, который вы хотите, или, что еще лучше, попросите вашу команду сделать рефакторинг для вашего одобрения. Чтобы не заниматься микроменеджментом, у вас могут быть рекомендации по возрасту / автору / размеру / контексту кода, подлежащего рефакторингу, которые можно свободно реорганизовать против необходимости одобрения. Если член вашей команды хочет провести массовый рефакторинг четырех больших классов сложного старого кода, которые он не написал, и которые не являются частью его функции, его двухнедельная утечка - ваша проблема, поэтому вам нужен шанс сказать «нет».
Вы можете красться, но я думаю, что лучше просто аккуратно составить свои оценки со временем для анализа, проектирования, кодирования, многочисленных форм тестирования (по крайней мере, единичного и интеграционного), рефакторинга и риска, как это оценивалось исторически и отсутствием опыт или ясность, связанные с задачей. Если вы были слишком откровенны относительно работы вашей команды (или у вас есть члены в вашей команде), возможно, было бы разумно сузить каналы связи, чтобы они проходили через вас и обсуждали ресурсы и результаты, а не методы.
Ранний выбор проекта создает порочный цикл для рефакторинга
Обслуживание программного обеспечения сложно. Вдвойне сложно, если другие члены организации делают выбор за ваш счет. Это неправильно, но это не ново. К нему обратился Барри Бём, один из наших великих авторов программного обеспечения, который выдвигает модель управления, которую он описывает как Теория В.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Зачастую разработчики программного обеспечения вынуждены производить в соответствии с подходом управления Theory-X, который гласит, что рабочие в основном ленивы и не будут работать, если их не заставят подчиниться. Бём резюмирует и противопоставляет предложенную модель следующим образом:
«Вместо того чтобы характеризовать менеджера как автократа (Теория X), тренера (Теория Y) или фасилитатора (Теория Z), Теория W характеризует основную роль менеджера как посредника между его различными группами интересов и упаковщиком проектных решений. с условиями выигрыша для всех сторон. Помимо этого, менеджер также является целеустремленником, монитором прогресса в достижении целей и активистом в поиске повседневных конфликтных ситуаций между проектами типа «победа-поражение-поражение», противостояние им, и превращая их в беспроигрышные ситуации ".
Быстро и грязно часто просто грязно
Далее Бем указывает на причину, по которой разработчики из команды поддержки так несчастны.
«Создание быстрого и неаккуратного продукта может быть недорогой краткосрочной« победой »для разработчика и заказчика программного обеспечения, но это будет« неудачей »для пользователя и сопровождающего». Обратите внимание, что в модели Бёма клиент скорее является администратором контракта, а не конечным пользователем. В большинстве компаний считают менеджера по продукту суррогатом клиента или, возможно, человеком, который покупает продукт для его списка функций.
Мое решение состояло бы в том, чтобы не выпускать оригинальную команду разработчиков (или, по крайней мере, оригинального лидера), пока код не подвергнется рефакторингу, чтобы, по крайней мере, соответствовать стандартам кодирования.
Для клиента я думаю, что разумно считать менеджера по продукту суррогатом клиента, и группа людей, вознагражденных за то, что они доставили что-то быстрое и грязное, безусловно, может быть расширена, так что есть большая группа людей, которые делают неправильные вещи.
Рефакторинг не подлежит обсуждению
Пожалуйста, не отступайте от своей роли менеджера программного обеспечения. У вас должны быть полномочия и свобода действий, чтобы использовать время вашей команды в процессе и улучшения продукта. В этой роли вам может потребоваться согласовать ваш выбор, чтобы сделать вашу команду более профессиональной. Однако, что касается процесса, не ведите переговоры с маркетингом, потому что, по моему опыту, это проигрышная игра. Договориться с инженерным управлением. Это показывает, что у тебя есть видение. Создание профессиональной команды разработчиков программного обеспечения является продолжением их роли и, скорее всего, будет восприниматься как беспроигрышный вариант.