Первая работа джуном (Java) в IT-компании в 32 года и первое увольнение...

В предыдущем посте (Как я в 32 года бросил нелюбимую работу и «вошел в айти») я достаточно подробно рассказал о том как принял решение в 32 года кардинально поменять сферу деятельности: из инженера-строителя в программисты. Учил язык Java самостоятельно по видеокурсам в записи. Под присмотром более опытного товарища, который взялся менторить меня, я написал 6 пет-проектов, после чего нашел первую работу.

Я сделал 700 откликов на hh, прошел 4 собеседования и получил только один оффер в компанию, которая находилась в другом городе и которая искала человека в офис. Конечно, мне хотелось найти удаленку с зарплатой 300кк в наносекунду, но я трезво оценивал ситуацию на рынке джунов и понимал, что передо мной стоит выбор: продолжать учиться и пилить пет-проекты или временно переехать в другой город (180 км или 3 часа езды на машине) для получения коммерческого опыта, который позволит позднее найти работу на более комфортных для меня условиях.

Я был рад получить первый оффер, но перспектива переезда меня не так сильно смущала, как сам проект, на котором предстояло работать. Меня сразу предупредили, что это поддержка легаси проекта, написанного на Java EE с использованием библиотеки Hibernate. Spring'а там нет и других проектов на Java в этой компании тоже нет. Новые проекты пишутся на C#, поэтому перспективы уйти с легаси на что-то "модно-молодежное" попросту отсутствовали.

Ещё один немаловажный момент — размер ЗП, указанный в оффере. Не стану называть конкретных цифр, но скажу так: такую зарплату в номинальных цифрах я получал в 2012 году сразу после окончания института. И если тогда для вчерашнего студента это было норм, то спустя 10 лет с учетом инфляции и с учетом того, что теперь у меня есть семья — это смешная сумма. Ещё нужно понимать, что половина этой зарплаты будет уходить на аренду квартиры.

Моей финансовой подушки хватило бы ещё на полгода жизни, поэтому я всерьез рассматривал этот оффер, как билет в дивный IT-мир. Полгода поработать в минус, но набраться опыта — не самая плохая сделка, считал я.

Мой IT-ментор сказал, что невозможно предугадать какой из выборов быстрее приблизит меня к получению оффера в компанию на актуальном технологическом стеке и с нормальной ЗП:

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

Ради собственного успокоения я посмотрел несколько роликов на YouTube на тему: "А так ли страшен legacy, как все говорят?" и нашел даже несколько позитивных видео, автор которых говорил, что начинать карьеру с легаси кода даже лучше, ведь ты будешь знать как и что работает на более низком уровне и зачем вообще придумали эти новомодные фреймворки и для решения каких проблем.

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

Первая работа

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

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

Мне выделили рабочее место, на телефон пришло сообщение от HR с паролем от учетки и различными доступами (местная база знаний, Gitlab). Рядом со мной сидел ещё один джун, который проходил в этой компании стажировку и которого буквально месяц назад приняли в штат. В нашем кабинете помимо Java-разработчиков сидели C#-разработчики, системный аналитик, дизайнер и системный администратор. Достаточно дружный коллектив, регулярно собирающийся по пятницам поиграть в настолки или попить пива в баре.

В первые дни мне не давали никаких рабочих задач, всё что я делал — читал базу знаний и смотрел на код проекта, пытаясь что-то понять. Куча незнакомых аннотаций, огромные классы по 5000-8000 тысяч строк кода, нереально большие HQL-запросы к БД по 20-30 строк кода и отсутствие документации. Я также видел закомментированные участки кода, над которым не было никаких пояснений и было непонятно для чего это сделано. Просматривая код, я столкнулся с абсолютной противоположностью "чистого кода", о котором я начал читать в одноименной книге.

В ожидании первой задачи, я не терял времени зря и гуглил все незнакомые аннотации, а также начал читать книгу "Java Persistence API и Hibernate", которую мне скинул PM. Я также охренел от масштаба базы данных, в которой были сотни (если не тысячи) таблиц, а также огромное количество связей между ними. После рафинированных (как сказал мой ментор) пет-проектов, я оказался в огромном хаосе непонятных мне вещей. Однако джун рядом успокоил меня, сказав что тоже вначале ничего не понимал, но постепенно втянулся и начал разбираться.

Рабочие задачи

Спустя некоторое время я узнал, что в нашей команде нет опытных разработчиков, вроде тимлида или сеньора, максимальный уровень — это PreMiddle. Всего 4 человека на проекте: 2 джуна, 2 премиддла. Основная задача команды Java-разработчиков — техническая поддержка проекта. Процесс такой: пользователи продукта сталкиваются с какой-то проблемой в программе, оформляют заявку с описанием и отправляют нам в виде мини-ТЗ. Задача разработчиков, соответственно, найти и исправить эту ошибку. Задачи между командой распределяет проект-менеджер. Новый функционал этого продукта на Java не разрабатывался. Разработчики на C#, сидящие в нашем кабинете как раз разрабатывали новую версию сервиса, который должен будет в будущем заменить сервис, написанный на Java.

Через несколько дней после трудоустройства я получил первую задачу. Необходимо было совершить несколько INSERT'ов в базу данных и исправить некоторые данные в таблицах. Всё это необходимо было сделать сначала на тестовом контуре, после чего отправить на проверку и после согласования сделать тоже самое на продакшн базе. С первой задачей я справился.

Следующие таски были примерно такого же характера: поиск дефектов в БД и их исправление посредством запросов к БД. Задачи найти ошибку в коде и бизнес-логике не стояло. Джун, сидящий рядом, сказал, что за все время работы он практически не трогал код приложения, а исправлял конкретные данные внутри БД.

Уже в первые дни работы я понял, что в этой компании невозможен профессиональный рост, как Java-разработчика и что задерживаться здесь надолго нельзя. Низкая зарплата, легаси код, скучные SQL-задачи и отсутствие каких-либо перспектив сподвигли меня продолжить откликаться на вакансии. Так как я уже переехал в другой город, то решил поискать вакансии в этом городе, ведь если будет требоваться человек в офис, а не на удаленку, то у меня гораздо больше шансов получить оффер за счет меньшей конкуренции.

Поиск второй работы

Я открыл hh и снова начал искать вакансии, где фигурирует слово Java. Но теперь я решил начать с вакансий в текущем городе, ведь здесь есть множество местных компаний, которые не желают брать людей на удаленку, а ищут именно в офис. Я подкорректировал свое сопроводительное письмо, указав в самом начале, что я местный, меня не нужно релоцировать и я готов приступить к работе в ближайшее время. Указывать свой трехнедельный опыт на текущей работе я не стал, так как такая строчка в резюме скорее оттолкнет потенциального работодателя, а не привлечет. В итоге буквально через пару дней получаю сразу 2 сообщения в WhatsApp'е от рекрутеров двух разных компаний, которым показалось интересным мое резюме и они предлагают пройти собеседование, причем сразу совмещенное, то есть скрининг + техническое. Пару вечеров пришлось снова посидеть за теорией, чтобы освежить в памяти то, что подзабылось (уровни транзакций, принципы ACID, разновидности индексов в БД и другие популярные вопросы, которые любят задавать на собеседованиях).

Собеседование №1

Первая компания была аутсорсинговой и набирала Java-разработчиков уровня Middle под новый для них проект, который они взяли на поддержку. Отзывы в интернете и на хабре об этой компании были только положительные. Писали, что это идеальное место для джунов, где прекрасный коллектив и отличная возможность для роста. В переписке с HR выяснил, что возьмут несколько человек и, возможно, рассмотрят разработчиков уровня Junior+, но в приоритете миддлы. На собесе абсолютно ничего не спросили про мой опыт и про зарплатные ожидания. Собеседующий не был джавистом и задал мне только 1 вопрос по Java, все остальные вопросы были по базам данных (уровни изолированности транзакций, индексы), брокерам сообщений, докеру (зачем нужен файл .dockerignore), про принципы SOLID, преимущества и недостатки микросервисной архитектуры, больше не вспомню.

Я достаточно хорошо ответил на большинство вопросов, но, конечно, до уровня твердого миддла не дотягивал. Через пару дней HR сообщила, что я им очень понравился, мой уровень оценивают, как Junior+ и готовы сделать предложение, но позже. На мой вопрос стоит ли мне рассматривать их компанию, если я получу оффер от другой компании, ответили так: "Если вам делают оффер в другой компании — соглашайтесь, в данный момент мы не можем назвать ни конкретных сроков когда сможем вас взять, ни условий". Такой вот вежливый отказ.

Собеседование №2

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

"А вы не могли бы более подробно рассказать о своих проектах, что использовали, с какими сложностями столкнулись? Я, конечно, могу это всё спрашивать наводящими вопросами, но будет лучше, если вы подробно расскажете сами". Так как у меня не придуманный опыт работы над пет-проектами, то мне было достаточно легко во всех подробностях рассказать какие библиотеки я использовал, с какими сложностями столкнулся и какой функционал был у готовых приложений. Пару теоретических вопросов всё же было: что такое SOLID и чем отличается RestController от обычного Controller'а. Мне показалось, что я достаточно хорошо на все ответил. Но это ещё не все.

Дальше началось что-то вроде поведенческого интервью (behavioral interview). Спрашивали о моих достижениях в прошлой сфере, почему ушел из найма, почему закрыл ИП, какие цели в IT, какие дальнейшие планы по развитию и, наконец, какие зарплатные ожидания.

Я был достаточно уверенным, так как я уже был при работе и это было уже мое четвертое по счету техническое собеседование. Так сказать, у меня уже была "несгораемая сумма" в виде текущей работы, поэтому я не выглядел, как джун, готовый работать за еду, лишь бы его взяли. Такого волнения, как во время первого собеседования, не было. Да и на эту компанию у меня изначально не было больших планов, однако общение с руководителем мне понравилось даже больше, чем в предыдущей аутсорсинговой компании.

Затем настала очередь моих вопросов и тут я уже знал что спросить: что за продукт у вас, сколько разработчиков в команде, какой стек, есть ли легаси, какие будут у меня задачи. В общем я прощупывал компанию на все те моменты, которые меня очень смущали на текущем месте работы. И в целом мне всё понравилось: большая команда, писать код с нуля на Spring Boot, есть опытные разработчики, которые будут менторить при необходимости.

Оффер!

Через пару дней я получаю оффер от этой компании, в котором указана ЗП, превышающая мою зарплату на текущем месте. Чувство радости и облегчения. Не могу подобрать слов, чтобы описать всю гамму своих чувств. Мне было не очень интересно копаться в ужасном коде легаси проекта, пытаясь понять бизнес логику конкретно этого приложения. И этот оффер был похож на глоток свежего воздуха, благодаря которому я вновь расправил грудь и с надеждой посмотрел в будущее. Я написал заявление на увольнение и ушел из компании на следующий день, завершив все текущие задачи. К коллективу я не успел привыкнуть, поэтому уход не был трагедией ни для меня, ни для компании.

Если интересно, то могу рассказать что ждало меня на новом месте, правда я пока на испытательном сроке и стараюсь его пройти )

P.S. Мелкие заметки делаю в телеге (https://t.me/lovecodebro), на Пикабу публикую редко и только лонгриды.