По моему опыту, поддержка вашего конечного пользователя имеет фундаментальное значение.
У меня был похожий опыт несколько лет назад, когда я получил приложение Clipper Summer '87 для поддержки и обеспечения совместимости с Y2K. Началось как кошмар: я начал исправлять некоторые ошибки в одном месте, а другой кусок перестал работать. Потратив некоторое время, я запланировал встречу с некоторыми ключевыми пользователями и предложил переписать это приложение.
Сначала я переписал наиболее важные функции и каждый день очень внимательно беседовал с этими пользователями, в которых часто предлагались важные упущения. Каждую неделю я переносил некоторые образцы данных, чтобы они могли почувствовать, как работает это приложение. Первая версия была запущена примерно через три недели, и был перенесен только небольшой набор функций.
Был специальный отчет, который обрабатывался в течение 45 минут и стоил всего 5 секунд в новой версии. Таким образом, пользователи увидели, что было бы неплохо потратить больше времени и денег, выбрасывая старый код и создавая новую версию.
Я знаю, не каждый раз, когда вы можете переписать приложение. Но понимание того, что важно для ваших клиентов, и чтобы они поняли, что произошли некоторые важные изменения, имело решающее значение для успеха этого проекта.