От PHP к Java и серьезному энтерпрайзу

Читать в полной версии →

Меня зовут Ильяс, и я расскажу, как полюбил Java через Spring и отучился в Хекслете ради самореализации.

Профиль Ильяса в Хекслете можно посмотреть здесь, код выполненных проектов — на GitHub

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

А вот с конкретным языком ситуация была более сложной. Даже окончив вуз, я не мог определиться со стэком. К тому же я жил в небольшом городе, а поскольку удаленка тогда не была распространена, мне пришлось идти работать туда, куда позвали.

1С не подошел

В вузе к нам приходили рекрутеры из локальных компаний и предлогали подработку на 1С. Там я задержался примерно на год — особого энтузиазма работа не вызвала.

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

А они смотрели на меня как на тупицу, когда я не понимал нюансов их сферы.

Сисадминство и вход в программирование

Меня позвали работать системным администратором в офис, но пообещали доступ к внутреннему IT-продукту.

Там было две системы: одна из них — приложение для ломбардов на C#, вторая — на PHP.

На первой требовалось освежить фронтенд и я взялся за дело. Мы купили шаблон и почти год его переделывали.

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

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

Закончив разработку фронтенда, я перешел на вторую систему на PHP. У компании была проблема с исполнителями. Поставка задач в продакшн была долгая, из-за чего систему не могли масштабировать.

Мне предложили изменить это, а я воспользовался шансом пощупать бэкенд — раз уж фронт не понравился.

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

Коммерческого опыта работы с PHP у меня практически не было: пришлось во всем разбираться с нуля. Спойлер: фанатом этого языка я тоже не стал.

В PHP не понравился синтаксис и отталкивала динамическая типизация. Порог входа в него относительно низкий, поэтому качество кода было сомнительным. Опять ощущалась нестабильность.

Но на этой должности я задержался почти на шесть лет. Годы, проведенные за административными задачами и управлением командой, пролетели как один миг. А потом я оглянулся и стало грустно.

Мечты о серьезной разработке

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

Это при том, что изначально мне всегда хотелось заниматься технической частью.

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

К тому же я просел по хардскиллам, потому что ворох административки не позволял мне ими заниматься. Это одна из проблем, характерных для проектов на PHP: бизнес ориентирован на прибыль и требует быстрых решений, поэтому качество кода проседает.

У меня не получалось одновременно расти в техническом плане и параллельно управлять командой.

В этот момент, я решил, что стоит поменять стэк. Мне хотелось посмотреть, как пишут код люди в серьезных командах и как у них устроены процессы.

Наткнувшись на Spring и почитав о нем, я понял, что это мое. Многие из решений, которые мы применяли на PHP, на самом деле пришли туда из Java, просто с большой задержкой.

Знакомство с Хекслетом

О школе я знал давно. Параллельно с бэком на PHP я занимался фронтендом этого проекта. А для этого изучал JavaScript в Хекслете по подписке., Всей командой мы выбирали курсы для повышения квалификации — так и нашли школу.

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

Обучение

Учиться пришлось параллельно с работой. Каждый день я пару часов уделял обучению, все выходные также уходили на прохождение курса.

Первое время было сложно себя заставить, но со временем я втянулся и стал заниматься регулярно.

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

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

В учебе меня мотивировало желание состояться как технический специалист и я упорно шел к своей цели.

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

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

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

Но мне предложили полгода поработать на позиции аналитика, а затем у них же пройти собеседование на Java-разработчика.

Я подумал, что это неплохой вариант. У меня будет время вникнуть в процессы крупной компании, узнать про инфраструктуру, понять, как все устроено. С этим преимуществом будет явно легче устроиться, чем с нуля.

Но реальность обманула ожидания.

Когда я пришел туда, то обнаружил, что проекты в компании находились в плачевном состоянии. Удивительно, но процессы были выстроены хуже, чем на моем предыдущем месте работы, где коллектив насчитывал всего 25 человек.

У нас по крайней мере был отлаженный Git Flow. Здесь же документация в Confluence велась максимально странно. Там были статьи, в которых каждый сотрудник выделял цветом, что именно поменял. А когда изменения попадали в продакшн, нужно было зайти и убрать цвет. Не нужно и говорить, что это изначально было обречено, и все вики оставалось цветным

Второе, что меня оттолкнуло, это качество кода. Даже я, имевший минимальный опыт в Java, видел в нем проблемы.

Команда тоже досталась технически слабая и нескоординированная: на одном из созвонов я объяснял программисту, как работает JPA.

Также у меня был коллега, который просто забивал на таски в работе: с утра не отвечал в мессенджерах и не приходил на дейли, потому что мог.

Помог нетворкинг

Мне потребовалось два месяца, чтобы понять:отсюда надо уходить. Но вместе с тем я также понимал, что вакансию разработчика на Java придется искать очень долго. Логичнее попробовать снова пойти системным аналитиком, но в нормальную команду.

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

Его проводили в четыре этапа:

  1. Знакомство с HR.

  2. Теоретическое собеседование с рандомным системным аналитиком из компании, который задавал стандартные вопросы. Например, чем отличается HTTP от SOAP, что такое REST, какими могут быть методы и т.д.

  3. Практическое собеседование. Там была песочница, в которой я писал запросы. Давали несколько заданий вида — определить сущности для предполагаемой системы, расшарить экран и нарисовать ERD диаграмму.

  4. Знакомство с командами, которым был нужен аналитик. Меня представляли нескольким командам. По результатам интервью мы решали, подходил ли я им, а они — мне. Такая система быстрых свиданий.

Я получил свой мэтч и вышел на новое место.

Впечатления от работы

Сумма в оффере была ниже, чем я зарабатывал до переобучения. Мне стали платить примерно 65% от предыдущего дохода, но к этому я был готов.

На новом месте мне все очень нравится, хотя периодически кажется, что я не дотягиваю до уровня команды. Но это мотивирует стремиться вверх.

Я доволен технической культурой и отлаженными процессами, нормальным ведением документации, возможностью всегда получить от коллег однозначный и своевременный ответ.

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

И это не говоря про классический соцпакет. У нас есть ДМС, компенсация залов и даже обедов для удаленных сотрудников.

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

Советы студентам

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

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

С поиском работы — банально, но уделите время своему резюме. Я сам искал сотрудников и видел много людей, которые потратили на него явно не больше трех минут. Надо ли говорить, что они автоматически отправлялись в корзину?

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