На прошлой неделе ходил на митап для архитекторов организованный лидером рынка (очевидно, аутсорсером). Темой митапа было что-то вроде “фейлы в архитекторской работе” и спикеры-архитекторы говорили о своих если так можно сказать “провалах”. Даю немного контекста:

Итак, первый человек рассказывал о том что у них заказали миграцию сложного приложения написанного на свинге (это такой ui фреймворк, если вы пользуетесь продуктами компании JetBrains то у них всё на свинге сделано кроме решарпера вроде) в веб и дали на это год времени. Ребята подумали и в результате цепочки странных решений пришли к выводу что проще всего будет сделать новую вебморду, вызовы которой делегировать к свинг-приложению запущенному в контейнере. Такой типа тонкий клиент. Начали это делать и на полпути оказалось что для каждого реального пользователя нужно будет держать по одному контейнеру и это крайне затратно по цифровым мощностям. Объяснили это клиенту и проект свернули несмотря на значительный проделанный объем работы.

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

Третий человек рассказал о том, как они делали для производителя штанов систему логистики, состоящую из простого бекенда и уперлись в то, что абсолютно все миграции баз данных нужно было согласовывать с DBA на стороне клиента, что затягивало внедрение некоторых фич на месяцы. Посмотрев на это дело, и понимая что так дальше не пойдет ребята решили вместо базы данных взять MongoDB которая тогда как раз была на подъеме (речь о 2015 году вроде). Так как DBA заказчика работали только с реляционками, то никто не воспрепятствовал им воткнуть незнакомый кусок инфраструктуры и допилить решение на нём. Нет DBA — не проблемы. Проект сдали, клиент доволен, DBA и не подозревают что у них под носом заложили мину.

Что объединяет все эти “фейлы”?

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

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

У меня конечно же от такого расклада дел здорово подгорело. Один из докладчиков дополнительно подлил масла в огонь под моей задницей, сообщив что однажды они продали проект “на микросервисах” но так как опыта и экспертизы не было то они получили распределенный монолит который очень плохо работал, однако с этим ничего нельзя было сделать потому что заказчику уже продали “микросервисное решение”. 300 человек на проекте страдали потому что кто-то где-то наверху на самом старте договорился что все будем делать на современных баззвордах.

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

А теперь представьте, сколько людей работает на таких же бесполезных проектах, только потому что их напродавали? Сервисная модель она такая — платят деньги — бери пока дают и делай что говорят применяя свою экспертизу. Даже у меня есть несколько проектов, очень небольших, но довольно бесполезных — я знаю что я получу свои пару тысяч за разработку, но пользоваться этим никто не будет. А сделать нужно, потому что есть бюджет и надо его осваивать. Не сделаю я — наймут другого.

Меня это раздражает, меня это бесит и мне это не нравится. Это тупо. Впрочем так же тупо как общество потребления, неэффективное использование человечеством ресурсов и стомиллиардные инвестиции в очередной клон убера-для-чего-нибудь. Но если на второе сложно влиять то с первым можно попробовать что-то сделать — хотя бы работать на проектах которые приносят пользу клиенту а не просто осваивают его бюджет.

Ну и в завершение немного про фантазийные проекты. На ДОУ недавно была тема где человек (РМ или сейлз, непонятно кто) получил заказ на разработку стриминговой платформы которая сможет в 4k и вопрошал у общества с чего ему начать и каких программистов искать для этого проекта.

Оставим в стороне сложнейшую техническую сторону такого решения и задумаемся на секунду.

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

Во-вторых, заказчик не понимает что его продукт полная ерунда и начинать надо совсем не с этого, но аутсорсер совершенно не заинтересован в том, чтобы ему помочь. Представьте, что к вам приходит безумный заказ и вы говорите человеку — ”мужик, ты хоть бизнес канвас нарисовал? исследование рынка провел? тебе некуда тратить сто штук? узбагойся, твой проект не взлетит, и вообще есть бесплатные решения твоей задачи вот тебе a b и c сиди читай”. Таким образом вы далеко не уедете, потому что контора с соседней улицы с радостью возьмется за заказ и может быть даже что-то там сделает ну а потом скажет клиенту “сорян ну что ж ты хотел нетфликс за сто штук, тут работы на миллиарды”. Пришел клиент — надо браться. Особенно, если у него есть деньги.

В итоге:

Клиент получает полезный урок касательного того, как не нужно тратить деньги и кучу говнокода, который устареет еще до того как он положит трубку после последнего диалога с аккаунт менеджером.

Гребцы получают бесценный опыт построение заведомого провального продукта и дописывают себе пару баззвордов в резюме и профиль на линкедине.

Аутсорсер соберет свою х2 маржу на гребцах и пойдет искать следующего лоха.

Все в профите кроме клиента.

Вот так и живем, так и работаем.