В четвертый раз мы выбрали 20 iOS и Android-разработчиков и учили их писать код, как роботы. И хотя алгоритмы роботов (практически) совершенны, каждый год мы накатываем обновления. Как изменилась система в этом году, рассказывают организаторы стажировки.
В нашей программе
Есть вещи, которые остаются неизменными — каждый год мы пересматриваем программу стажировки исходя из изменений технологий, нового опыта команды и фидбека от стажеров прошлого набора. То, что показалось сложным, объясняем проще, в некоторые вопросы наоборот погружаем детальнее. Мы говорим об актуальном стеке технологий, который используем, и том, как выстроены процессы у роботов.
Артем Кулаков, Android Team Lead:
— Из программы для Android выбросили, например, CI, поскольку это достаточно просто и не слишком интересно. Что-то проапдейтили и добавили новые лекции — в этом году Google наконец представил нормальную ORM, и в рамках курса мы рассказали о том, как с ней работать. Не повторили видео с презентации, а подробно рассмотрели, как проектировать базы данных с нуля, как строится процесс, какие компоненты в нем присутствуют и как все это работает с новым решением Google.
Иван Вавилов, iOS Team Lead:
— За последний год мы сильно изменили процесс Continuous Integration внутри компании, и в программе стажировки появились общая и специальная лекции по тестированию. Также мы учли популярные инструменты для тестирования и CI, такие как Xcode UI-тесты, Snapshot-тесты, Fastlane и Danger.
Стало еще больше безопасности. О чем-то мы рассказывали в новом ключе: например, обновился список угроз OWASP Mobile Top 10, а что-то остается актуальным всегда — как практика (не)хранения конфиденциальной информации в коде.
Артем Кулаков, Android Team Lead:
— Много внимания уделили UI, потому что с кишками все более-менее разобрались, а вот интерфейсы оставляют желать лучшего. В прошлом году мы рассказывали базовые вещи о material design, в этом — больше интересной жести: анимации, подготовка макетов, custom views и так далее. Далеко не все разработчики любят и умеют делать UI — в этой области специалистов всегда меньше, чем любителей покопаться «под капотом». Да и немногие дизайнеры умеют делать интерфейсы, которые можно реализовать без боли.
Про отбор
У нас было чуть больше 200 заявок от Android-разработчиков и 150 на iOS. В итоге взяли 20 стажеров — по 10 на платформу. Стажировка роботов не для начинающих — но тем, кто уже что-то умеет, мы можем дать хороший рост и приглашение на работу.
Иван Вавилов, iOS Team Lead:
— Всех, кто подает нам заявки, я делю на три категории. Те, кто под iOS никогда не писал и хочет научиться — такие к нам не попадают, поскольку просто ничего не поймут. Второй тип: люди с большим — от 7 лет и выше — опытом в разработке, которые хотят перейти в iOS — мы уверены, что такие люди могут прокачаться самостоятельно и прийти к нам уже на собеседование. Стажировка предназначена для тех, кто очень заинтересован в росте и работе в такой компании, как наша: много проектов, необходимость быстро осваивать новые решения и так далее. Поэтому мы берем тех, кто в iOS уже работал, и даем им возможность попробовать новые архитектурные подходы, подходы к настройке проектов и обеспечению безопасности.
Артем Кулаков, Android Team Lead:
— В Redmadrobot мы занимаемся вещами, о которых средний разработчик либо не знал, либо не мог попробовать. Часто в команде продукта 1-2 разработчика из года в год пилят приложение, не имея возможности попробовать что-то принципиально новое — Room, Clean Architecture, Kotlin — и это видно по ответам на вопросы анкеты. Знания, которые мы даем, будут полезны только тем, кто уже покрутился в проектах. Мы не берем совсем зеленых разработчиков, потому что им не к нам, мы не берем зрелых специалистов, которые хотят поменять специализацию, например, из бэкенда перейти в мобильную разработку, потому вряд ли им это будет полезно. На стажировку попадают очень немногие, и это должны быть люди, которые хотят учиться и которым мы можем дать что-то полезное. Найм — это важно, но мы ставим перед собой и образовательные цели.
Как прошло
Как обычно: общие лекции по теории и специальные по темам на платформах, плюс домашние задания. Проверка домашних заданий и разбор ошибок — одно из главных преимуществ стажировки роботов. Мы постарались оптимизировать процесс по времени и трудозатратам, но при этом рассматривали работу каждого и отвечать на все возникающие вопросы.
В этом году обе группы писали приложения, аналогичные боевым проектам роботов. Android-разработчики писали GitHub-клиент, а группа по iOS — приложение, похожее на один из наших проектов.
Иван Вавилов, iOS Team Lead:
— По тому, как человек ведет себя на лекциях: как слушает, как задает вопросы и как потом выполняет задания, видно, насколько хорошо он понимает, а мы — доносим материал. Когда один стажер делает задание хорошо, а другой плохо — один понял, а второй нет. Если плохо делает вся группа — мы плохо рассказали. В среднем до конца стажировки не доходят 1-2 человека. Мы спокойно к этому относимся, но у себя в команде хотим видеть тех, кто сделал все задания, пусть и не идеально.
Роман Рулин, стажер:
— Читая отзывы стажеров предыдущих лет, я понимал, что легко не будет. Соревновательный момент в домашних заданиях, конечно же, добавил мотивации, я стремился сделать все дополнительные задания и получить максимальные баллы. В последние минуты до полуночи перед сдачей домашки приходилось писать код с огромной скоростью, отсчитывая оставшееся время, и отправлять письмо в последнюю минуту.
Дмитрий Гачковский, стажер:
— Одна из главных особенностей стажировки — тщательная проверка домашнего задания преподавателями. Это дисциплинирует и гарантирует, что и усилия и ошибки не останутся незамеченными.
Оценки
С каждым годом стажировок, курсов, статей становится больше, уровень комьюнити растет, и наши стажеры уже более критически воспринимают информацию. В этом году впервые материал показался ребятам слишком простым — впрочем, только поначалу.
Артем Кулаков, Android Team Lead:
— Уровень самых слабых стажеров этого набора соответствовал самым сильным с прошлой стажировки. Видно, что сообщество развивается, люди тянутся к знаниям. Если в прошлом году мы потратили много времени на отбор, поскольку искали самых сильных из множества кандидатов, на этот раз отбор шел уже среди лучших.
Иван Вавилов, iOS Team Lead:
— В группе iOS значительной разницы с прошлыми наборами не было. У наших стажеров опыт очень разный: от года и более в коммерческой разработке до работы исключительно в учебных проектах. Интересно в ходе стажировки наблюдать за тем, как люди растут — часто менее опытные учатся быстрее, чем те, кто казался более перспективным.
При том же количестве опыта у разработчиков теперь больше знаний, пусть и неглубоких, и выше требования к контенту. А это уже челлендж для роботов.
Артем Кулаков, Android Team Lead:
— Во-первых, участие в стажировке дает нашим ребятам отличный опыт публичных выступлений. Во-вторых, позиция гуру повышает степень ответственности — ты проводишь собственный research и глубже разбираешься в теме, чтобы ответить на вопросы. Плюс подготовка лекций помогает структурировать все, что ты уже знаешь, и прокачать ораторские скиллы. Для нас проведение стажировок — школа, которая помогает растить авторов статей и докладчиков для российских и международных конференций.
Итого
Новые лекции и лекторы, сильные стажеры и, конечно, пополнение рядов роботов. Традиционно лучшие получают приглашение в наши металлические ряды. На этой стажировке таких было трое. Всего в команде разработки Redmadrobot сейчас 7 бывших стажеров — в том числе и те, кто в этом году читал лекции для стажеров. В последние пять лет стажировка остается не самым коротким и простым, но эффективным способом поработать с роботами. И если вы почему-то не попали на нее в этом году — в следующем мы повторим.