Как НЕ надо делать ИТ-проект: грабли, на которые все пытаются не наступить
Знаете, что общего у ремонта квартиры и разработки ИТ-проекта?
Да, оба процесса начинаются с фразы: «Ну, это ж быстро, чё там сложного?».
Нашей команде NooSoft достался проект, который уже несколько лет как «работает». Ну, как работает… скорее лежит на диване, жалуется на жизнь и иногда показывает признаки активности.
Почему не начать с нуля?
Ага, классный вопрос, мы тоже им задавались. Но вы же знаете вот это: «Мы уже потратили кучу денег, времени и нервов, так что давайте хоть как-то закончим». Типичный синдром «не выкинуть же старый шкаф, он ещё нормальный… если дверцу подпереть табуреткой и не дышать рядом».
Небольшая предыстория
Четыре года назад наш нынешний клиент решил заказать портал. Этакий BlaBlaCar для бизнеса. Задумка классная: заказчики кидают запросы на перевозку, исполнители откликаются, участвуют в аукционе. Чем дольше думаешь, тем меньше зарабатываешь. Всё для того, чтобы каждая из сторон получила лучшее предложение.
На бумаге красиво, в реальности – как попытка собрать конструктор без инструкции: детали вроде есть, но что с ними делать непонятно.
Одной из фишек проекта был внутренний документооборот. Система сама генерировала всё, что нужно: договор, талон заявки, путевой лист, товарно-транспортную накладную, акт сверки. Красота! Юридическая прозрачность, автоматизация, конкуренты кусают локти.
Что пошло не так?
Предыдущая команда выпустила в продакшн версию, которая, мягко говоря, была сырой и недоработанной. Пользователи радостно зашли и начали спотыкаться о баги. А разработчики вместо починки включали режим:
– «У нас всё работает!»
– «Это нельзя исправить!»
И дальше по списку любимых отмазок.
В итоге ошибки росли, как грибы после дождя, а терпение людей таяло. Когда совсем стало невмоготу, клиент пришёл к нам в NooSoft с просьбой «реанимировать» проект.
С чего начали?
С аудита. Вскрытие показало: проблем больше, чем хотелось бы видеть в живой системе. Напрашивалось простое решение – переписать всё с нуля. Но заказчик на это ответил классическим: «Денег нет, но вы держитесь».
Причины были железные:
Платформа уже работала полтора года. Выключить – значит, похоронить весь бизнес-процесс.
Новый запуск потребовал бы инвесторов, а это отдельный болючий квест.
В итоге у нас получилась задачка уровня «почини двигатель автомобиля на ходу, пока он мчится по трассе».
Анализ ИТ-проекта. Какие проблемы нас поджидали?
После аудита мы, мягко говоря, были в шоке. Один из разработчиков резюмировал всё происходящее так: «Представьте гигантскую паутину, которая связывается с другой паутиной. Только паука нет, а паутина сама продолжает себя плести».
Всё настолько «автоматизировано», что даже Франкенштейн бы покивал с уважением.
И тут мы поняли: починка – это ещё полдела. Сначала вообще надо разобраться, как этот зверь работает.
«А чего сложного, открываете документацию и читаете?»
Ага, но есть одно но…. Документации не было. Вы пробовали разбирать чужой проект без документации? А ребята из NooSoft теперь в этом профи.
Что было внутри?
Код выглядел как стихийная свалка: паттерн вроде выбрали, но следовать ему забыли.
Чётких шаблонов и фундамента – ноль. Почти всё генерировалось «на лету». А как оно там делалось – одному богу известно.
Зависимости между компонентами, как в мыльной опере: стоит поправить одного героя, и рушится весь сюжет.
Попробовали найти ТЗ. Сюрприз: его тоже не было. Работали как могли, параллельно составляя клиенту подробные отчёты «что мы чинили и зачем». Эти отчёты потом и стали первой нормальной документацией.
Перлы из практики:
Данные хранились в local storage с лимитом 5 МБ. Переполнение → привет, null. Система начинала творить чудеса: открывала чужие данные или вообще показывала пустоту. Каждый раз – как рулетка.
Вся бизнес-логика жила прямо в базе. Работает быстро, зато сопровождать – одно удовольствие.
Интеграции с сервисами были без защиты. Злоумышленнику хватило бы минимального желания, чтобы залезть и всё сломать. А напомним: тут формировались юридические документы.
В итоге, система вроде жила, но каждый шаг вперёд грозил обвалом. Нам пришлось выстраивать стратегию: как пошагово разгрести этот «цифровой Чернобыль» и при этом не положить работающую часть.
Как Noosoft вытаскивал проект из комы
Год активной поддержки показал: в таком виде проект дальше не протянет. Мы латали дыры, но ощущение было, будто чиним старый «Жигуль», который каждый день ломается в новом месте. Команда выгорает, клиент тратит деньги, а радости – ноль.
Что делали?
Сначала предложили несколько сценариев:
Клонировать приложение в нескольких экземплярах и раскидать данные.
Переписать фронтенд и подтянуть под него бэкенд.
Махнуть рукой и переписать всё с нуля.
После обсуждений клиент согласился: пора радикальных мер. Большую часть проекта решено переписать. Логика простая: лучше вложиться один раз, чем бесконечно чинить то, что не работает.
Как это выглядело:
Составили детальную дорожную карту с этапами и сроками.
Начали формировать документацию и покрывать систему тестами (да-да, теперь всё «по-взрослому»).
Провели аудит безопасности и прикрутили нормальные защиты интеграций.
Оптимизировали производительность, учитывая горы данных и интеграцию с DaData.
Внедрили современные процессы разработки и систему контроля версий, чтобы больше не было хаоса.
Результат?
Вместе с клиентом мы выстроили стратегию и начали её воплощать.
Сложно? Да.
Объёмно? Очень.
Но цель была одна – превратить это чудо инженерной мысли в нормальную современную систему, которая не ломается от каждого чиха и реально работает на бизнес.
Совет от разработчиков NooSoft
После всех этих приключений мы поняли одну простую истину: документация – это средство выживания.
Пока мы её не имели, ощущали себя слепыми котятами, которые пытаются найти выход из тёмной комнаты, полной грабель. Каждое исправление багов превращалось в мини-квест, а проект рассыпался быстрее, чем мы его чинили. Итог? Выгорели все – и мы, и клиент.
Главный совет от NooSoft:
Подходите к созданию проекта системно. Архитектура, безопасность и документация – это база. Без неё любая разработка превращается в «экстремальное выживание», а не в нормальную работу.
Мы не просто «реанимировали» проект – по пути ещё и пересмотрели собственные процессы. Добавили новые правила, усилили контроль, внедрили практики, которые теперь не дадут повториться подобному хаосу у нас в будущем.
Если коротко: учитесь на чужих ошибках. Это дешевле, быстрее и менее болезненно.