Как Я Пошёл На Летнюю Стажировку И Остался

Меня зовут Ренат Тазиев.

Мне 22 года, я разработчик.



Как я пошёл на летнюю стажировку и остался

(Пишу код на чемпионате Урала по спортивному программированию.

) В июне я собрал вещи, сел на поезд Оренбург-Екатеринбург и поехал на летнюю стажировку.

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

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

Если вы студент и не знаете, нужна ли вам стажировка, добро пожаловать под кат. Год назад я тоже не знал.

Поэтому мой опыт будет полезен.



Решение

Я изучал «компьютерную безопасность» в ОГУ.

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

И я не сомневался, что это правильный путь.

Оставалось самое простое — выбрать компанию, в которой можно расти, а не топтаться на месте.

Впервые я услышал о Контуре на первом курсе.

я участвовал в Чемпионат Урала по спортивному программированию , а Контур был его спонсором.

(Привет всем ИТ-компаниям, которые не решаются инвестировать в студенческие мероприятия.

) И вот в декабре 2016 года я наткнулся вебинар о летней стажировке в Контуре.

Иногородним стажерам, прошедшим отбор, девушка с экрана пообещала компенсацию за проезд и проживание.

Я решил попробовать.



Селективная весна

25 января в сообщество ВК В образовательных программах Контура появилась необычная новость.

Мы искали бета-тестеров для тестового задания для бэкенд-разработчиков.

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

В отличие от простого задачи на 2016 год , в 2017 году было необходимо разработать сервис статистики для многопользовательского шутера.

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

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

У первых было меньше времени, но больше свободы в выборе технологий.

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

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

Через четыре дня пришло «письмо счастья»:

Как я пошёл на летнюю стажировку и остался



Школа молодых программистов

Ускоренный курс начался в начале апреля.

22 участника и два преподавателя собрались на загородной базе под Екатеринбургом.

В течение трех дней нас учили чистому коду, TDD, DI-контейнерам и обработке исключений.



Как я пошёл на летнюю стажировку и остался

(Добрый и злой учитель ускоренного курса.

) В последний день мы разделились на команды по 4-5 человек и попробовали командное развитие.

Вместе с участниками в команде был один наставник, который клавиатуру не трогал, а только советовал.

Команды решили одинаковые задачи и соревновались друг с другом.

Задача состояла из нескольких заданий, которые открывались каждые 90 минут. Каждые 15 минут мы выпускали наш модуль.

Задачи были не столько о добавлении новых функций, сколько о создании правильной архитектуры.

У каждой команды был рейтинг.

Его оценивали по количеству тестов, степени покрытия кода тестами и чистоте кода.

Если код в релизной ветке не компилировался, команда теряла очки.



Как я пошёл на летнюю стажировку и остался

(Я был в команде «Свет», мы заняли третье место).

Задание закрепило все знания и навыки, полученные в предыдущие дни, и познакомило нас с работой в команде «в боевых условиях».

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



Телеконференция

Двухнедельное молчание после ускоренного курса было прервано внезапным звонком.

Чтобы пройти на следующий этап, мне предложили онлайн-интервью.

В нужный момент по ту сторону Скайпа меня ждали трое разработчиков и HR. Я был удивлён, когда увидел среди разработчиков знакомого человека — Финалист ACM ICPC Никита Бурлаков, выступавший за команду ИжГТУ.

Сначала HR поинтересовался моим опытом работы, интересами и планами на будущее.

Разработчики спросили, какую книгу вы прочитали последней.

Потом нам дали задачу: написать метод, определяющий наличие слова в файле.

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

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



Добро пожаловать в Шир

Мне сказали, что я прошел собеседование и стал стажером.

Вы уже знаете, что после этого я сел на поезд и поехал в Екатеринбург.

3 июля я прибыл в крупнейший офис разработки.

Этот офис находится на окраине города в районе под названием «Брод-Ривер» или сокращенно ШР.

Когда-нибудь она станет кремниевой долиной Урала (но это не точно), а пока здесь только контурные постройки, частные коттеджи, лес и пруд.

Как я пошёл на летнюю стажировку и остался

( На строительной площадке уже построено 5 этажей второго корпуса.

) В первый день все 90 стажеров собрались в конференц-зале.

Четыре часа нас знакомили друг с другом, учили, как выживать в офисе, рассказывали о культуре и командах разработки.

Потом был обед, экскурсия по офису и развлечение .

В конце дня мы разошлись по своим командам.

Мы с другом попали в команду Биллинга.

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



Команда

В течение первой недели я познакомился с командой.

Всего около 50 человек из трех городов: Ижевска, Санкт-Петербурга и Екатеринбурга.

К команде присоединились восемь стажеров: четыре бэкенд-разработчика (два в Екатеринбурге, по одному в Ижевске и Санкт-Петербурге), два фронтенд-разработчика, тестировщик и аналитик.

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

Автоматизирует продажи продукции Kontur. В нем работают сотрудники Контора, компании-партнеры и пользователи продукта.

Они рассказали о целях команды, используемых технологиях и инженерных практиках.

Сюда входит парное программирование (даже с разработчиками из других городов), обязательное покрытие кода тестами, постоянные ревью кода и регулярные скрамы.

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



Как я пошёл на летнюю стажировку и остался

(Скрам одной из подкоманд Биллинга.

Задачи в Trello на ТВ.

) Я был полноправным членом команды и решал бизнес-задачи.

Мы с моим наставником потратили много времени на знакомство с кодовой базой, рефакторинг и ревью кода.

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

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

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

Еще я почувствовал, как ReSharper ускоряет разработку.



Другие стажеры

Я общался со стажёрами в других командах на встречи каждые две недели а на «кваторе» — выездной отпуск, отмечающий середину стажировки.



Как я пошёл на летнюю стажировку и остался

(Все тренирующиеся находятся на «кваторе» веревочного парка.

) Мы рассказали о наших задачах и поделились опытом.

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

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

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



Большой вызов

В августе я завершил большую работу от начала до конца.

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

Он очень большой, генерируется и сортируется автоматически с использованием нетривиальных алгоритмов.

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

Мы решили вынести код работы со списками в отдельный микросервис.

Я обсудил со своим наставником, какие возможности и интерфейсы должен иметь сервис.

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

Мы добавили регулирование запросов в микросервис.

Это была новая технология, поэтому они представили ее команде.

Мы рассказали вам, как регулирование можно использовать в других микросервисах.

В команде принято сначала писать код, а потом тесты.

Причина в следующем: при разработке предприятия зачастую невозможно сразу выбрать правильную архитектуру и детали реализации.

Вы можете написать код и тут же покрыть его тестами.

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

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

Нам также было важно понять, насколько мы улучшили жизнь пользователей.

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

Микросервис отправляет метрики в Graphite, а мы смотрим красивые графики в Grafana и анализируем поведение кода.



Итоговая конференция

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

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



Как я пошёл на летнюю стажировку и остался

Состоялось жюри и выбрали три лучших доклада.

Награду за «лучший пиар проекта» получил стажер, который рассказал о том, как использовать Houston — внутреннюю систему для развертывания и хостинга .

NET-приложений, аналогичную Kubernetes. Награда за «лучший рассказ о ракетостроении своими словами» досталась стажеру по данным, который с помощью машинного обучения выделил заголовки из новостных текстов и связал их с известными компаниями.

Стажер, изменивший одну строчку кода и сделавший приложение в 30 раз быстрее, был награжден за «реальное улучшение производительности на поле боя».



Результаты стажировки

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

Была дружеская атмосфера и никто не сомневался в наших силах.

За два месяца я проработал 8 задач, сделал 180 коммитов и дважды выпустил релиз.

Я прочитал 35 технических статей, две книги и посмотрел более 30 часов видео с конференций.

А в середине августа, еще до итоговой конференции, я поговорил со своим наставником и решил, что останусь в команде Биллинга.

Теперь вы знаете, как проходила моя стажировка.

Если есть вопросы, задавайте в комментариях :) Теги: #студенты #стажировка #стажировка в СКБ Контур #Образовательный процесс в ИТ

Вместе с данным постом часто просматривают: