С нуля или переписать
Попробуем понять когда систему стоит разработать с нуля, а когда эффективнее будет переписать.
Ничто не вечно
Часто при старте разработки системы, никто не задумывается о долгосрочной поддержке и последующем масштабировании системы.
Руководителю нужно быстрее запуститься, планировать времени нет. Получается, что сервис пишут небрежно и наспех, подгоняют, в результате программисты делают ошибки.
Важно понимать, что устаревает вся ИТ инфраструктура. Например, к ней отсняться:
- Пакеты операционной системы.
- Версии языков программирования, базы данных.
- Фреймворк на котором написан проект
При увеличении нагрузки база данных не справляется с потоком клиентов. Низкое качество кода не позволяет оперативно вносить изменения. Из-за отсутствия тестов, банально страшно править код, чтобы ничего не сломать.
За всем нужно следить и смотреть.
Что делать
Разобраться в чужом коде намного сложнее, чем сделать все с нуля. Для этого нужен опыт решения подобных задач. Клиент чаще всего соглашается с исполнителем, когда тот просит переписать все с нуля, потому что так проще.
Например, мы в первый раз написали CRM систему за 1 год. Потом приняли решения все переписать. И параллельно с поддержкой старой системы начинаем писать новую. Здесь есть существенный минус. Мы тратим время на поддержку старой системы, вместо того чтобы с головой уйти в новую версию.
Здесь еще есть психологический момент. Зачем поддерживать то, что все равно рано или поздно выкинут.
В итоге это большая нагрузка на клиента и на программистов.
С нуля
Когда же стоит разработать систему с нуля:
- Используемые технологии безнадежно устарели. Например, php 4 и ubuntu 9.
В этом случае лучше и правильнее будет взять современный стек и текущие релизы пакетов и начать все с нуля. Сложнее будет это дерьмо модернизировать и улучшать
- CRM написана на CMS
Нестандартные задачи сложно решать. Модернизировать сервис написанный на wordpress или bitrix, невероятно сложно, нужно знать внутренности этих систем.
Модернизация существующей системы
На это влияют несколько факторов:
- Специалисты высокого уровня. Задача модернизации системы более сложная, чем разработка с нуля, для этого нужны другие специалисты.
- Время. Модернизация существующей системы всегда дольше по времени, чем разработать с нуля.
Итог
С нуля переписываем, только тогда когда это действительно нужно. Во всех остальных случаях дешевле будет модернизация существующей системы.