Хабрахабр

Как моя жизнь превратилась в книгу Кафки

Это печальная и долгая история и о взаимоотношениях в IT-коллективе, и корпоративной культуре, и о совместной разработке. Надеюсь, кому-то она поможет не совершать наших ошибок и выстроить лучшие отношения с коллегами.

Вступление

В конце марта 2018 я начала работать, как мне казалось, в надежной и симпатичной шведской компании с большим IT-отделом в 200 человек. Я мечтала участвовать много в разработке новых приложений на Java, лучше узнать фреймворки семейства Spring, учиться новым технологиям (до этого случайно угодила в команию, где всё ещё пользовались SVN), участвовать в интересных дискуссиях, получать и оставлять адекватные комментарии в Code Review (а не заморачиваться только на пробелах и отступах) — одним словом, быть частью профессионального коммьюнити и иметь возможность развиваться как специалист. Небезызвестная шведская корпоративная культура и пестрый международный коллектив подбадривали меня и укрепляли в моих надеждах на наше с компанией плодотворное сотрудничество.

Я быстро погрузилась в разработку, приняла участие в выпуске MVP, узнала много нового и даже выучила Kotlin, что позволило мне внести посильный вклад и в другие проекты. В первые месяцы я действительно могла сказать, что нашла всё то, что искала.

Но моё счастье длилось недолго…

Рекрутинг

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

Он с порога попросил зарплату поболее, чем у наших сениоров, и заявил, что «на трубке» у него еще пять предложений о работе. В отличие от всех наших расслабленных девелоперов (которые устроили чуть ли не забастовку, когда их попросили не надевать бермуды летом на работу) Джанни выглядел именно что блестяще: в любые +35 в брюках, рубашке с длинным рукавом, черных начищенных ботинках. Испытательный срок у нас длится полгода, так что решили взять и попробовать. Видимо, под давлением всех этих неоспоримых аргументов Ким решил удовлетворить все запросы амбициозного молодого человека, несмотря на протесты Киры.

Интересно, что Джанни позиционировал себя как Java-Spring-сениора, хотя, как я узнала позже, в реальности несколько лет проработал с PHP, а перед приходим к нам — лишь с одним проектом на джаве.

Первые шаги

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

Новый релиз должен был состояться через 2 недели, и все решили, что подробным ознакомлением с нашим приложением ему лучше будет заняться позже. Первым же рабочим заданием Джанни стало налаживание нашей Кибаны. А для Кибаны срок в две недели подходил как раз (в компании для неё уже была налажена вся инфраструктура, надо было только прикрутить её к нашему приложению).

И, несмотря на то, что у нас шел период активного исправления багов разного колибра в одном большом приложении и двух микросервисах (можно было найти себе что-нибудь по душе), Джанни стал настраивать Графану. Через месяц — после релиза, продолжительных страданек о том, как сложно настраивать logback, и некоторых препирательств в девопсами (которые, естественно, не хотят работать) — Кибана была закончена.

Первые недели полторы ушли на то, чтобы под каждым выкинутым эксепшеном написать строчку со сбором метрики и запушить это в код ревью. Графана заняла в общей сложности два месяца. Только после того, как в ревью пришли другие разработчики, он начал её имплементировать. Практически сразу после публикации я оставила комментарий о том, что для сбора метрик неплохо подходит AOP-компонент, и вторые полторы недели Джанни, по его словам, читал про AOP вообще, про AOP в спринге в частности, чтобы решить, разумна ли моя идея.

Джанни подошел ко мне, заявив, что пытается погрузиться в AOP и что для того, чтобы окончательно понять, что бы я хотела там видеть, ему нужна либо сессия парного программирования, либо idea snippet (что бы это ни было). Я помню день, когда у меня действительно было много работы: наш сениор Карл уехал в отпуск, мне надо было онбордить новую разработчицу Сару, а количество тиккетов не давало забыть и о своих основных обязанностях.

Мне тогда казалось, что прикручивание аспектов к приложению на спринге состоит примерно из трёх компонентов:

  • добавление зависимости;
  • дизайн компонентов;
  • создание классов с нужными аннотациями.

Технических трудностей у продвинутого Джава-пользователя не должен был вызвать, по моим прикидкам, ни один из них, а вот времени организация классов могла занять довольно много. В общем, чтобы не отвлекаться от своих багов и не навязывать человеку свой вкус, я предпочла подготовить сниппет кода со всевозможными вариациями на тему того, какие возможности для экономии сил и времени открывает AOP.

То Java не компиллилась, то метрики не добавлялась. Имплементация после этого затянулась еще на две недели. Вопросов ни ко мне, ни к другим разработчикам не было, все страдания переносились в одиночку.

Их было довольно много, но я хорошо запомнила вот эти два. Параллельно с этим стали происходить какие-то другие странные события.

  1. Мы сидим на семинаре по Докеру с одним из наших девопсов. Я специально пришла послушать именно этого человека, он показывает презентации, отвечает на все вопросы, мы обсуждаем синтаксис и порядок строк докер-файла, в кои-то веки я что-то понимаю. Джанни перебивает нашего девопса и, не обращая внимание на других участников семинара, начинает с интонацией "я разговариваю с пятилетним ребенком" мне "объяснять", что докер -- это как такой компьютер в себе, который позволяет запустить любой код в любых условиях.
  2. Джанни (громко, на всю комнату): "Алина, хочешь, я пришлю тебе приглашение на онлайн-конференцию от Амазона?"
    Я: "Конечно, давай посмотрю."
    Джанни (еще громче, так, чтобы все слышали): "Но тогда тебе надо будет выучить Д-О-К-Е-Р, а то ты ничего не поймешь."

Дальше — больше

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

Кира быстро организовала нам сессию с медиатором, на которой мы должны были откровенно поговорить о наших чувствах 🙂 Таких сессий у нас в итоге было три, вот некоторые из тех вещей, которые там происходили: В октябре сам Джанни заявил о том, что мы с Карлом устроили ему «дедовщину» и не желаем принимать в свой тесный кружок (интересно, что пришедшая после него Сара уже давно переняла на себя большое количество разнообразных задач, а у Джанни в тот момент была в разгаре любовь с настройкой AOP в спринге).

  • Джанни назвал мой code snippet по AOP просто калькой ответов с форума (ответом "на отвали" на его просьбу о помощи);
  • Джанни напомнил мне, что я плохо знаю докер;
  • Он же обвинил меня в том, что я переименовала поле и сломала контракт с фронтэндом (на тот момент у нас не было интеграции с фронтэндом, так что я просто переименовала поле и проапдейтила документацию);
  • На меня посыпались саркатические шутки о моих формулировках на английском, а медиатор над ними мило поржал;
  • Джанни на меня кричал.

В итоге он выглядел как расслабленный пацанчик, который ратует за чистоту нашего кода, а я — как неврастеничный монстр.

Одновременно у нас началась разработка нового большого приложения с новым PO, который, как и Ким, был покорен серьезным настроем Джанни и огромным количеством задаваемых им детальнейших вопросов. В конце окрября я начала приносить домой новости о Джанни каждый день: то опять про AOP пожалуется, то на девопсов нагонит, то «пошутит» про польских женщин, что они все легкого поведения.

Вместе с Джанни они с энтузиазмом стали планировать новое приложение. Примерно в то время у нас в отделе появился новый сотрудник — архитектор по имени Хуан, парень неглупый, но не переносящий своей неправоты. Вот некоторые темы, на обсуждение которых мы убили несколько часов:

  • Обилие интерфейсов в спринге (наш аргумент о том, что это рекомендованная спрингом практика, не канал);
  • Валидаторы в контроллере: делать свои или добавить их с помощью аннотаций (они в итоге отказались от аннотаций);
  • Делить проект на менее зависимые друг от друга gradle-модули или оставить монолитом;
  • Можно ли в вычислительном модуле использовать static методы, или кругом надо насадить Spring-сервисы.

С моей точки зрения, большинство этих позиций является делом вкуса, но Хуан и Джанни продолжали и продолжали спорить. Каждое их новое предложение начиналось примерно одинаково: «Ваша старая реализация неправильная, нам нужно что-то другое».

В этот момент проблемами в нашей коллективе, как мы думали, наконец-то заитересовался Ким и провел со мной, Карлом и Джанни беседы. К концу ноября первые имплементации были готовы: Джанни и Сара вместе разрабатывали POC модели базы данных, а мы с Карлом начали делать вычислительный модуль. Он ответил: «ОК». Я честно ему рассказала, что не чувствую в себе сил продолжать работу в таком агрессивном режиме и дальше, что хотела бы сменить команду. И ничего не произошло.

Я уговаривала её пойти в HR, к начальнику Кима, к основателю компании — лишь бы донести эти истории до других сотрудников, но она лишь утверждала, что мне и ей никто не поверит. Я пыталась опять поднять этот вопрос с нашей Кирой, и она мне сказала, что ни медиатор, ни Ким мне особенно не верят, считая меня слишком чувствительной. И нет, мне бы не подняли бы зарплату до его уровня. И да, она знала, что я работаю лучше. В этот момент я впервые вспомнила книги Франца Кафки.

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

Решение созревает

В декабре нам пришел запрос на разработку новой фичи в приложении старом. Задание и сроки были довольно амбициозными, но для четырех бекэндеров это должно было быть вполне по силам.

Кира, неоднократно подчеркивавшая всю важность и приоритетность этого таска, конешно же, спрашивала его, что происходит. Только на деле девелоперов было трое: Джанни к этому не прикоснулся вообще. Джанни полностью погрузился в новое приложение, начав не только (без запроса) ревьюировать весь код, написанный мной и Сарой, но и рассказывать фронтэндерам, как им надо писать Angular. Один раз он он соврал, что я забрала все тиккеты себе (их было примерно 20!!!), другой раз — что Карл ему запретил.

Но это не мешало ему меня отвлекать.
Джанни (громко): "Алина, ты не могла бы ко мне подойти?"
я: "Я сейчас занята, но если быстро смогу решить твою проблему, то давай."
Джанни: "Да, тут есть место, которое мне непонятно"
Я подхожу и вижу, что на экране у него класс, написанный мной, в котором названия методов заменены на "ааа" и "bbb". Лирическое отступление:
У нас было много работы. Я думала, тебе что-то непонятно."
Джанни: "Нет-нет, я хочу от тебя услышать, что делает этот метод. До меня начинает что-то доходить: "Это какой-то тест? и тут у тебя неправильно, и тут некрасиво, и тут неразумно?"
я: "Пришли мне код ревью, мне так легче понять."
Джанни: "Но тогда ты никогда не научишься."
я (громко): "Я не просила тебя меня учить."
Джанни и другие коллеги бросают на меня взгляд, как на истеричку.
Я вижу, что и ты не можешь сама понять, что он делает, потому что он плохо написан."
я: "Я вообще-то могу понять, что тут написано, но если ты хочешь переделать, то просто пришли мне код ревью, я посмотрю."
Джанни: "Ну ты видишь?

Я не знаю, стоит ли говорить о том, что мы с Сарой справились с ним за полчаса, но я точно знаю, что стоит упомянуть, что потом на наш код обрушился шквал Джанниной критики. Под конец Джанни взял себе одно подзадание по новой фиче и просидел с ним полтора дня, ничего не родив.

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

Кульминация

На январь Хуан и Джанни запланировали маленькую революцию: они подготовили презентации для Кима о проблемах нашего отдела. Хуан (который, видимо, метил в тимлиды) рассказывал об организаторских провалах Киры, а Джанни — показывал «фейлы» нашего кода за последние два месяца, заботливо собранные по всем нашим приложухам. Состоялось закрытое совещание (на которое не позвали ни меня, ни Сару, ни Карла), где куча разрабов из других отделов и Ким слушали их доклады и решали, кто прав, а кто — виноват. Другие разрабы оказались людьми адекватными, и от всего этого особого удовольствия не испытали. Но Ким, кажется, не особенно хотел их слушать. И тут неожиданно выяснилось, что помимо нашего конфликта с Джанни параллельно существует конфликт между Кирой и Кимом.

Ким тщательно избегал разговора, пытаясь собрать с нас разрозненные отличающиеся показания. Январь был месяцев многочисленных переговоров: наша цель (на этой месте к нам уже присоединился весь фронтэнд) была прямо заявить Киму, что Кира — хороший тимлид и что мы не хотим больше работать с Джанни. Я не могла понять, почему он просто не может найти время, чтобы встретиться со всеми нами и увидеть, что нас много.

Да, без разрешения закоммитил много непонятных вещей в её бранч и сильно разозлился, когда она их ревертнула. В один день Джанни наорал на Сару. Мы пошли в HR. Я стала ему объяснять, что мы так не работаем, и он наорал еще и на меня. Кафка преувеличивал, говорите? Милый молодой человек Том поговорил со всеми участниками конфликтной ситуации и решил, что мы с Сарой всё придумали.

Комфортно работать в офисе я могла только с утра, пока Джанни еще не было. К февралю моё и не только моё психологическое состояние было уже далеко от нормального. Как только он приходил, я начинала подспудно ожидать или новой «конструктивной» критики всё моей работы, или нового повода поспорить и выставить меня дурой, или нового крика.

Он специально прилетел из Стокгольма и несколько раз по очереди выслушал Киру и Кима. Каким-то образом история все-таки дошла до главного по всем разработчикам — шведа Макса. И… несколько раз ответил Кире, что надо всё-таки уметь уживаться с разными людьми.

нашу. К счастью, Макс догадался также выслушать точку зрения разработчиков, т.е. Если честно, я несильно надеялась, что смогу выступить уверенно, тем более что в предыдущие разы Джанни выглядел намного убедительнее меня (и всех остальных). Лично я даже не знала, с какого момента начать свой рассказ, тем более что девелоперские навыки нашего «любимого» коллеги мы решили не затрагивать — мы хотели упирать только на поведенческий аспект.

Если честно, я до сих пор не могу нормально порадоваться этому: так долго я ждала. Но удивительным образом — именно после разговора с самим Джанни — Макс принял решение о его увольнении. Но теперь я могу нормально спать и разговаривать со своими близкими и о других вещах.

Жизнь после

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

Один из них даже начал по мелочи портить наши приложения: поменял некоторые пароли, удалил сбилдованные микросервисы из репозитория. Некоторые из этих людей обвинили нашу группку в моббинге (травле сотрудника), некоторые — перестали разговаривать (здороваться, прощаться, ходить с нами и с теми, кто ходит с нами, на обед), некоторые до сих пор считают его гениальнейшим разрабом, у которого есть небольшие проблемы с коммуникацией. Мы это переживём, наверное, но доверия теперь не вернешь.

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть