Инверсия приоритетов

Pauel Pauel
Перечитывал статью про операционные системы и как то возникла ассоциация с текущим проектом. Команда, в целом, надёжная, как сицилийская мафия во главе с менеджером на стороне заказчика. Но, как и везде, есть слабое звено, которое любит, что бы его любили, хвалили да и вообще, само себе в зеркале улыбается, а между этими важными делами обожает поработать вместо команды, а то ведь не к лицу работать вместе с босотой всякой, а ну как кто идею получше подкинет ? Слабое звено это полу-архитекто-полу-менеджер на стороне команды — Никита Сергеевич Мергер. Отличный, в целом, специалист, в написании proof-of-concept, евангелизме и с необъятными знакомствами со всеми возможными и невозможными баззвордами. При этом практически без какой либо ненужной грамотности в Computer Science, без балласта многолетнего опыта майнтенанса, необремененный рефлексами багфикса руководитель, который командует каждой гусеницей, каждым катком, каждым люком любого танка.

Есть некоторый сервер, который очень медленно разрабатывается вражеской командой(джависты, что с них возьмёшь). Скажем, три недели заняли Cross-Site Security и Content Length. Наверное по неделе на добавление каждого из нужных хидеров в респонс.

Наши решили в новой версии подсократить цикл обновления и мне надо было слепить полу-сервер, на деле простой посредник или прокси, который добавляет нужные фичи. Код я писал "на-выброс", что бы побыстрее допилить основную фичу. Других целей написания прокси не было.

Полу-сервер который еле-еле работает, скажем, больше 5 коннектов не умеет, внезапно пошел деплоиться куда попало, потому что так оказалось быстрее демонстрировать прогресс — там похвалят, здесь похвалят, а то и многозначительно намекнут на фейерверк c шампанским. Одна из инсталяций пошла в какой то клауд, на кой ляд — не ясно, как узнавать о проблемах — снова не ясно.

Аргументы, что де полу-сервер никакой не сервер, не проходят, ибо мешают с помпой и шампанским объявить очередной внутренний промежуточный полу-релиз-полу-билд.
Ни диагностики, ни обработки ошибок, ничего нет, то есть, вообще. Есть полу-логи в трёх местах, остались скорее случайно. Под соусом "в релиз идем без прокси" высокие приоритеты получают свистелки. Да и вообще "у нас всё серьёзно, нас уже начали хвалить".

И вот, картина маслом — приходит тикет подпилить блокер. Компонент, где возник блокер, вызывается все еще через прокси. Пилю этот блокер, проверяю локально, делаю пулл-реквест и жду апрува от QA. QA сообщает, что ничего не палит, дескать, полу-сервер глючит, как собака. QA, надо сказать, совершенно адская девочка из восточной Украины. Одной рукой — в окопе отстреливается от басурман, второй — сражается с андройдом и разным непотребством. Такая не обманет и в спину не выстрелит. А раз так, то дело тухлое и никак иначе, а то бы она сама всё поборола.

Проверяю еще раз локально — всё палит. На клауде — хрен. Все запросы, кроме одного, работают внятно, валится только один, и с непонятной ошибкой. Как влезть на клауд — без понятия, ни логинов, ни паролей. У Никиты Сергеича всё серьёзно — секретнее некуда и вообще, у него вещи поважнее, чем блокеры. До кучи выясняется, что предыдущий деплоймент полу-прокси древний, какой то промежуточной версии — в каком состоянии новые фичи практически не ясно, без внятного прокси они недоступны.

Менеджер заказчика, жесточайший трудоголик, решает вывернуться хитрым финтом — взять и подменить кое что на девайсе QA, что бы исключить прокси. Однако, не тут то было — билд прибит гвоздями к прокси. Девочка QA идёт к себе в окоп чистить-смазывать ружъё. У нас 4 дня выходных и всё заканчивается на большой паузе.

Ситуация такова
1. Приоритетный компонент ожидает решения QA
2. QA ожидает пока пофиксится прокси в клауде
3. Прокси в клауде низкоприоритетный ибо "в релиз идем без прокси" и быстро передеплоить может только тот, кто его деплоил, то есть Никита Сергеевич
4. Никита Сергеевич занят более важным делом, чем возней с прокси, который в релиз не пойдет
5. Часть обязательных фич находится фактически в непонятном состоянии, потмоу что перед релизом выяснилось, что челы юзали не тот скрипт и на него забивали потому что "в релиз идем без прокси"

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

Вторая вещь — депенденсы всегда дают проблемы. Задача "отслеживать депенденсы", мягко говоря, нетривиальная. А если постоянно принимать поздравления, предвкушать шампанское с фейерверками, то и вовсе неподъёмная.

Итого
1. Депенденсы — резать
2. Инверсию приоритетов — устранять

P.S. Сталинград еще впереди и пока не ясно, на какой же мы стороне.

P.P.S. Год назад был тот же проект, такие же люди, тот же менеджер, тот же Никита Сергеевич, только баззворды другие и было на кого свалить вину. Проблемы тоже были очень похожими. Даже Сталинград был тот же, правда к весне оказалось, что мы были не с той стороны. Так что второй заход.