Привет, Хабр! Меня зовут Гриша Скобелев, я бэкенд-разработчик, у меня есть гитара, кошка и скейтборд. Я так сильно люблю Spring Framework, что назвал кошку в честь него — Веснуша. Возглавляю программный комитет Podlodka Java Crew, где мы делаем классные конференции. Еще я организовал книжный клуб для бэкенд-разработчиков { между скобок }. Хочу поделиться своим опытом развития бэкендера — от собеседования до наработки разных навыков для роста. Тут будет много ссылок, практических советов и инструкций, которые я наработал за время своей карьеры, общения с другими бэкендерами и проведения конференций и консультаций.
Подготовка к собеседованию: тренировки и полезные ссылки
Тренировка
Лучшая подготовка — это тренировка, то есть ненастоящее собеседование. Некоторые для этого ходят на филлерные интервью — выбирают условно не очень интересные компании и просто приходят пособеседоваться.
Лично я считаю такую практику не очень хорошей. Это часто оборачивается пустой тратой времени, не дает нужной обратной связи и не помогает потренироваться по-настоящему.
В этом плане гораздо лучше устроить намеренное тренировочное собеседование. Попросите кого-то из друзей или воспользуйтесь сервисом Pramp, где можно найти человека, который проведет с вами mock-собеседование. Можно договориться потренировать секцию алгоритмов, базовый Computer Science, cloud-технологии и даже софт-скилы. Самое ценное в mock-собеседованиях состоит в том, что тебе обязательно дадут обратную связь: что подтянуть, в чем потренироваться.
Кроме Pramp можно воспользоваться сервисами менторов, например, GetMentor или Solvery. Там тоже можно договориться с ментором на mock-собеседование.
Еще один интересный сайт — interview.io (заходить с VPN). На нем публикуют публичные mock-собеседования — можно просто посмотреть и изучить для себя, выписать вопросы, которые не знаешь, чтобы их потренировать. Мы то же самое делаем в рамках подкаста { между скобок } на Ютуб-канале. Там можно выбрать что-то под нужный язык или технологию.
Задачи и навыки
Алгоритмические задачки встречаются часто, особенно в крупных компаниях. Готовиться к ним проще всего на сайте LeetCode. Еще есть разные каналы на Ютубе про алгоритмические задачи — можно поискать и поизучать разборы самых популярных. К этому стоит отнестись просто как к подготовке к экзамену — изучить, потренироваться, выучить, сдать.
Еще очень полезный инструмент, особенно для начинающих специалистов, — ресурс roadmap.sh. На нем участники сообщества собрали навыки, которые нужны разным специалистам, в том числе бэкендерам. Туда можно зайти и посмотреть, что следует доучить и какие еще темы посмотреть.
Общая подготовка
Здесь помогает просто загуглить вопросы к интервью, почитать их для себя и понять, что ты знаешь, а чего не знаешь. Момент вроде бы простой и очевидный, но многие его упускают.
Еще есть огромный документ FAANG interview, в котором разработчики собрали заметки по подготовке к собеседованиям в крупные компании: Facebook, Amazon и другие. Он будет полезен и для интервью в компаниях поменьше, так как многие сейчас стараются перенимать практики FAANG.
Как сделать, чтобы твое резюме увидели, прочитали и оценили по достоинству
Существует почти 100%-ный способ сделать так, чтобы ваше резюме увидели — отправить его через человека, который уже работает в нужной компании. Для этого нужно развивать нетворкинг — общаться в профессиональных чатах, посещать конференции, участвовать в каких-то общих проектах. Тогда можно будет просто находить людей из интересующих вас компаний и «засылать» резюме с ними. Доверия к вам будет намного больше, да и человек может получить бонус за ваше трудоустройство.
Иногда такое работает даже с почти незнакомыми людьми. Нашел кого-то в соцсетях, списался с ним, поболтал — и вот он уже скидывает твое резюме своим HR-ам. А это почти гарантирует приглашение хотя бы на первый этап интервью.
Теперь вернемся к самому резюме. Я считаю, что его стоит писать на английском — независимо от того, собеседуешься ты за рубеж или внутри страны. HR-ы на российском рынке знают английский, да и держать в актуальном состоянии одно резюме будет гораздо проще.
Дальше рассмотрим важное про само резюме.
Красные флаги
По моему мнению, есть вещи, с которыми в резюме стоит быть поаккуратнее:
Ссылки на GitHub. Туда обязательно заглянут посмотреть твой код — и легко могут найти какой-нибудь предыдущий проект, который был откровенно «не очень». Так что GitHub лучше или привести в порядок, или вообще не показывать. Плюс тебе легко могут прямо на собеседовании дать твой же код десятилетней давности и спросить, а что это ты там написал. Это, разумеется, спрашивают не с целью поглумиться над человеком, а чтобы посмотреть, как выросли со временем его скилы и что бы он изменил в коде.
Ссылки на соцсети. Показать хороший канал в Телеграме — идея интересная. А вот какой-нибудь Твиттер, в котором вы постите все подряд, — нет. Есть риск, что какой-нибудь пост чем-нибудь HR-у не понравится, и вас никуда не позовут.
Облако тегов
Если не брать специфику языка, то существуют ключевые навыки, актуальные сейчас почти для всех бэкендеров. Их упоминание в резюме существенно повышает шанс, что на него обратят внимание.
Вот эти навыки:
Cloud-технологии. Это особенно важно для зарубежных вакансий, где владение «облаками» — практически базовое требование. У нас в России ситуация сложнее, но знание облачных технологий все равно пригодится.
Docker, и лучше с Kubernetes.
Service Mesh, архитектурные паттерны, System Design.
Полезные «мелочи»
Фотография — сразу привлекает внимание.
Четкое описание ценностей сделанного. Например, у меня был проект, в котором я уменьшил нагрузку на кластер данных. И я всегда четко об этом говорю в резюме — это отличная ценность для компании, простая и прозрачная.
Краткость. Чем резюме короче — тем лучше.
Ну и важно понимать, что нет ничего, что гарантирует вам 100%-ный оффер. Хоть напиши водяным знаком: «Кто меня не позовет на собеседование — тот дурак» — все равно не сработает. Волшебной таблетки не существует, можно лишь приближаться к идеалу.
Как вести себя уже на интервью
Обычно неважно, джун ты или сеньор, тебя спрашивают какие-то базовые аспекты. Здесь интервьюерам важно, как ты отвечаешь. От новичка ждут поверхностных знаний, а от опытного — глубокого погружения. Также, скорее всего, будут спрашивать про:
Computer Science: структуры данных, внутреннее устройство процессов в программировании и т. п.
Продуктовые вещи: метрики, решение конфликтов и т. п. Это уже больше относится к собеседованиям для сеньоров и техлидов.
Истории из практики: их лучше заготовить заранее.
Процессы в команде и CI/CD: чаще всего спрашивают у сеньоров, к этому лучше подготовиться заранее.
Решения конкретных вопросов: например, у Java-программистов часто просят написать метод, который переведет деньги с одного счета на другой. И набрасывают разных сложных штук вроде асинхронности.
Если вам будут задавать вопросы о ваших конкретных решениях, на них очень здорово отвечать по методу STAR — «Situation, Task, Action и Result». Суть в том, что нужно описать:
Situation — что именно произошло, в какой ситуации ты оказался.
Task — какую конкретную задачу в этой ситуации тебе нужно было решить.
Action — какие действия ты предпринял.
Result — какой именно результат получил, желательно с цифрами.
Разберем на примере:
Situation: У нас в команде было тестирование, но с данными все было непросто.
Task: Чтобы облегчить задачу, понадобилось написать генератор данных.
Action: Я написал генератор на таком-то языке, с помощью таких-то технологий.
Result: Теперь задачи по интеграционному тестированию стоят не три сторипоинта, а один.
Данные по зарплатам от getmatch
Вообще уровень зарплаты нужно, конечно, выбирать по своему комфорту. И желательно делать это максимально прозрачно, без вот этой пикировки «а сколько вы дадите?», «а сколько вы хотите?», которую так любят HR-ы. Но примерно ориентироваться по рынку, конечно, стоит.
У ребят в getmatch куча вакансий, и они собирают статистику зарплат, которые там предлагают.
По Java в России медианные цифры вот такие:
Джун — 100,000 ₽.
Мидл — 200,000 ₽.
Сеньор — 300,000 ₽.
Тимлид — 350,000 ₽.
По Node.js — такие:
Джун — 85,000 ₽.
Мидл — 190,000 ₽.
Сеньор — 326,000 ₽.
Тимлид — 450,000 ₽.
В целом на эти цифры можно ориентироваться, сопоставляя свои ожидания с реальностью.
Полезные ссылки
Комментарии (15)
Leetc0deMonkey
29.06.2023 10:23+7Я одного не могу понять, почему кандитат должен готовиться к собеседованию? В моём миропредставлении, если у человека за плечами пачка проектов, приносящих прибыли бизнесу, то это работодатель должен чесать репу и разрабатывать методики как распознать такого умеющего работать кадра. Такого какой он есть.
GSobaka
29.06.2023 10:23+1Проекты разные, на вакансии что вас интересует могут использоваться технологии с которыми вы не знакомы. Вроде это банально, что если ты теоретически изучишь это технологии, то и шанс пройти собеседование выше.
Рынок вакансий постоянно меняется, то о чем вы написали это работает только с узкоспециализированными специалистами.
Leetc0deMonkey
29.06.2023 10:23Проекты разные, на вакансии что вас интересует могут использоваться технологии с которыми вы не знакомы.
В таком случае моё резюме банально не пройдёт дальше HR отдела.
cupraer
29.06.2023 10:23Готовиться к собеседованию — все равно, что готовиться к маршруту, которым тебя повезет таксист из аэропорта.
Новое освоить (на таком уровне, чтобы тебя не прогнали с позором) — один хрен не удастся, а про подзабытое старое можно спокойно сказать: «это подзабытое старое, так что слепой печати сейчас не ждите». Если интервьюера такой подход не устроил — поздравляю, вы только что сэкономили кучу времени и нервов.
Maccimo
29.06.2023 10:23Готовиться к собеседованию — все равно, что готовиться к маршруту, которым тебя повезет таксист из аэропорта.
Аналогия подобна котёнку. Таксисты теперь ездят по навигатору, а последний просто-таки обожает дать крюк в несколько километров, потому что крюк, он по крупным дорогам, а проехать по кратчайшему пути переулками навигатору страшно.
а про подзабытое старое можно спокойно сказать: «это подзабытое старое, так что слепой печати сейчас не ждите».
Ну такое.
«Я знаю и умею всё что вам нужно, честно-честно, просто забыл!»
ermadmi78
29.06.2023 10:23+1Плюс тебе легко могут прямо на собеседовании дать твой же код десятилетней давности и спросить, а что это ты там написал.
Не стоит забывать, что собеседование это обоюдоострый процесс. Не только вы оцениваете кандидата, но и кандидат вас. Такой вопрос заставит сомневаться в адекватности интервьюера любого нормального человека. И, если есть выбор (а у нормального специалиста он как правило есть), кандидат после такого собеседования вежливо откажется от дальнейшего общения с вами. Ну а продолжат с вами общаться люди, у которых выбора нет. По сути отрицательный отбор получится.
GSobaka
29.06.2023 10:23Ревью собственного кода это нормальная практика. Где тут токсичность? Тут даже профита больше для кандидата, тк он знает этот код и скорее всего помнит контекст при котором он его писал.
ermadmi78
29.06.2023 10:23Ревью актуального кода - да, абсолютно нормальная практика. Но ревью кода 10летней давности - категорически ненормально.
Во первых этот код вспомнить нереально.
Во вторых индустрия не стоит на месте - технологии и архитектурные паттерны развиваются с сумашедшей скоростью. То, что было актуально 10 лет назад в современном мире выглядит нелепо.
В третьих непонятна цель такого ревью. Заявленная цель посмотреть, как человек развился за эти 10 лет, мягко говоря нелепа - так вы проревьюите не то, как человек развился, а то как индустрия разработки развилась за эти 10 лет.
Ну и в четвертых, с вероятностью 80% сами интервьюеры не будут обладать 10летним опытом, соответственно у них не будет технологического контекста 10летней давности, и они в принципе не смогут дать адекватную оценку такому коду.
Поэтому да - "ревью" неактуального кода это обыкновенное проявление токсичности. Не более того.
Leetc0deMonkey
29.06.2023 10:23Ну и в четвертых, с вероятностью 80% сами интервьюеры не будут обладать 10летним опытом, соответственно у них не будет технологического контекста 10летней давности, и они в принципе не смогут дать адекватную оценку такому коду.
Стопудов! Собеседовать поди ещё будет какой-нибудь "20-летний синьйор".
Leetc0deMonkey
29.06.2023 10:23+1Ну а продолжат с вами общаться люди, у которых выбора нет. По сути отрицательный отбор получится.
Так и есть. А потом работодатель скулит "ищем 30 лет и 3 года, и никого найти не можем". Дальше - хуже. Скулёж о якобы дефиците кадров подхватывают инфоцыгане и продавцы курсов. И вот теперь отрасль действительно разбавляется посредственностями, и найти толкового специалиста среди горы шлака становится просто нереальной задачей.
lastmac
29.06.2023 10:23+4Привет, Гриша! Меня зовут Саша, я был бэкенд-разработчиком когда-то, у меня была гитара, фортепьяно, есть попугай Артём, жена и дочька. Я катался на сноуборде и скейте пока не пробил себе голову. Я так сильно люблю читать подобные статьи, что просто разлогинеться хочется тут.
FeathErr
Зарплаты по Java Junior довольно завышены. Сейчас нахожусь в поиске работы в этом направлении, ни разу не видел чисел больше 80к. Откуда взялась медиана в 100к - непонятно.
AlexIsaev Автор
Здравствуйте! Это реальные (и анонимные) ЗП, которые собирали внутри сервиса. Подробнее разбирали здесь: https://habr.com/ru/company/getmatch/blog/722246/ , но цифры тут могли уже слегка устареть.
NikolayRussia
Возможно, стартовым джунам да, дают менее 100к. Поработав со временем (1-2-3 года), ребятам часто индексируют з/п, без повышения ранга, то есть джуны с опытом вполне заслуженно получают более 100к и, тем самым, влияют на статистику зарплат в целом.