Во времена моей работы в NC одной из главных головных болей в разработке была производительность. Приложение, которое мы делали, ворочало монстроузными деревьями данных, хранящихся в EAV виде в оракле. Помимо деревьев, сложных самих по себе (хотя если ты 5 лет ворочаешь одну и ту же структуру — то она уже и не кажется особо сложной), там еще было навернуто сотни слоев бизнес логики с возможностью расширения и кастомизации под каждого отдельно взятого заказчика. В целом, продукт был сделан некачественно и неудобно.

Как же так получилось? А очень просто — сам продукт вырос из сейлз-демки для одного из заказчиков, дальше несколько раз мутировал на других демках, в итоге продался, и мы вынуждены были срочно его допиливать до продакшн-состояния. Он выстрелил, дальше было больше проектов и технический долг нарастал снежным комом. Многие базовые архитектурные решения были сделаны под первого заказчика и переносились из версии в версию, чтобы не ломать обратную совместимость, а со временем на вопросы “почему тут так?” проще было ответить “так сложилось исторически” чем вспоминать логику решения.

Естественно, все это работало неспеша и по ходу дела производило кучу багов, на которые сверху накладывались баги UI фреймворка, а снизу — платформы, на которой это все стояло. В силу инертности большой корпорации и отсутствия мощных драйверов изменений снизу, никто не знал что с этим делать и не хотел брать на себя ответственнсть.

В то время я был уверен, что нам просто не хватает скилловых программстов, что проблема была в том, что нанимали в основном джунов (в свой отдел я так и не смог нанять ни одного сеньера помидора с рынка, только растил своих), что вот если бы нам щас дали хороших разработчиков, то все бы заколосилось и взлетело. Таких разработчиков действительно наняли, в тогда свежеоткрытых офисах в Нижнем Новгороде и СПб. Один из тимлидов оттуда в разговорах употреблял слово “кабаны” как синоним хорошего, годного, сеньерного разработчика, и мы с ним сходились в мнении, что просто нужно больше “кабанов” на проект и все будет хорошо.

Увы, сильно лучше не стало, по крайней мере на моем проекте. На проекте того парня не знаю как все было, я уволился до того, как они вышли в продакшн, но походу как-то все работает.

После этого я понял что на одних кабанах не выедешь, даже если собрать талантливых и умных людей в одной комнате, то без правильного видения продукта, хорошо поставленных процессов и отсутствия компромиссов получится то же самое, что и раньше. Может быть, немножко лучше. Совсем чуть-чуть. Для вящего эффекта кабаны нужны еще и в продукт и проджект менеджменте 🐖. Тогда будет норм. Может быть. Но это не точно.

А если вам вдруг предложат порулить легаси проектом, допилить или перепилить — не соглашайтесь ни за какие коврижки. Лучше начать с нуля, все равно через год у вас будет уже свой собственный набор свежеиспеченного легаси и костылей с подпорками.