Стажировка в Авито глазами стажёра
С июня 2020 года я работаю бэкенд-стажёром в Авито. Когда я искал стажировку, мне хотелось поподробнее узнать, что на самом деле происходит внутри каждой компании и какой у неё подход к стажёрам. Но обычно информация ограничивалась либо краткими текстами на лендингах, либо историями успехов.
Но ведь самое интересное — это процесс! Поэтому я решил рассказать о своей стажировке в Авито: как она проходит, какие ожидания от стажёра, какие задачи нужно решать. В статье я дам несколько основанных на моём опыте советов для тех, кто впервые собирается пойти стажироваться.
Поиск стажировки и собеседования
Основная причина, по которой я искал стажировку, — это сильный толчок в развитии. Сложно стать хорошим разработчиком без полноценного прод опыта. Лично я вкладываю в понятие «хороший разработчик» не только уверенные технические навыки — они должны быть в любом случае, даже у стажёра, —, но и умение коммуницировать, договариваться и продавать свои идеи. Таким вещам без опыта научиться сложно: их нужно развивать на практике.
Из этого вытекают мои основные пожелания к стажировке:
Возможность участвовать в процессах команды, а не быть в стороне.
Руководство наставника, который может помочь, подсказать и направить в нужную сторону.
Наличие code review. Знать инструмент — это одно, а грамотно пользоваться им — другое. Хочется, чтобы старшие коллеги ревьювили код.
Упор на развитие стажёра, а не просто на полную эксплуатацию.
Я прошёл несколько собеседований в разных компаниях. Наиболее прозрачным процесс показался в Авито и, к счастью, мы сошлись во взглядах. Так я попал на стажировку.
Сами этапы собеседования — достаточно стандартные. Сначала нужно сделать тестовое задание. Если оно выполнено хорошо, дальше следует техническое собеседование, при успешном прохождении которого можно попасть на последний этап — собеседование с тимлидом и HR. У меня техническое собеседование было без больших сюрпризов: немного лирики про структуры данных и алгоритмы, непосредственно сам Python, базы данных — и теория, и практика с простенькими SQL-запросами. Ещё поговорили про конкурентность и вообще то, как работает ОС. В принципе, ничего суперсложного, однако всё равно стоит хорошенько подготовиться: часто бывают вопросы со «звездочкой» при успешном ответе на основной вопрос.
Будьте общительнее на собеседовании. Без этого, скорее всего, искра не появится.
Я вышел на работу в команду Market Intelligence. Мы занимаемся построением ETL (extract, transform, load) процессов, то есть добычей данных. Для этого мы развиваем свою платформу, чтобы удобно можно было управлять кроулерами, которые добывают данные, развиваем свой фреймворк и пишем микросервисы.
Первые дни стажировки
Первый день стажировки ушёл на оформление, настройку окружения, знакомство с наставником. Также надо было запросить доступы на нужные серверы и ресурсы. По отдельности это просто и требует не так много времени, однако на всё вместе легко занимает день.
На следующий день я получил свою первую задачку от наставника. Ей, конечно, дело не ограничилось. В Авито новичкам на почту приходит приветственное письмо с рассказом про компанию и то, что ждёт впереди, а также ссылками на несколько курсов по краткому введению в процессы и платформу. Так что первое время я пытался как можно больше погрузиться в контекст. Благо у нас есть своя вики-система в Confluence, в которой, вероятно, можно найти всё, что интересует.
С началом стажировки мой мир буквально перевернулся. Слёту непросто адаптироваться ко всем процессам команды и разобраться в платформе, которую предстоит разрабатывать. Свою роль сыграло и то, что компания полностью перешла на удалёнку, и живого общения общения сильно не хватало. Чисто психологически коллегу тяжелее выцепить в онлайн-формате, чем в офисе, когда он сидит в метре от тебя. Больше всего вопросов у меня было по скраму. В Авито довольно навороченные процессы, и я, без какого-либо опыта, поначалу был в растерянности. А зачем так много встреч? А что говорить на них?
К счастью, есть наставник. Он здорово помогал мне адаптироваться: рассказывал, зачем нужна каждая из встреч и как всё устроено внутри команды. Он же всегда подталкивал к дополнительным активностям, например, предложил подготовить доклад для внутреннего Python community. Ещё раз в неделю у стажёра и наставника проходят встречи один на один. Они нужны для получения обратной связи, как для тебя, так и для менеджера. На них можно скорректировать какие-то процессы, план развития и просто поговорить о том, как продвигается стажировка, получив ценные советы. Плюс у нас регулярно проходят встречи стажеров, что тоже помогает в адаптации.
Да и в целом, вся команда отлично поддерживала меня, подсказывала, если что-то непонятно, ревьювила код без пощады, за что им большое спасибо. Моё знакомство с командой происходило постепенно. Я увидел всех сразу в первый день, но этого было мало. У нас не распространена практика «code ownership», поэтому нормально позвонить коллеге и спросить, как что работает, что сильно снижает бас фактор. Каждая выполненная мной задачка знакомила меня не только с платформой и кодом, но и с самой командой.
Что меня удивило, так это доверие к стажёру. Ты делаешь точно такие же задачи, что и все. По началу наставник даёт небольшие таски, которые помогают лучше разобраться с тем, как всё устроено. Например, поправить баг, увеличить покрытие логами, добавить адаптацию и загрузку нового поля. Что-то совсем простое, но при этом хорошо погружающее во внутренности архитектуры.
Постепенно задачи становятся всё более и более сложными. У меня первой из больших задач был рефакторинг старого кода на новую архитектуру. В итоге за пару месяцев стажёр становится полноценной частью команды и берёт задачи из общего бэклога, без каких-либо ограничений, что очень радует.
Не бойтесь задавать вопросы. В первые дни нормально не понимать, что происходит, особенно если до этого не было никогда продакшн опыта. Поговорив, можно сильно сократить время, которое будет потрачено на задачу.
График стажёров — 20 часов в неделю, что даёт возможность совмещать работу с учёбой. Я стараюсь подбирать своё расписание так, чтобы не пропускать встречи команды: стендапы, грумминги и ретроспективы. Они важны, чтобы оставаться в контексте происходящего и синхронизироваться с коллегами. Обычно встречи проходят во второй половине дня, поэтому тут довольно просто — утром послушал пары, а к обеду уже работаешь.
Обучение и развитие
Работа над развитием стажёра может сильно варьироваться в зависимости от наставника, но, вероятно, суть будет одна. Я считаю, что мне очень повезло с наставником и за свой рост я во многом благодарен ему. Мой план развития мы составили по методике OKR. В него входили как хард скиллы, такие MongoDB, Docker, Golang и т.д., так и софт, например, Agile и Kanban. Такой формат мне кажется успешным: на дистанции он приносит большие результаты.
Назвать технологии, которые хочется затащить, — легко, но как всё-таки их изучать?
Образование внутри Авито
У нас довольно много внутренних источников, где можно начать изучение чего-либо. Например, есть своя академия с онлайн-курсами и библиотека, где можно бесплатно взять книги.
В Авито достаточно часто проходят и live-курсы, на которые можно записаться. Плюс совсем недавно запустилась менторская программа, где можно записаться в «ученики» к коллеге, который занимается интересующей вас темой.
Лично я проходил внутренние курсы по tech onboarding и Agile, которые сильно помогли в первые дни. В них рассказывается, по каким правилам у нас всё работает и что где можно подсмотреть. А ещё прошёл курсы по Golang: они неплохо погрузили не только в сам язык, но и в то, как его применяют именно в Авито.
Обучение вне Авито
Не стоит очевидно зацикливаться на одном. Что-то стоит изучать снаружи. Как показывает мой опыт, самые лучшие курсы делают сами компании, которые разрабатывали технологию. Обычно они называются University. Например, Redis, Mongo University. Лично мне они очень понравились, довольно хорошо погружают. Из минусов можно назвать только то, что они полностью на английском, но, а как без него?
Если вы хотите изучить технологию, по которой есть официальные курсы, обязательно проходите их.
Мне было удобно учиться вечером и выходные, чтобы в основное время заниматься спринтовыми задачами и быть в одном графике с командой. Однако тут нет строгого правила. Иногда и в рабочие часы получалось найти время на образование, если спринт был достаточно разгружен. Но лично у меня такие ситуации были крайне редко.
С появлением базиса знаний, у меня стало получаться затаскивать некоторые задачи уже по своей инициативе. Так, изучив Golang, я переписал на него один из наших сервисов, который стал highload, и в принципе первым в команде продовым сервисом на Go. Развитие софт скиллов тоже играет свою роль. Мне стали намного понятнее процессы в команде, и теперь я намного активнее участвую на ретроспективах, предлагая свои идеи.
Стажировка после адаптации
Как я говорил ранее, у нас в команде стажёр стоит в одном ряду с остальными разработчиками. Он может брать такие же задачи и является полноценным участником всех процессов: груммингов, ретроспектив, планирования.
То есть даже стажёр может воздействовать на процесс и платформу. Появилась идея, как улучшить канбан команды? Предложи на ретроспективе, и команда её обсудит. Если идея будет удачной, то предложение примут. Очень хочется затащить какую-то технологию? Это можно продать, особенно если на руках будет готовый MVP. Всё вместе это очень сильно мотивирует.
Вывод
Стажировка в Авито превзошла мои ожидания. Она действительно помогает вырасти и не только как специалисту, но и как личности. Я с удивлением смотрю на текущего себя и себя до стажировки. Я ни разу не пожалел, что выбрал эту компанию. Надеюсь и вас в скором времени увидеть в наших рядах: у нас регулярно появляются новые стажировки и посмотреть их можно здесь. Удачи!