Задать вопрос

Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

Поддерживаем древний монолитный проект (ASP.NET Web Api), который был написан студентом на коленке и под бутылочку пивка. Платформа - .NET 4.8. Код десятилетней давности уже крайне тяжело поддерживать и расширять. Местами нет асинхронности и даже типов (привет dynamic / object). Но начальство не планирует переписывать это и менять платформу официально. Мол, работает, не трогаем. Есть желание на чистом энтузиазме (без оплаты) взять и переписать продукт на ASP.NET Core 6 по принципам чистой архитектуры. Затем показать это начальству, убедить в переходе. Стоит ли оно того? Какие последствия (негативные или позитивные) будут, если кто сталкивался?
  • Вопрос задан
  • 842 просмотра
Подписаться 6 Простой 8 комментариев
Решения вопроса 2
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Нет, оно того не стоит. Любая работа должна быть оплачена. Ибо сейчас напишешь за свой счет, а потом начальника скажет "о, отлично, молодец, можем теперь сэкономить на программистах и поддержке, у меня как раз знакомый ищет, ща его поставлю, а ты можешь быть свободен, заодно выпишу себе премию, во какой я молодец". Этот код решает задачи бизнеса. Если бизнес готов тратить на его поддержку и сопровождение деньги - то это проблемы этого бизнеса. Почему это наемный работник должен решать проблемы бизнеса за свой счет? Правильно сделать так: оформить все в виде какого-то документа с конкретными аргументами, цифрами, графиками и т.п. и выдать его начальству. Типа сейчас поддержка проекта стоит столько-то, приносит такие-то проблемы, переписать будет стоить столько-то, сопровождение нового будет столько-то, оно решает такие-то проблемы. И выдаете данный документ начальству. Можно даже в бумажном виде в нескольких экземплярах. А далее пусть у начальства голова болит.
Ответ написан
DollyPapper
@DollyPapper
Чистая архитектура это не серебряная пуля, в чем профит то? Какие ваши проблемы она решит? Выглядит так, что вы устали работать с легаси говнищем и хотете на текущее место работы привнести новые технологии. Если это так, то это не работает. Поверьте, я проверял. Лучше смените проект.
Ради опыта напишите полезный пет проект, или опять же - смените место работы. Загнивание на работе с технологиями которые вам не нравятся это путь в выгорание. Опять же поверьте, я проверял.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
@Drno
нет
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Бизнес должен понимать что вы ему предлагаете. По сути эту идею можно продвинуть только под соусом разработки новой фичи. В противном случае у вас будет сильное непонимание. Все что вы предлагаете - это NFR. Не-функциональные требования. Шестая версия дотнет. Асинки. Обжекты. Бизнес не понимает как ему это дальше продавать.

Я-бы сказал что просто так взять всё и переписать - это гиблое дело. Пойдут баги и бизнес попросит либо срочно исправлять либо откатить это назад до старой версии. Это - фиаско. Очень часто бывает так что старый и плохой код завязывается на какое-то странное поведение API которое плохо документировано и чёрт-пойми-как-работает. Но работает. Я много таких аномалий видел. И ты его исправляешь по фень-шую как должно быть и становится ... (!) еще хуже. Особенно большая беда с мультипоточкой и интеграцией например с операционкой или сторонними нативными либами.

Если вы имеете силы и смелость - то пишите план (желательно на пол-года) на рефакторинг. Шаг-за шагом. Сначала - покрытие всего тестами. Потом миграция версий тоже мелкими шажками. И все это (!) параллельно с разработкой новой фичи которую бизнес одобрит. Только так.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
В таких случаех все решается деньгами.

Выкладки начальству о стоимости поддержки старой версии, включая совместимость современных ОС/платформ и уязвимостей.

Выкладки начальству по поводу рисков, например о возможности легко найти людей которые готовы ковыряться и поддерживать старые платформы, если вдруг вы, например, решите уйти, или если старая платформа сдохнет, а завести ее сложно, гемор с виртуалками и уязвимостями

Сроки на нормальную (в штатном режиме, а не аврале) разработке новой версии, грамотный выбор новой платформы, версии, стоимость.

Собственно как эту инфу соберешь, сам поймешь имеет ли смысл переходить
Ответ написан
@mletov
За бесплатно на энтузиазме - однозначно нет. Потому что если в переписанной системе будут баги, которых не было в старой, то в это обязательно ткнут пальцем.

Либо должен быть переходный период, во время которого будут существовать 2 системы. И вторую будут тыркать аналитики, тестировщики, заказчик и т д. Т е им тоже надо будет тратить свое время, аналитики и тестировщики не захотят делать это бесплатно, а у заказчика возникнут закономерные вопросы, с чего вообще решили переписывать, и так работает.

Сталкивался с переписыванием системы с PHP на .NET, но это согласовывалось с самого верха и, разумеется, не бесплатно, а в штатном режиме.
Ответ написан
Sanes
@Sanes
Перепиши, если руки чешутся. Только начальство предупреди.
Ответ написан
Комментировать
igolets
@igolets
Программист C#, MSSQL
Я бы предложил попробовать скушать этого слона по частям, а не замахиваться на переписывание всего с сразу.
По мере появления новых задач локально (в тех местах, которые уже затронуты изменениями) приводить код в порядок — добавлять асинхронность, приводить в порядок типы, обновлять библиотеки.
Собственно, на .Net6 свет клином не сошёлся, плохой код (как и хороший) можно писать на любой версии
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы