Как стать автором
Обновить

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

Время на прочтение 10 мин
Количество просмотров 65K
Это печальная и долгая история и о взаимоотношениях в 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 просто калькой ответов с форума (ответом "на отвали" на его просьбу о помощи);
  • Джанни напомнил мне, что я плохо знаю докер;
  • Он же обвинил меня в том, что я переименовала поле и сломала контракт с фронтэндом (на тот момент у нас не было интеграции с фронтэндом, так что я просто переименовала поле и проапдейтила документацию);
  • На меня посыпались саркастические шутки о моих формулировках на английском, а медиатор над ними мило поржал;
  • Джанни на меня кричал.

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

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

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

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

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

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

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

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

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


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

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

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


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

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

Кульминация


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

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

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

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

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

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

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

Жизнь после


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

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

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

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн