Как я систему безопасности для авиакомпании разрабатывал и сам оказался в опасности
А еще говорят что крепостное право России отменили в 19 веке. Не верьте, это не так. История о контрастах в условиях работы в иностранной и российской компаниях, экшена разработки на java/GWT, лжи коллеги и поведения Директора, наслаждающегося своим всемогуществом и вседозволеностью, не подкрепленное законодательно.
Началось эта история когда заканчивался проект на прошлой работе. Все было солидно: крупная международная компания, коммандировки в США и Англию, стабильность и легкая скука из-за большого количества рутины на проекте. Никаких авралов, отлично выстроенный процесс разработки, отдельная QA команда и автоматизированные регрешен тесты, иностранный менеджмент за пару лет работы ни разу не повысивший голос ни на кого в комманде, проджект менеджер спокойно переносивший функционал в следующие релизы, когда не успевали с разработкой и тестированием. Отличный коллектив профессионалов, каждому можно было доверять и знать что в трудный момент помогут. Атмосфера дружбы, когда приятно приходить на работу и общаться. Но всему хорошему и спокойному всегда приходит конец :( И дальше как полоски у зебры, в моей жизни появилась новая полоса…
Тогда еще в курилке с одним из коллег обсуждали его новую работу. Он агитировал перейти к нему под руководство, когда текущий проект завершится. Странно, тогда я доверял этому человеку, хотя чувствовалось высокомерие к окружающим. А как оказалось позже это было высокомерие новоиспеченного «менеджера», который за небольшие деньги покупал время аутсорсеров после работы и помогал в освоении бюджета крупной авиакомпании. Туда он тоже не просто так попал, а через другого нашего коллегу. Уезжая на работу в другую страну он познакомил его с Директором. Вы скажите что я неправильно пишу слово, которое надо писать с маленькой буквы, но тут только так к человеку и надо обращаться и только по имени отчеству) Специфика российского малого бизнеса. При том что с иностранцами или менеджерами крупных компаний гораздо проще общаться по факту, меньше сложностей в общении.
От коллеги я услышал про то как у них там все нанотехнологично) Назвал мой будущий средний оклад с учетом премий. Вот тут я и заинтересовался! По поводу объемов работ говорил, что если подойти с умом, то можно 4 дня в неделю работать, нагрузки не страшные. Стало еще интереснее. А дальше уже пошли в ход байки про Директора: широкой души человек, не жалеет денег и благодарит за работу сказочно, что мол он еще и инвестор в технологические стартапы. И в такие проекты инвестирует, что за границей такое в авиации только начинается. Скоро все будут покупать продукт, в который он инвестирует. Дальше я уже слушал, смахивая лапшу с ушей, но основные условия на потенциальной работе мне понравились по рассказу. Как оказалось позже этот инвестор свою основную работу обещанной зарплатой финансировать особо не хочет. Только вот загвоздка, проект стартует поздней осенью, а трудовой договор со мной подпишут сразу как подпишут договор с авиакомпанией. Перед самым Новым Годом 2013. Вот тут надо было насторожиться. А я верил коллеге! До этого момента нашего общения в курилке он не обманывал меня и я считал его своим другом.
Потом произошло знакомство с Директором. Офис в центре, рядом с Чистыми прудами в особняке-памятнике архитектуры. Старый паркет и потолки высотой 4м. Напоминало детство и здание музыкальной школы во дворце съездов, извините отвлекся. Итак я о знакомстве. Этот человек к себе сразу не расположил, так как было в его манере общаться едва уловимое что-то скользкое. Колорит кабинету придавали картинки в рамочках, с евреями в национальных одеждах и головных уборах. Они похоже обсуждали свой гешефт на этих картинках. Договорились мы в устном договоре, что будет заключен письменный договор со мной, как они подпишут свой проект с заказчиком. Директор спросил меня по поводу зарплаты, я назвал сумму. Он прибавил к ней 5000р, я конечно спорить не стал!) Но тут выясняется, что пару месяцев мне прийдется довольствоваться совсем небольшой зарплатой. Я высказался против, что я не согласен на понижение. Он аргументировал, что у него пару месяцев не будет денег, а потом он мне компенсирует разницу. Надо было сразу брать с него расписку о суммах и сроках. Позже выяснилось, что память на сумму моей зарплаты у него сработала в меньшую сторону на 15000р. В момент обсуждения оклада коллегу ветром сдуло из кабинета. Общение было с глазу на глаз с Директором. Я также понимал что если они не подпишут договор с заказчиком, я пойду искать новую работу. Но мне про это не говорили, догадывался. Решил рискнуть!
Итак прошло пару месяцев без работы, в ожидании нового проекта. Время зря не терял, оно уходило на спорт и хобби. Деньги с прошлой работы постепенно заканчивались…
Первые недели работы на новом месте прошли в изучении способов миграции крупного приложения по авиационной безопасности с не поддерживаемой больше технологии Oracle Forms на современные фреймворки разработки и UI виджеты веб приложений. В первые дни работали из дому. Были переговоры по видеоконференции с колоритными выходцами из Индии, живущими в Голландии. Он пытались всучить нам свой продукт, дали попробовать триальную версию и провели пару вебинаров. Копнув в их конвертер поглубже, выяснилось что он решает 30%-40% наших проблем по конвертации, а самое сложное остается делать вручную. И к сожалению, от вникания в специфику Oracle Forms он не спасает. В результате отправили им несколько багрепортов по поддержке русского языка и лэйаута компонент, кусок кода моего парсера PL/SQL триггеров формы и попрощались. Написал заявление о приеме на работу в начале ноября. Я активно участвовал в создании архитекуры системы и плане разработки этого большого проекта. На неделю заперся в квартире для реализации Proof of concept. В итоге я сделал парсер oracle forms xml, который на выходе выдавал объектную модель формы и DAO для работы с ней. За бортом остался сам UI таблиц и форм, но это уже было тривиально по сравнению с основной работой. Координаты виджетов есть в xml, поля есть в конверторе, тип уже знаем. Были реализованы даже LOV(list of values) форм чего не было в продукте, который мы хотели купить изначально.
И тут меня вырывают из затянувшихся ненужных переговоров(коллеге они очень нравились, ведь для иностранцев он представлялся директором по разработке и еще он считал, что продукт решит все сам) и POC: оказывается еще «вчера» надо было сделать первый модуль по еще не подписанному заказчиком проекту. Перешел работать в офис, но недолго. Там же Директор просил всегда закрывать офис на ключ, когда я внутри. Аргументируя, что если бабуля какая-нибудь дверью ошибется, ее потом до конца рабочего дня из офиса не выдворишь. А по факту в один прекрасный день пришли судебные приставы и опечатали дверь офиса из-за претензий новых собственников помещения. Хорошо, что я не был в этот момент внутри, а опять делал функционал днями и ночами из дому. Вот такие эти бабушки-приставы и макароны на ушах!
Да, модуль надо было сдать срочно. Никаких ТЗ, никаких документов. Общайся с заказчиком, узнавай что ему нужно, но нет времени формализовать в подписываемое ТЗ. Благо человек со стороны заказчика был грамотный и с ним было очень просто работать. Требования по модулю в массе своей были адекватными. Когда со стороны заказчика придумывали страшные фичи, то вполне можно было после получасовых переговоров убедить, что им на самом деле не нужно, чтобы это именно так выглядело. Можно сделать удобнее для пользователя, но по другому. Начались овертаймы по ночам и выходным из-за фич продукта и новой для меня версии технологии фронтэнда GWT с RequestFactory. В этом же модуле пришлось реализовывать и большую часть функционала другого модуля системы — отчетов. Настроить JasperServer open source edition, чтобы использовать базу Oracle для хранения репозитария отчетов было не просто. Но невозможного в мире open source нет! Не бывает только достаточно свободного времени и экспертизы для допиливания open source проекта до нужного состояния. Но тут мне повезло и на настройку JasperServer на Oracle ушло чуть больше одного дня.
Приближался Новый Год, а я все так же не был официально оформлен. Стало появляться ощущение, что обещанного 3 года ждут. За неделю до НГ модуль был сдан заказчику в эксплуатацию. Делал я его один и стоил он почти как моя полугодовая зарплата с учетом забывчивости Директора на суммы зарплат.
И тут неожиданно для себя я начал добровольно принудительно заниматься саппортом продакшен другой системы у заказчика. Хотя у меня не было знаний о ней, но меня радостно разбудили в один из дней с воплями «у нас все не работает». Самое забавное, что деньги за ее поддержку получал коллега, который загорал на море в эти дни. Правда в итоге он ее и починил из аэропорта, но осадочек остался. Отлично, я о такой работе всегда мечтал!!!
Новогодние праздники я добровольно работал, чтобы потом такое же количество дней отгулять и умчаться подальше из Москвы. За праздники сделал я демонстрационную часть управления «толстым клиентом» для редактирования отчетов iReport, используя только браузер с javascript, canvas и websocket без использования java/flash плагинов браузера. В то же время была написана небольшая часть системы аутентификации и авторизации, которая используется во всех модулях системы. Мне рассказывали сказки, что договор до сих пор не подписан и кормили завтраками и рассказами о светлом будущем в их фирме и премиях. По факту их договор с заказчиком был подписан перед Новым Годом. Когда в рабочие дни после праздников я взял заслуженный и отработанный отгул, меня и за Москвой просили установить удаленно на сервер новое приложение, чтобы показать заказчику. Вместе с доработками это отняло у меня часов 6 праздников.
Работа дома днями, ночами, выходными. Первая «нормальная» зарплата 31 января, которая по факту оказалась на 15тр меньше той, которую мы обговаривали с Директором. Тут же высказал свое возмущение, а мне в ответ «Я не мог тебе обещать такую сумму, ты меня не правильно понял». Да похоже Директор в возрасте меня за склеротика держит. Далеко не похожа моя работа по деньгам на обещанное и где-то на уровне работы не разгибаясь на плантации по комфорту. Я попросил выслать мой трудовой договор в ближайшие дни, прежде чем я его буду подписывать, чтобы я знал на что подписываюсь. Меня покормили завтраками. Коллега самоустранился из споров, мол его не было в кабинете, когда мы с Директором обсуждали зарплату.
Не знаю как вы, а я не люблю лжецов!!! Нет, совесть это понятие, которое каждый интерперетирует по-своему. У кого-то она отключается при больших деньгах, у кого-то при ощущении своей элитности. Когда люди готовы идти по чужим головам, чтобы набить свой карман… Я этого со школы не принимаю. Меня как и всех вокруг, пытались «кидать» на работах и халтурах. Я учился, иногда проигрывал в локальных ситуациях, но получал опыт. Видимо это самое важное, не попадаться в такую же или похожую западню позже. А если попал, то знать как из нее выбраться. Прошу прощения, опять понесло в философию.
На следующий день мы поехали на совещание к заказчику. В тот же договор, при том же бюджете проекта хотят добавить еще новый финансовый модуль и расширить функциональность других модулей. А работник-то на проекте — это я один. Заказчики этого не знают, Директор даже хотел взять пару посторонних человек для массовки и солидности нашей фирмы, но не вышло. Сидели на совещании из нашей конторы мы втроем: я, коллега и Директор. Мне повезло и большую часть нового функционала наш менеджмент отсек с разными аргументами. После совещания, я наедине высказал все, что мне не нравиться на этом проекте коллеге, который меня заманил на работу. Он начал опять пытаться меня зомбировать историями о светлом будущем и о том, как я буду счастлив и богат, когда у меня еще будет продакшен поддержка этой системы. Я это прервал и начал обсуждать настоящее. А оно оказалось достаточно серым и унылым: я бесправный и до сих пор не оформленный по КЗОТ, зарплата меньше, чем договаривались, работы столько, что выходные зачастую тоже проходят в ней и хотят добавить еще функционал. На что я получил ответ «ты крутишь мне яйца». Нет, а что же делают со мной? Дальше будет еще веселее) Когда я аргументировал, что доверие на устном договоре уже потеряно. Он изрек, что узнает. Мол можно работать без бумаг/подписей и чтобы все соответствовало обговоренному. Я сильно удивился такому раскладу!
Встреча с Директором наедине через несколько дней и обсуждение почему моя зарплата не соответствует обговоренной. При обсуждении таких вопросов он начинает бурчать себе под нос, так чтобы не разобрать в мешанине слов, что же он отвечает. Из того, что я смог понять и переспросить — это то, что таких денег он на ЗП постоянно просто не может найти, слишком сложно. И сунул мне разовую подачку деньгами, которая если поделить на все выплаченные ЗП в итоге в среднем все равно средняя зарплата была на 15тр ниже обговоренного уровня дохода. Директор любит требовать результат и обсуждать работу всегда четко, членораздельно и с предложением новых фишичек. Большую часть встречи обсуждали road map проекта. Когда я спросил, так какая же все-таки в реальности будет у меня премия, он ретировался. Мол надо обсудить с коллегой. Это была середина февраля.
В конце февраля я перенес на ногах простуду, работая не выходя из дому.
Достал из пыли 2010 свой старый фреймворк для кодогенерации CRUD приложений на GWT. Добавил в него поддержку новых виджетов и Request Factory. Старый код еще послужил мне и весь фронтэнд админки сгенерировал из объектной модели с аннотациями. Очень даже неплохо получилось для генерированного интерфейса. Тем более, что при добавлении полей, валидации и т.п. все это достаточно легко отражалось в GWT коде. Валидация JSR303+RequestFactory так легко и просто не хотела работать с RequestFactoryEditorDriver и виджетами, которые я использовал. Началась долгая битва с магическими технологиями. Победил. Рефакторинг кода, выделение общего кода аутентификации в отдельные maven модули. Разработка собственной реализации механизма Single Sign-On и успешная интеграция его в разработанный до НГ мной и работающий в опытно-промышленной эксплуатации финансовый модуль.
Модуль редактирования отчетов через браузер также был успешно интегрирован с внедренной зказчику SSO системой аутентификации и авторизации. Моя долгая и упорная работа как системного администратора виртуального debian сервера завершилось. Был создан пул аккаунтов пользователей в VM, разработан механизм отображения единых аккаунтов информационной системы на локальные аккаунты внутри виртуалки. Управление VNC сессиями внутри виртуальной машины из моего приложения с jetty сервером websocket.
Мои друзья мне часто стали говорить, что я выгляжу бледным и замученным. В конце марта я свалился с простудой и температурой +39.6. Три дня вподряд коллега и Директор мне звонили и спрашивали как же мое самочувствие, как я такой крепкий и занимающийся спортом, могу так часто болеть. Раздражение нарастало. На самом деле пришла пора сменить работу. С момента, когда я понял, что меня обманывают, был на нескольких интервью. Так вот, везде предлагали белое оформление с первого дня работы, суммы фикс окладом больше чем на текущем месте. Да, обещанные премии были гораздо меньше, но ведь фикс часть была больше и работы спокойнее. Всвязи со сложившейся ситуацией по отсутствию обещанного оформления после 5 месяцев работы, зарплаты совсем не того уровня что обсуждали и большой нагрузкой с неоплачиваемыми овертаймами и саппортом чужих приложений я посчитал вполне этичным подать в отставку в одностороннем порядке без 2х недель отработки. По-моему вполне честно, когда с одной стороны условия сотрудничества переигрываются в одностороннем порядке, нужно так же разорвать устные обязательства до сих пор не подкрепленные фирмой бумагами по ТК РФ(заметьте, по факту я ждал их 5 месяцев). Не с просто фирмой, а фирмой взявшей на себя реализацию проекта для службы безопасности крупной авиакомпании. Проект, принципы работы которого находится рядом с такими нашумевшими в прессе понятиями как «черные списки» пассажиров, депортации нарушителей и т.п. Фирмой не удосужившейся за 5 месяцев работы со мной подписать трудовой договор. Все, что здесь написано вполне законно и формально не представляет никакой тайны, так как и соглашение о неразглашении рабочей информации мне также не давали подписывать.
Больным и слабым, как чуть спала температура, подрихтовал я проект для редактирования отчетов в браузере. Приехал коллега, показал ему. Ему похоже понравилось, но он все равно в лучших традициях этой фирмы придумал еще несколько фич, которые надо добавить и чтобы я в то же время еще сделал пару-тройку отчетов для заказчика в этом приложении. Ограничив сроки 15ым апреля. Я его резко остановил и предложил прогуляться и поговорить.
Вывел его на улицу поговорить. Сказал, что увольняюсь с сегодняшнего дня. Четко, по пунктам объяснил причины. Отчитал его как нашкодившего ребенка за вранье. Он еще переспрашивал, где же он обманул. Я не сконфузившись, рассказал все в деталях, не оскорбляя и не переходя на личностную оценку его. Он попытался на меня навесить написание детальной документации по всему что я разработал и что я не смогу так просто взять и уйти) До Директора ему еще далеко, но тоже скользкий тип. Я предложил ему вариант более выигрышный — нанять нового разработчика, на которого пусть они загружают все что хотят. С меня довольно! Парнишка нервно курил и его немного подергивало. Поняв безуспешность попыток меня вернуть на проект, наконец, начал распрашивать про модули и их взаимодействие. Дошло наконец-таки до него правильное решение, как ему продолжить разработку. А то я слышал еще такие перлы раньше: «Давай ты завершишь двухгодичный проект за год. Я хочу поехать в следующем году на какое-нибудь теплое побережье и пожить там». Даешь еще!!! Перевыполним план пятилетки за два года!
Через 10-15 мин, как распрощались, он перезвонил мне и запел песню: «Посоветуй друга, который бы продолжил работу за тебя», на что был вполне корректно послан подальше. Разобраться в моем коде вполне реально даже без моей помощи. Модульный, структурированный, с maven скриптами сборки и код написанный по канонам DDD. Я не советую друзьям и знакомым то, чего бы сам себе не пожелал. Потом он изрек: «Ну ты же не умер! Я буду к тебе обращаться за помощью.», послал туда же. Потом более настойчиво: «Мы же взрослые люди, ты понимаешь, что просто так ты не уйдешь. Я здесь такие решения не принимаю, звони Директору и рассказывай то, что рассказал мне». Я буркнул, чтобы отстал, что-то типа «Да, конечно!» и повесил трубку.
В следующий обед звонил Директор, развел демагогию и разговор продлился больше получаса. Началось неожиданно с того «Тебя много месяцев назад, еще в ноябре оформил» и прочая чушь. Я спросил «Если бы я не уходил вы бы меня не оформляли!?» Он ответил «Да, скорее всего(Тут я уже катался со смеху). Нет, нет! Конечно же оформил бы…». Узнал от него новые сказки: по ТК РФ трудовые соглашения для основного места работы не обязаны оформляться трудовым договором, что неотгулянный отпуск при увольнении он не заплатит, так как он начинается только после года работы и, что оказывается, он мне отдал всю обещанную сумму. А то, что я 2 месяца получал гроши, так то был испытательный срок(вообще уменьшения ЗП на испытательный мы не обуждали, такая интерпритация понижения ЗП стала новым сюрпризом). Мои неоплачиваемые переработки по ночам и выходным и поездки к заказчику в субботу он считает нормой, потому что раз я работаю дома, а не в его опечатаном офисе, то должен так планировать свое время(видимо за счет меньшего количества сна), чтобы работать в выходные и ночью когда надо. Что со всеми работниками он всегда заключает устные договора, а письменные только при увольнении и вообще у него со всеми все хорошо всегда и честно. Узнал забавную историю что со мной он не подписывал договор, так как считал после позитивного устного соглашения между нами, он решил, что бумаги всегда сможет со мной подписать задним числом(вообще ерунда какая-то, самодеятельность, меня не спрашивали об этом!). Начал требовать от меня росписи задним числом на документах и ведомостях, которых я никогда не видел и в очередной раз обещал выслать «рыбу трудового договора». Что я так просто не уйду, у нас с ним сложились отношения и я ему должен по устному трудовому договору(Капитан очевидность: трудовые договоры бывают только в письменной форме и мы вообще не обсуждали момент выхода с проекта, кто ж знал, что проект будет таким ужасным). Была ахинея и про то, что «я платил тебе деньги», я ему объяснил где внедрены результаты его оплаты. Исходный код, скрипты сборки и DDL базы находятся в репозитарии кода. Подписывать документы задним числом и суммами в 4.5 раза меньше фактических я отказался наотрез и неизвестно какую ответственность теперь я несу по его трудовому договору, составленному после моего ухода. Когда я начал спрашивать почему он не платит налоги на зарплату, перешел на повышеные тона «Не учи меня как мне работать» и в промежутках речей звучало, что «Земля маленькая и круглая», что было видимо попыткой угрозы. Предложил ему самому подписать за меня бумаги левой рукой, раз уж он уже не может их не подписывать. Договорились, что я посоветуюсь с другом юристом и встретимся пообщаться через 3 дня.
Посовещался со знающим человеком и как я и думал все аргументы Директора незаконны и юридически не подкреплены ничем. По вступившему в силу с 1 февраля 2002 г. закона без письменного трудового договора в принципе невозможно наличие трудовых отношений между работником и работодателем (ст. 15, 61 ТК РФ). Предложил друг и ряд мер, которые я могу предпринять в отношении угрожающего работодателя.
При созвоне с Директором в вечер перед встречей я в очередной раз отказался от подписи документов задним числом. От него еще узнал, что оказывается можно за прошлое не подписывать и просто оформить заявление об увольнении текущим днем) Главное, чтобы соглашение о неразглашении подписал! Я отказался вообще иметь с ним какие-либо дела, отказался от встречи и ничего подписывать не буду. На что получил ответ, что я сам перевел ситуацию вместо хорошего и правильного решения в не лучшее для меня русло. Интересно это была угроза жизни и здоровью (ст. 119 УК РФ)? Или меня занесут в «черные списки» пассажиров(интересно какая статья)? А еще у них в наличии есть ксерокопии моих документов, которые я предоставил для оформления в первые дни и они возможно захотят нарушить правила обработки персональных данных. В нашем последнем разговоре он истерил на повышенных тонах, пришлось сбросить вызов, чтобы он не переволновался.
Вот как оказывается, закон не нужен и он совсем не тот что написан, а полон сладостных фантазий Директора!) Я кому-то теперь как будто что-то должен и обязан, так как у нас были незаконные трудовые отношения. Причем я был за законность с первого дня работы! У Директора в голове, судя по его поведению, картина, что крепостное право в России еще не отменили!!! Хотел мирно уйти на новую работу, но похоже эти люди не хотят мирно расходиться: успокоиться и признаться себе и заказчику, что сами облажались обманывая и не оформляя меня. В будущем найти в рабство нового человека и продолжить на том фундаменте, который я им построил.
Как считаете, что теперь нужно сделать с таким Директором и коллегой? Только, пожалуйста, принимаю толковые предложения в рамках закона ;-) Варианты закрыть в чулане на денек, лишить сладкого на месяц или права вождения своих джипов на год не устроят!
Автор: igor_suhorukov