Чтобы вам за это ничего не было
Пару лет назад к нам в QIWI пришли добрые люди с предложением немного поэксплуатировать детей. В смысле, заключить с нами договор, по которому мы берем школьников на стажерские программы, смотрим, насколько им (и нам) это интересно, и можно ли сделать из всей этой затеи что-то полезное.
Затея была в том, чтобы брать школьников и забрасывать их в отделы или продуктовые команды. Продуктологи, само собой, встретили это без должного огня в глазах с ожидаемым девизом «А на кой хрен нам это вообще, все работает, не трогай».
Под катом — подробности про наши программы стажировок, отзывы двух ребят, один из которых после стажировки уже работает с нами в штате, а второй пока стажер (парням сейчас 16 и 18 лет, кстати) и впечатления лидов от процесса.
До этого существовала программа под названием QIWI FINTEEN — там мы обучали школьников финансовой грамотности, рассказывали им о QIWI, о картах, показывали, как чего работает. Опыт признали успешным и раскатали программу на всю Россию, начав обучать детей в Артеке и других лагерях. Причем не только финансовой грамотности, но и основам информационной безопасности. Программа, кстати, продолжает брать премии как неплохой образовательный проект. По ней мы обучили более 150 000 человек.
Итак, мы пригласили школьников с любыми практическими навыками программирования. У некоторых были даже профили на github. Договорились, что возьмем в качестве пилота 4 человек (примерно из 40 прошедших предварительный отбор). Все стажеры выходили в разные отделы, от SMM и аналитики до разработки и терминалов.
Как понять, в какие задачи погрузить школьника на месяц? Мы взяли тестовое задание (причем реальное тестовое задание для аналитиков), которое позволяло в общих чертах оценить уровень знаний школьников и, что главное, их предпочтения. Решили в процессинг и Java-разработку не подключать, а выбрали команду fullstack JavaScript. Подобрали небольшие, но реальные задачи, результаты которых можно было выдать в open source, чтобы у каждого был репозиторий, проревьюенный техническим ментором. Мы закинули ребят сразу в код.
Из проектов, которые они осилили сделать, был механизм расшара в соцсетях и сервис сравнения служебных таблиц боевой и тестовой баз данных.
А что лиды? Оказалось, что общение со школьниками поднимает боевой дух текущих сотрудников. Когда ты как наставник объясняешь новичку, чего и как устроено, ты начинаешь в том числе и немного критичнее смотреть на собственную работу. Главное, что мы вынесли для себя из этого, это то, что нужно подбирать задачи под людей, а не людей под задачи. В больших компаниях довольно часто делают наоборот.
А теперь — слово парням.
С моей стороны это выглядело вот так: год назад я проходил обучающую программу в Школе ИТ-решений во время учебного года, и там нам явно намекали, что у кого будут крутые проекты, те смогут пойти на стажировку в реальную компанию, вот прямо сейчас договариваемся с QIWI. В итоге прислали ссылку на регистрацию, там была здоровенная анкета с несколькими мини-эссе. Заполнял час почти.
Потом пригласили на очное собеседование, со всеми сразу, с руководителями направлений. Я думал, что буду долго ждать ответа, но мне позвонили уже на следующий день и сказали, в какие из отделов QIWI я могу пойти стажироваться. Я пошел к Гоше GEG, который пугал всех кодом. Хотел идти именно к нему, потому что у него были реальные проекты. Другие отделы — это аналитика и дизайн, это не мое.
Очень порадовало, что была полная свобода действий. Сам выбираешь, когда приходишь и когда заканчиваешь. Месяц проработал в QIWI очно, потом какое-то время еще поддерживал свой проект в течение учебного года, ну и прилетали задачки иногда разные. А сейчас, год спустя, я уже в штате и работаю младшим программистом.
Здесь классно, те ценности, которые давала стажировка, остались и после выхода на работу, то есть никакой бюрократии и человеческое отношение. До QIWI я стажировался в одной мелкой компании, которая делала образовательные проекты. Нас там с еще двумя стажерами посадили за компы и сказали — вы разрабатывали ваш проект на Unity, продолжайте, может, нам этот движок подойдет. В общем, мы около месяца что-то делали, а потом это, скорее всего, выкинули нафиг. И это не круто, такое отношение к работе, мы сидели над этим по 4-5 часов в день, и никуда не пригодилось.
А тут по-другому, сразу пришел — и вот реальные задачи. Рассказали, какие есть проблемы, сказали, зачем вообще им нужен этот сравнятор баз данных. То есть это реальная боевая задача была, на технологии, которая используется в компании. И эта штука полезна людям, мы ей пользуемся даже сейчас, а не просто забили как на тестовый проект. Когда я ее только разрабатывал, сказали, что будут запускать ее раз в пару месяцев. А ее до сих пор активно используют и включили в процесс релизов.
Потом на очередной встрече мне предложили выбор — или устроиться в QIWI и совмещать это с учебой в 11 классе, или годик подождать и прийти потом. Я выбрал подождать и не жалею — все-таки, на ЕГЭ и прочее тратилось много времени, я был бы не так продуктивен в работе в это время.
А потом мне стукнуло 18 и меня взяли на работу. Это было очень круто — понимать, что после стажировки тебя продолжают ждать в компании.
Тут стоит еще рассказать о том, какую же именно штуковину написал Женя. У нас есть тестовый контур и боевой. От релиза к релизу данные в служебных таблицах меняются, из-за чего приходится вносить кучу ручных изменений. А база крупная. А в релиз должно попадать только все самое свежее, так что нужен еще и адекватный процесс ревью этих изменений. Вот Женя и написал нам утилитку, которая берет тестовую схему, берет боевую, выводит отличия и потом генерит нужные DML-скрипты для INSERT / UPDATE.
В самом начале стажировки мы сразу говорим ребятам, что она не оплачивается (мы компенсируем только питание в офисе). Это скорее обучение, потому что время квалифицированных спецов тоже стоит для компании определенную сумму, да и процесс такого код-ревью от лидов уже сам по себе ценен. Школьников берем сейчас на лето, примерно на месяц довольно продуктивной работы. Вообще, даже месяца маловато — если говорить о состоявшемся разрабе с опытом, он потратит этот месяц на то, чтобы нормально влиться в сформировавшуюся команду и понять, как все устроено.
А со школьниками сложнее. Какое-то время ты тратишь на то, чтобы понять, какие вещи ему вообще интересны и какие задачи ему стоит давать. Потом вводишь в курс дела по используемым технологиям. В общем, хватает всякого.
Количество мест на стажировку напрямую зависит от открытых вакансий. Навскидку на 2019 — будет примерно 30-40. Может, больше.
С графиком у нас все довольно лояльно. Главное (и очевидное) требование — будучи стажером, старайся просто быть в офисе с полудня до удобного тебе времени, но чтобы непосредственно пересекаться с командой, с которой работаешь. Конкретно у Жени сейчас история немного другая, он уже студент, старается сам адекватно оценивать, чего там как у него с загрузкой и сколько ему надо времени. Если надо — приходит пораньше, что-то релизит, уходит на пары в институт. Потом иногда сидит тут до 10 вечера со своими задачками. Мы пытались его выгонять домой, но пока не очень получается.
Сейчас у него будет сессия, само собой, он станет немного меньше успевать по работе. Зато потом в феврале каникулы (читай — привет, фултайм).
На самом деле, сомневается в менторстве довольно большой процент разрабов. Все сидят и думают, да нафига мне вообще школьники, спасибо, следующий. Если так к java-мидлу прийти, то так и уйдешь.
У нас получилось все чуток иначе, потому что конкретно в команде, куда направили стажеров, нет Java. Вообще, сама архитектура проекта и используемые языки в какой-то степени определяют, насколько можно просто взять человека с улицы и погрузить в работу за месяц. Наш стек это позволяет, плюс мы не кидали ребят в какие-то критичные корневые штуки. Не процессинг, в общем. Но это не отменяет нужности и важности задач.
Можно было бы тут сказать про то, что система у нас высоконагруженная, но сам термин хоть и модный, но ИМХО используется не совсем верно. Мы считаем, что если приложение хреновое изначально, то для него там какая-то серьезная нагрузка — это уже highload. А если ты сделал все нормально, то даже серьезные цифры должны быть в разряде «штатная ситуация». Потому что на Node.JS, typescript, PostgreSQL можно писать любые сервисы. Фронты обычно разрабатываем на React, но есть и проект на Angular.
И во все это можно без особого труда взять человека и за месяц сделать так, что он поймет, что вообще происходит. Например, есть какая-то фича, которую условный мидл будет сидеть и пилить неделю. Причем фича не очень срочная, она никому не нужна прямо завтра. Значит, можно отдать ее школьнику, который будет попиливать ее уже месяц. В худшем случае это будет с нашей стороны потеря времени. В нормальном — взаимовыгодная эксплуатация школьника.
За каждым ментором обычно закрепляем 2 школьников максимум. Это сильно зависит от текущей загрузки самого ментора и его умения распределять свое время, а также от самостоятельности стажеров. Кстати, Женя в этом году неслабо втянулся — он сейчас активно помогает новичкам настраивать рабочее окружение и понять наши процессы, знакомит со стеком технологий.
То есть серьезно и без шуток — парень, который за год прошел путь от стажера-школьника до младшего программиста, сегодня сам помогает двигаться по этому пути другим людям. Круто же.
А насчет технологий — тут важно сразу вложить в голову новичкам, что есть технологии, которые позволяют решать задачи. Любую из них просто надо взять и правильным местом приложить к делу. У каждого из школьников довольно разный бэкграунд — кто-то что-то делал на Паскале, кто-то на Си и прочее. Я стараюсь дать им понимание того, что программист в течение своей профессиональной жизни сменит кучу языков, их надо осваивать. Выбор правильного стека на всю жизнь — это иллюзия. Развиваетесь вы вширь.
Я искал на лето всякие летние школы, связанные с программирование, и случайно наткнулся на FINTEEN. До этого я самостоятельно год учился программировать, но хотел попробовать себя в чем-то большем. Заполнил заявку, где-то через месяц мне позвонили и сказали приходить в офис на собеседование, посмотрим, чего ты умеешь делать. Ну я и пришел. После собеседования сказали, что оформят пропуск и можно через неделю выходить.
Через неделю дали тестовую задачу по базам данных делать, сделал ее за день. На следующий день уже дали что-то более или менее боевое делать (статичную кнопку). Для этого уже пришлось погружаться в стек технологий и понимать, как чего деплоится, какие процессы в компании. А приходил я вообще с нуля почти. Так что все учил уже здесь.
А потом было демо. Это был необычный для меня день, потому что я не понимал, что такое демо и зачем. Я пришел, мне сказали просто рассказать о том, что я делал всю эту неделю. Я полдня готовился, потом мы пошли в конференц-холл и выступали перед остальными программистами. Я сказал, что прикрутил кнопку и что мне 16 лет. Теперь на демо выступающие часто выходят и начинают свою речь словами «Привет, меня зовут так-то, и мне не 16».
Потом мне стали давать более сложные задачи уже. Самая длинная задача была на две недели — интернационализация + колорпикер. Фронтендом я занимался потому, что мне было это интересно, были атомарные задачки, которые команда могла мне дать.
Мне очень понравилась атмосфера, тут классные люди. А еще бесплатный кофе и горячий шоколад.
QIWI дало мне хороший старт, я понял, как распределяются задачи, для чего все эти сборы. Сейчас я веду свою команду, участвуем в хакатонах и в Школе ИТ-решений. А еще стал часто пользоваться гитхабом.
Вот еще что. У нас в тестовом задании была база на Амазоне. И совпало все это дело с попыткой РКН поблочить телеграм, в итоге чего поблочилось полинтернета, кроме телеграма. Включая нашу базу. Так что для ребят, которые шли делать тестовое, была внесена вот такая стихийная корректировка — чтобы сделать тестовое, надо было уметь еще и обходить подобные вещи.
Для нас как для компании стажерская программа стала еще одним стимулом в развитии нашего опенсорс-движения — все задачки мы закидывали туда. Причем тестовая задачка для разрабов сразу дает понять человеку, с какой именно инфраструктурой ему придется у нас работать, все задания — живые, это не сферическая фигня в вакууме.
Кстати, хочешь быть крутым наставником в новом году? Вливайся в нашу команду. :)
Пару лет назад к нам в QIWI пришли добрые люди с предложением немного поэксплуатировать детей. В смысле, заключить с нами договор, по которому мы берем школьников на стажерские программы, смотрим, насколько им (и нам) это интересно, и можно ли сделать из всей этой затеи что-то полезное.
Затея была в том, чтобы брать школьников и забрасывать их в отделы или продуктовые команды. Продуктологи, само собой, встретили это без должного огня в глазах с ожидаемым девизом «А на кой хрен нам это вообще, все работает, не трогай».
Под катом — подробности про наши программы стажировок, отзывы двух ребят, один из которых после стажировки уже работает с нами в штате, а второй пока стажер (парням сейчас 16 и 18 лет, кстати) и впечатления лидов от процесса.
С чего все вообще началось
До этого существовала программа под названием QIWI FINTEEN — там мы обучали школьников финансовой грамотности, рассказывали им о QIWI, о картах, показывали, как чего работает. Опыт признали успешным и раскатали программу на всю Россию, начав обучать детей в Артеке и других лагерях. Причем не только финансовой грамотности, но и основам информационной безопасности. Программа, кстати, продолжает брать премии как неплохой образовательный проект. По ней мы обучили более 150 000 человек.
Итак, мы пригласили школьников с любыми практическими навыками программирования. У некоторых были даже профили на github. Договорились, что возьмем в качестве пилота 4 человек (примерно из 40 прошедших предварительный отбор). Все стажеры выходили в разные отделы, от SMM и аналитики до разработки и терминалов.
Как понять, в какие задачи погрузить школьника на месяц? Мы взяли тестовое задание (причем реальное тестовое задание для аналитиков), которое позволяло в общих чертах оценить уровень знаний школьников и, что главное, их предпочтения. Решили в процессинг и Java-разработку не подключать, а выбрали команду fullstack JavaScript. Подобрали небольшие, но реальные задачи, результаты которых можно было выдать в open source, чтобы у каждого был репозиторий, проревьюенный техническим ментором. Мы закинули ребят сразу в код.
Из проектов, которые они осилили сделать, был механизм расшара в соцсетях и сервис сравнения служебных таблиц боевой и тестовой баз данных.
А что лиды? Оказалось, что общение со школьниками поднимает боевой дух текущих сотрудников. Когда ты как наставник объясняешь новичку, чего и как устроено, ты начинаешь в том числе и немного критичнее смотреть на собственную работу. Главное, что мы вынесли для себя из этого, это то, что нужно подбирать задачи под людей, а не людей под задачи. В больших компаниях довольно часто делают наоборот.
А теперь — слово парням.
Женя, 18 лет, младший разработчик
С моей стороны это выглядело вот так: год назад я проходил обучающую программу в Школе ИТ-решений во время учебного года, и там нам явно намекали, что у кого будут крутые проекты, те смогут пойти на стажировку в реальную компанию, вот прямо сейчас договариваемся с QIWI. В итоге прислали ссылку на регистрацию, там была здоровенная анкета с несколькими мини-эссе. Заполнял час почти.
Потом пригласили на очное собеседование, со всеми сразу, с руководителями направлений. Я думал, что буду долго ждать ответа, но мне позвонили уже на следующий день и сказали, в какие из отделов QIWI я могу пойти стажироваться. Я пошел к Гоше GEG, который пугал всех кодом. Хотел идти именно к нему, потому что у него были реальные проекты. Другие отделы — это аналитика и дизайн, это не мое.
Очень порадовало, что была полная свобода действий. Сам выбираешь, когда приходишь и когда заканчиваешь. Месяц проработал в QIWI очно, потом какое-то время еще поддерживал свой проект в течение учебного года, ну и прилетали задачки иногда разные. А сейчас, год спустя, я уже в штате и работаю младшим программистом.
Здесь классно, те ценности, которые давала стажировка, остались и после выхода на работу, то есть никакой бюрократии и человеческое отношение. До QIWI я стажировался в одной мелкой компании, которая делала образовательные проекты. Нас там с еще двумя стажерами посадили за компы и сказали — вы разрабатывали ваш проект на Unity, продолжайте, может, нам этот движок подойдет. В общем, мы около месяца что-то делали, а потом это, скорее всего, выкинули нафиг. И это не круто, такое отношение к работе, мы сидели над этим по 4-5 часов в день, и никуда не пригодилось.
А тут по-другому, сразу пришел — и вот реальные задачи. Рассказали, какие есть проблемы, сказали, зачем вообще им нужен этот сравнятор баз данных. То есть это реальная боевая задача была, на технологии, которая используется в компании. И эта штука полезна людям, мы ей пользуемся даже сейчас, а не просто забили как на тестовый проект. Когда я ее только разрабатывал, сказали, что будут запускать ее раз в пару месяцев. А ее до сих пор активно используют и включили в процесс релизов.
Потом на очередной встрече мне предложили выбор — или устроиться в QIWI и совмещать это с учебой в 11 классе, или годик подождать и прийти потом. Я выбрал подождать и не жалею — все-таки, на ЕГЭ и прочее тратилось много времени, я был бы не так продуктивен в работе в это время.
А потом мне стукнуло 18 и меня взяли на работу. Это было очень круто — понимать, что после стажировки тебя продолжают ждать в компании.
О стажировках и графике
Тут стоит еще рассказать о том, какую же именно штуковину написал Женя. У нас есть тестовый контур и боевой. От релиза к релизу данные в служебных таблицах меняются, из-за чего приходится вносить кучу ручных изменений. А база крупная. А в релиз должно попадать только все самое свежее, так что нужен еще и адекватный процесс ревью этих изменений. Вот Женя и написал нам утилитку, которая берет тестовую схему, берет боевую, выводит отличия и потом генерит нужные DML-скрипты для INSERT / UPDATE.
В самом начале стажировки мы сразу говорим ребятам, что она не оплачивается (мы компенсируем только питание в офисе). Это скорее обучение, потому что время квалифицированных спецов тоже стоит для компании определенную сумму, да и процесс такого код-ревью от лидов уже сам по себе ценен. Школьников берем сейчас на лето, примерно на месяц довольно продуктивной работы. Вообще, даже месяца маловато — если говорить о состоявшемся разрабе с опытом, он потратит этот месяц на то, чтобы нормально влиться в сформировавшуюся команду и понять, как все устроено.
А со школьниками сложнее. Какое-то время ты тратишь на то, чтобы понять, какие вещи ему вообще интересны и какие задачи ему стоит давать. Потом вводишь в курс дела по используемым технологиям. В общем, хватает всякого.
Количество мест на стажировку напрямую зависит от открытых вакансий. Навскидку на 2019 — будет примерно 30-40. Может, больше.
С графиком у нас все довольно лояльно. Главное (и очевидное) требование — будучи стажером, старайся просто быть в офисе с полудня до удобного тебе времени, но чтобы непосредственно пересекаться с командой, с которой работаешь. Конкретно у Жени сейчас история немного другая, он уже студент, старается сам адекватно оценивать, чего там как у него с загрузкой и сколько ему надо времени. Если надо — приходит пораньше, что-то релизит, уходит на пары в институт. Потом иногда сидит тут до 10 вечера со своими задачками. Мы пытались его выгонять домой, но пока не очень получается.
Сейчас у него будет сессия, само собой, он станет немного меньше успевать по работе. Зато потом в феврале каникулы (читай — привет, фултайм).
Менторство и сомнения
На самом деле, сомневается в менторстве довольно большой процент разрабов. Все сидят и думают, да нафига мне вообще школьники, спасибо, следующий. Если так к java-мидлу прийти, то так и уйдешь.
У нас получилось все чуток иначе, потому что конкретно в команде, куда направили стажеров, нет Java. Вообще, сама архитектура проекта и используемые языки в какой-то степени определяют, насколько можно просто взять человека с улицы и погрузить в работу за месяц. Наш стек это позволяет, плюс мы не кидали ребят в какие-то критичные корневые штуки. Не процессинг, в общем. Но это не отменяет нужности и важности задач.
Можно было бы тут сказать про то, что система у нас высоконагруженная, но сам термин хоть и модный, но ИМХО используется не совсем верно. Мы считаем, что если приложение хреновое изначально, то для него там какая-то серьезная нагрузка — это уже highload. А если ты сделал все нормально, то даже серьезные цифры должны быть в разряде «штатная ситуация». Потому что на Node.JS, typescript, PostgreSQL можно писать любые сервисы. Фронты обычно разрабатываем на React, но есть и проект на Angular.
И во все это можно без особого труда взять человека и за месяц сделать так, что он поймет, что вообще происходит. Например, есть какая-то фича, которую условный мидл будет сидеть и пилить неделю. Причем фича не очень срочная, она никому не нужна прямо завтра. Значит, можно отдать ее школьнику, который будет попиливать ее уже месяц. В худшем случае это будет с нашей стороны потеря времени. В нормальном — взаимовыгодная эксплуатация школьника.
За каждым ментором обычно закрепляем 2 школьников максимум. Это сильно зависит от текущей загрузки самого ментора и его умения распределять свое время, а также от самостоятельности стажеров. Кстати, Женя в этом году неслабо втянулся — он сейчас активно помогает новичкам настраивать рабочее окружение и понять наши процессы, знакомит со стеком технологий.
То есть серьезно и без шуток — парень, который за год прошел путь от стажера-школьника до младшего программиста, сегодня сам помогает двигаться по этому пути другим людям. Круто же.
А насчет технологий — тут важно сразу вложить в голову новичкам, что есть технологии, которые позволяют решать задачи. Любую из них просто надо взять и правильным местом приложить к делу. У каждого из школьников довольно разный бэкграунд — кто-то что-то делал на Паскале, кто-то на Си и прочее. Я стараюсь дать им понимание того, что программист в течение своей профессиональной жизни сменит кучу языков, их надо осваивать. Выбор правильного стека на всю жизнь — это иллюзия. Развиваетесь вы вширь.
Эмиль, 16 лет, стажер
Я искал на лето всякие летние школы, связанные с программирование, и случайно наткнулся на FINTEEN. До этого я самостоятельно год учился программировать, но хотел попробовать себя в чем-то большем. Заполнил заявку, где-то через месяц мне позвонили и сказали приходить в офис на собеседование, посмотрим, чего ты умеешь делать. Ну я и пришел. После собеседования сказали, что оформят пропуск и можно через неделю выходить.
Через неделю дали тестовую задачу по базам данных делать, сделал ее за день. На следующий день уже дали что-то более или менее боевое делать (статичную кнопку). Для этого уже пришлось погружаться в стек технологий и понимать, как чего деплоится, какие процессы в компании. А приходил я вообще с нуля почти. Так что все учил уже здесь.
А потом было демо. Это был необычный для меня день, потому что я не понимал, что такое демо и зачем. Я пришел, мне сказали просто рассказать о том, что я делал всю эту неделю. Я полдня готовился, потом мы пошли в конференц-холл и выступали перед остальными программистами. Я сказал, что прикрутил кнопку и что мне 16 лет. Теперь на демо выступающие часто выходят и начинают свою речь словами «Привет, меня зовут так-то, и мне не 16».
Потом мне стали давать более сложные задачи уже. Самая длинная задача была на две недели — интернационализация + колорпикер. Фронтендом я занимался потому, что мне было это интересно, были атомарные задачки, которые команда могла мне дать.
Мне очень понравилась атмосфера, тут классные люди. А еще бесплатный кофе и горячий шоколад.
QIWI дало мне хороший старт, я понял, как распределяются задачи, для чего все эти сборы. Сейчас я веду свою команду, участвуем в хакатонах и в Школе ИТ-решений. А еще стал часто пользоваться гитхабом.
Итого
Вот еще что. У нас в тестовом задании была база на Амазоне. И совпало все это дело с попыткой РКН поблочить телеграм, в итоге чего поблочилось полинтернета, кроме телеграма. Включая нашу базу. Так что для ребят, которые шли делать тестовое, была внесена вот такая стихийная корректировка — чтобы сделать тестовое, надо было уметь еще и обходить подобные вещи.
Для нас как для компании стажерская программа стала еще одним стимулом в развитии нашего опенсорс-движения — все задачки мы закидывали туда. Причем тестовая задачка для разрабов сразу дает понять человеку, с какой именно инфраструктурой ему придется у нас работать, все задания — живые, это не сферическая фигня в вакууме.
Кстати, хочешь быть крутым наставником в новом году? Вливайся в нашу команду. :)