Метаданные и BPMN: нас просят сделать космодром, а потом не превращать задачи в космолёт
Помните слова Германа Грефа о том что "программисты не нужны" и последующую статью о том как программистов пытались заменить на BPMN (Business Process Model and Notation)? Почитайте, интересная история.
Мой рассказ не такой красочный, но в нем тоже есть боль, страдания, принятие и отторжение. Выводом может быть фраза "делай проще!".
В компании в которой я работал, решили переложить часть разработки бизнес-логики с программистов на аналитиков.
Сначала это были безобидные правки тарифов по ставкам. Потом решили сделать аля-BPMN, когда в визуальной среде стрелочками рисуется бизнес-логика, а потом из этого генерируется код на C# использующий под капотом процессную модель Windows Workflow Foundation.
- Постоянные конфликты JSON-конфигураций на базе которых генерировались визуальные схемы.
- Усложнение обратной совместимости на бекенде, потому что в кэше хранились процессы предыдущих версий. Формат контрактов так же ограничен особенностями схемы.
- Вместо понятного SQL или C# мы писали JSON-метаданые в кастомном формате, из которых потом генерировались Entity, DTO, ViewModel, DDL-скрипты. О релевантности такого опыта на рынке даже говорить не хочется.
- Каждая новая фича давалась кровью и потом, а сроки исполнения задач росли в геометрической прогрессии. Чем естественно расстраивали менеджеров, ориентирующихся на потрясающие метрики вроде time to market, cycle time, etc.
- И еще миллион проблем!
Всё получилось как в классическом примере из книги "Чистый код", о том почему переусложненый продукт будет очень сложен в поддержке и сколько разработчиков не бери, всё равно всё будет плохо.
Также из-за того что весь проект был завязан на WWF была невозможна миграция на .NET Core (смотрели форки типа CoreWF, но не взлетело).
В итоге имеем сотрудников, которые работают на неактуальном стеком и изобретающими костыли для внедрения чего-либо нового где каждая задача превращается в ад.
К примеру, я работал над одним багом три месяца и на каждом дейли говорил "я в процессе, распутываю клубок". Баг был в том что при нажатии на ссылку после покупки инвалидировались данные в корзине и пользователь видел ошибку. Звучит просто? Три месяца, сынок.
P.S. Некоторые проекты в компании отказались от использования "ядра" и начали делать простые круды с формочками на фронте. Стоит ли говорить что за несколько месяцев разработки их time-to-market уменьшился в несколько раз по сравнению с предыдущими годами?
P.P.S. Мой друг из крупного китайского ритейлера написал что они отказываются от метаданных. Победа здравого смысла!