Петь, плясать — а дальше сами
Суть такова: есть заграничная контора, в которой я теперь работаю, есть отечественный клиент, которому контора продаёт своё супер-пупер-кастомизированное решение и саппорт к нему, и есть ещё одна отечественная фирма — ей клиент заказал дополнительную бизнес-логику, которую следовало интегрировать в наш софт через веб-сервисы.
В контору я пришёл сравнительно недавно, когда проект уже прошёл стадию тестов, более-менее стабильная версия была внедрена в сети, шла активная полировка и вылавливание блох. Мой ПМ страшно обрадовался программисту, свободно владеющему русским языком, и я, наивный человек, не придал этому особого значения. Ну, возникают недопонимания, с кем не бывает. Собственно, в основном именно по этому проекту я и должен был работать.
Где-то на стыке с внешней бизнес-логикой выловили целую пачку багов. Вооружился, значится, я утверждённой всевозможными аналитиками и менеджерами документацией… и вот тогда мне поплохело.
Договор на внешний модуль заключён между клиентом и фирмой. По-русски, без перевода для конторы. ТЗ написано фирмой и утверждено клиентом. Перевод не предусмотрен. Формулировки — размытей не бывает: модуль будет петь (что именно? на каком языке? как громко?), танцевать (что именно? как долго? ему музыка нужна будет?) и читать стихи (ну, вы поняли). Из всей полезной документации для интеграции — скупое описание контракта веб-сервиса.
Мой предшественник закинул этот «документ» в Гугл-транслейт, прочитал, пожал плечами и прикрутил модуль к софту самым простым способом: «получил — отправил», эксепшны в лог, вот и весь разговор.
Клиент, разумеется, завалил нас багами: тут не сходится, там не работает, это вот плохо, ваш софт говно, мы несём убытки. Стал я при поддержке ПМа теребить фирму — оказалось, нюансов в работе их модуля на пару добрых А4. «Вот это событие должно обрабатываться особым образом, вот это, хоть оно и есть, вообще нужно игнорировать, тут нужна дополнительная проверка, а вот тут — ни в коем случае не проверять, а то отвалится. Говорите, при вот этом пустом значении сервис падает через эксепшн? Ну, убедитесь, что такое не будет к нам отправляться, мы дополнительные проверки вводить не будем».
Клиент уже и не рад. Смотрит на ТЗ, а придраться-то и не к чему: технические аспекты интеграции там не оговорены, наши требования и пожелания к внешнему модулю — тоже такого нет. Фирма, ясное дело, не горит желанием вносить изменения в уже проданный продукт — нехотя исправляет только слишком явные косяки.
Но в самом глубоком и тёмном месте моя контора: решение-то работает с багами, чтобы от них наверняка избавиться, нужны изменения во внешнем модуле (либо основательная перестройка логики нашего софта, что по целому ряду причин не представляется возможным), а заставить «хитрых русских» делать то, чего они не хотят и, если совсем формально, не обязаны — заданьице то ещё.
Мораль: если вылезет ещё хоть один баг, который окажется очередной «фичей», совершенно не согласованной с интеграцией в наш софт, я пойду и набью нашему менеджеру морду. Чтобы он больше никогда, никогда не отдавал на откуп клиенту заказ и ТЗ на модуль, за работу которого нам потом придётся отвечать. Пусть даже если клиент и подрядчик могут свободно между собой договориться, а ты с ними — нет.