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

Точка отсчёта

Начну с момента, когда я только начал поиски. У меня за спиной была прочитанная книга Пола Бэрри «Изучаем программирование на Python», почти пройденный курс «Python-разработчик» в Яндекс Практикуме, а ещё немного опыта сверху — тогда мы вместе с одногруппником писали сайт для Joystick161, магазина видеоигр в Ростове. Я дружу с его директором и сам предложил ему помощь. Для меня это было полезной практикой, а у него появился новый сайт вместо сделанного в конструкторе.

Сайт, который мы сделали для моего друга
Сайт, который мы сделали для моего друга

В остальном у меня был тот же набор знаний, что и у большинства не самых сильных студентов. Я работал в центре диагностики и мониторинга устройств инфраструктуры РЖД, там была бешеная загруженность, далеко не в рамках «с 8 до 17 часов». На освоение максимума информации просто не было времени. Поэтому мой стек был скромным: я знал базу Python (как окажется скоро, не очень хорошо), благодаря проекту подтянул Django и Django REST Framework. Было общее понимание CI/CD, Docker.

Попроще стало на этапе работы над дипломным проектом. Впереди оставались в основном проверки — я понял, что успеваю, и решил искать работу.

Первый оффер и увольнение через два дня

Я сделал резюме и стал откликаться на hh.ru и «Хабр Карьере». Дёргал всех знакомых из IT — вдруг где-то нужны разработчики или хотя бы стажёры. Мониторил тематические каналы в Telegram и сообщества IT-компаний в Ростове, чтобы не пропускать митапы. На них знакомился с IT-специалистами, рассказывал о себе, спрашивал о вакансиях, просился на собеседования. На тот момент всё было безуспешно, но в будущем такая тактика мне помогла.

На hh.ru пришлись где-то 70% моих усилий. Ещё 10% — на «Хабр Карьеру». А оставшиеся 20% в равной степени распределились между источниками поменьше. Всего я насчитал 297 отправленных откликов. Ответов было немного, но что меня удивило: первое предложение я получил всего через две недели.

Небольшой местной компании требовался Python-разработчик на джуниорскую позицию. Стек совпадал с моим. Мне прислали тестовое задание.

Тестовое задание
Тестовое задание

Я отправил HR готовый API и получил ответ, что нужна ещё и вёрстка. Я нарисовал шаблоны в Bootstrap и настроил импорт данных через Django. В итоге тимлид согласился, что сам ошибся в формулировке тестового. Доработать проект было легко, но сейчас я понимаю, что уже в тот момент мне стоило насторожиться.

Так я получил оффер. Первый день показался ничего — меня добавили в Jira, рассказали про задачи. Я решал простенькие кейсы: прикрутить к сайту авторизацию, написать пару микросервисов на DRF. Поначалу мне нравилось. Закралась мысль: неужели я так просто нашёл свою первую работу? Но потом наступил второй день.

Я изучил сайт компании и понял, что у него не работают редиректы и кнопка «Назад», а если покликать по ссылкам в хедере, то всё вообще ломается. Профессиональная команда так писать не может. Тут же прилетает задача: прикрутить платёжную систему к интернет-магазину. Я этого никогда не делал. Начал читать, понял, что подходов к решению много и что задача-то совсем не джуновская. Обратился за помощью к тимлиду: попросил рассказать, как они делали это раньше, описал возможные варианты и предложил одну из реализаций. Тимлид в помощи отказал — сказал, что при найме компания рассчитывала, что я буду справляться сам.

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

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

Попал на интервью — и в ловушку новичка

Так я вернулся к поиску. В следующий раз помогло сарафанное радио. У друга — владельца магазина видеоигр, которому мы делали сайт, много покупателей-айтишников. И вот у кого-то из них он спросил, не найдётся ли для меня вакансия. Показал моё резюме. Так меня пригласили на собеседование в WIS Software, очень крутую ростовскую компанию. 

И это был мой первый и самый яркий факап. Я серьёзно готовился, повторял Django и DRF, думал, как решать продуктовые задачи. А меня гоняли только по базе Python, и оказалось, что у меня в ней куча пробелов.

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

Элементарный код, который мне не удалось написать без IDE
Элементарный код, который мне не удалось написать без IDE

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

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

Как мне почти удалось устроиться DevOps-инженером

Я повторил основы и стал откликаться заново. Я искал вакансии везде, где только мог, подключал нетворкинг, ходил на несколько митапов каждый месяц. И на одном из них меня осенило. Зачем общаться только с разработчиками? Ведь на мероприятия ходят и HR-специалисты, и они, в отличие от программистов, всегда знают об открытых вакансиях в компании.

Гостем на том митапе был представитель HR-отдела из ростовской компании Zuzex. Я набрался смелости, познакомился и спросил о вакансиях. Оказалось, что компания ищет DevOps-инженера, причём готова обучать джуниора. Я заинтересовался.

Тестовое задание
Тестовое задание

В тестовом задании понадобился стек, которого у меня не было. Настройка phpMyAdmin и триггеров через Elasticsearch… Это я видел впервые. Начал гуглить, писать знакомым, спрашивать ChatGPT. И всё решил.

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

Выгорание и новое резюме

После хорошей, но неудачной попытки я вернулся к поискам и столкнулся с тем, что hh.ru как не работал, так и не работает. Нетворкинг тоже — знакомые уже перебрали все вакансии, и мне ничего не подошло, отличался либо стек, либо требуемый уровень опыта. Время поисков на тот момент приблизилось к трём месяцам, а количество откликов уже перевалило за 200. Кроме этого, я ушёл из РЖД и занимался только подработками. Всё это очень давило. Поиск работы был изнурительным. Я начал выгорать.

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

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

Сейчас описание проектов в моём резюме выглядит так
Сейчас описание проектов в моём резюме выглядит так

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

А ещё я расширил выборку и искал вакансии не только Python-разработчиков, но и DevOps-инженеров, инженеров по тестированию. Перестал искать предложения только в Ростове и начал рассматривать удалённую работу.

Наконец, удача — как я устроился на работу

После очередного отклика меня позвали на собеседование. Это была вакансия инженера по тестированию в компании «ТТК Цифровые решения». На первой встрече проджект-менеджер спрашивал меня, как я учился, что освоил, как нахожу общий язык с коллегами.

В тестовом задании нужно было протестировать программу. Что-то вроде калькулятора, который высчитывает площади фигур и отрисовывает их. Нужно было найти 28 ошибок в интерфейсе. Я быстро сориентировался, нашёл 20-часовой курс на Stepik, прошёл его за один день и решил тестовое. Ну как решил... Нашёл 27 ошибок из 28, упустив самую очевидную — что фигура отрисовывалась не по центру. Тем не менее меня пригласили на техническое собеседование.

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

Последний этап оказался для меня самым простым. На нём тимлид задавал вопросы по теории. После этого меня погоняли по софтскилам и снова пообещали связаться. Через два часа я получил оффер.

Я работаю в «Цифровых решениях» уже почти полгода. Сейчас я занимаю должность ведущего специалиста в области тестирования. Наша компания разрабатывает CRM-системы — у нас много госконтрактов, так как российские организации переходят на наше ПО с зарубежного. Например, мы работаем с РЖД, «Газпромом». И для каждой компании разрабатываем уникальные решения.

На позиции ведущего я также менторю тестировщиков. Один, например, уверенно пишет автотесты спустя два месяца. Помогает мой опыт обучения, ну и то, что написание автотестов — это всё-таки гораздо проще, чем программирование.

Спустя шесть лет работы в РЖД я поймал себя на мысли, что наконец-то занимаюсь тем, что мне нравится. И это мой самый крутой результат

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

Как продолжать искать работу, если вы новичок и вот-вот опустите руки

Какие-то из моих рекомендаций прикладные, и ими можно руководствоваться в процессе трудоустройства. Другие — фундаментальные, и они говорят о том, насколько просто вам будет как искать работу, так и работать в IT.

Учите базу. Работодателю вряд ли будет интересно, насколько глубоко вы знаете фреймворки и погружены в продуктовую разработку. А вот базовую теорию языка спросят наверняка, потому что это фундамент. Без прочного фундамента всё развалится. Как у меня на том злосчастном интервью в WIS Software.

Вот как я повторял теорию:

  • Перепрошёл уроки Практикума, в частности вводную часть и теорию объектно-ориентированного программирования.

  • Прошёл курс Сергея Балакирева «Добрый, добрый Python» на Stepik — он бесплатный, и в нём есть все основы.

  • Перечитал «Изучаем Python» Марка Лутца.

Ищите работу везде, где можете. Используйте нетворкинг, пишите всем знакомым из IT и ищите вакансии на всех площадках. 

Поделюсь своим набором подписок в Telegram и VK, где я искал вакансии, новости о митапах и просто интересные посты:

Ещё один лайфхак: если видите что-то интересное на hh.ru, не ограничивайтесь одним откликом.

Как делал я: находил вакансию от крупной компании, например «Иви». Откликался, как и другие 250 человек. А потом дублировал отклик на странице «Вакансии» на сайте (на них часто пишут почту HR-отдела) или писал HR-специалистам напрямую, если они оставляли контакты на «Хабр Карьере». У меня такое срабатывало — видимо, такой путь проходили далеко не все из 250 кандидатов.

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

Многие начинающие бэкенд-разработчики думают, что для любой наглядной работы нужна вёрстка, но это не проблема. Например, для Joystick161 мы нашли готовый вариант с вёрсткой, JavaScript, анимациями за 1,3 доллара на стоке. Переписали под себя, и получился интересный проект для портфолио.

Готовьтесь жертвовать свободным временем, даже если обучение позади. Нам, студентам, говорили, что будет непросто. Что придётся постоянно сталкиваться с новыми знаниями и не раз захочется всё бросить. Что нам не будет хватать времени на себя, хобби, личную жизнь. И если не гореть этим делом, а думать только о деньгах, то мы быстро устанем — и ничего не получится. Я согласен.

Если идёте в IT, то всегда будьте готовы отказаться от свободного времени, чтобы сходить на очередной митап, посетить вебинар или посмотреть видео на YouTube. Без подобных жертв я, во всяком случае, себя в этой работе не вижу.

Не бойтесь нового. Начну с кейса. Когда я пришёл в «Цифровые решения», все автотесты там писали на Katalon, а я в первый месяц занимался только ручным тестированием. И мне очень хотелось писать тесты на Python! Тогда я нашёл фреймворк Selenium. Изучал его в свободное время — приезжал перед началом рабочего дня или оставался после. Писал кейсы на связке Python–pytest–Selenium и проверил новое решение на одной из CRM-систем, ещё не покрытой тестами. Повторюсь, всё это было для меня в новинку.

Тимлид решение одобрил — такие тесты работали быстрее и были кросс-платформенными, запускались в разных браузерах. Так я убедил команду, что нам пора перейти на Python. И благодаря этому «словил» карьерный рост.

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

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

Комментарии (10)


  1. sinefag
    21.12.2023 08:37

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


    1. Shkitskiy Автор
      21.12.2023 08:37

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


  1. Chelyuk
    21.12.2023 08:37

    Спрашивать-то, спрашивают. Только толку от этого. Вот сколько раз потом на практике понадобилось писать код маркером на доске?
    Сколько проектов по тестированию требуют глубоких знаний базовых методов языка?
    Куча проектов по поддержке, где вся работа сводится исключительно к написанию новых тестов и выпишиваеию старых. Кстати, я бы сказал они именно идеальная среда для начала карьеры. Есть куча примеров и можно по разбираться на текущей базе кода как всё работает. Никаких гарантий, что это будет наилучший вариант. Но для базы, понимания архитектуры фреймворка и базовых слоёв подойдёт.
    В тестировании нэгораздо больше пользы от понимания тест фреймворков, их возможностей и ограничений.
    Некоторые фреймворки вообще ломают логику базового языка.
    Например, работа с Selenium в Python, всё равно превращает код в JAVA образный.
    Поэтому лучше знать тестовые фреймворки и как их интегрировать. Почему Cypress подойдёт для тестирования онлайн магазинов, но не сложных бизнес приложений. Чем Playwright лучше Selenium. Чем так хорош pyTest и как его осилить после jUnit и TestNG. Как тесты параллелизировать и с какой CI.
    Почему Azure в минимальной подписки не имеет смысла. И т.д.


    1. Shkitskiy Автор
      21.12.2023 08:37

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


      1. Chelyuk
        21.12.2023 08:37

        Это не совсем рынок так устроен. Это так устроен круг людей проводящих технические собеседования. Которые иногда просто спрашивают то что нравится им самим, или просто находят вопросы в интернете. А кандидаты также находят ответы на эти вопросы. Всё таки нужно больше стараться отталкиваться от конкретной позиции, конкретного состава команды и продукта. Но как говорил один боксёр:"Все, но не каждый" могут так делать.
        В реальности фреймворк на проекте поднимается 1 раз, ну может 2. Это не то знание, которое будешь применять каждый день. Для этого достаточно открыть документацию, прочитать, осознать и применить. Вот этот навык куда важнее, знания наизусть информации, которая и так всегда под рукой. Вот работу с git, ревью, составление тестовых сценариев, работа с тестовыми данными, просмотр результатов, триаж и починка CI - это действительно то что применяется каждый день.
        Кроме того, надо понимать домен в котором работаешь. У меня на одном собеседовании волосы дыбом вставали. Когда спрашивали по Python перечни базовых методов, магисеские мотоды классов, декораторы и т.д. Когда я спросил зачем, то получил ответ который меня ввёл в ступор. Потому что обычно идут путём привлечения девеелоперов для написания моков и стабов и возможно базовых методов взаимодействия тест фреймворка с продуктом. Но тут решили что тестировщики должны помочь девелоперам переписать продукт под новую версию Python.
        Но интервьювер вообще не принял в рассчёт одну такую маленькую деталь. Что продукт был медицинским. А тут по стандарту не могут быть никаких смешений взаимодействия разработчиков и тестировщиков. В идеале - это вообще должны быть люди из разных организаций с максимальным уровнем независимости на принятие решений.
        Ну найдут они подходящего кандидата по соображениям тех интервьювера. Но при сдаче проекта внезапно осознают, что всё сделанное нужно переделать. Потому как FDA такую халтурку в жизни не пропустит, когда код писал и полностью тестировал один и тот же человек.
        Так что сейчас есть наглядная проблема больших контор которые подводят унификацию требований для кандидатов сами не осознают область на которую эту унификацию стоит и можно расспространять.
        Всё таки в идеале, интервью должны проводить люди имеющие прямое отношение к конкретному проекту. А сейчас получаем в большинстве случаев - когда интервьювер, в лучшем случае, получил строк 20 описания проекта. Пришёл проводить интервью, потому что за эту активность можно получить некий бонус. И задаёт вопросы, которые весьма интересны с точки зрения погружения в глубины языка. Но ответы на которые можно будет благополучно забыть ровно до следующего интервью.


  1. Leon_aka_KoHb
    21.12.2023 08:37

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


  1. Shkitskiy Автор
    21.12.2023 08:37

    Да я и не скрываю, что помогли составить грамотно, но разве это плохо для конечного читателя?)


  1. Begemot1k
    21.12.2023 08:37

    Слушай, а где ты отклик получил, перед тем как попасть в "Цифровые решения"? Вообще интересная ситуация на рынке вырисовывается, компания пишет на katalon, и как найти работу python разработчику если она не на python :D А другие чисто галерки


    1. Begemot1k
      21.12.2023 08:37

      Я имею ввиду на каком сервисе ты оставил отклик туда?