В основном это запись моего выступления на Ruby Conf Thailand 2019.
Слайды доступны по адресу: https://speakerdeck.com/aemeredith/start-your-own-apprenticeship-program.

Все хотят нанять старших разработчиков

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

Возьмем, к примеру, технологических гигантов Apple, Google и IBM. Этим компаниям больше не требуется четырехлетнее высшее образование для многих должностей, в том числе для некоторых технических должностей. Ослабление этого извечного требования открывает двери для тысяч потенциальных сотрудников.
https://www.comptia.org/resources/it-industry-trends-analysis

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

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

В 2017–2018 годах я проходил шестимесячную стажировку в компании Hooroo,
теперь это отели Qantas в Мельбурне, Австралия. Это было признано большим успехом, и в настоящее время мы изучаем варианты его повторного запуска.

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

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

Ученик ☞ Подмастерье ☞ Мастер

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

Термин происходит от французского слова день, то есть путешествие, и в основном означал, что подмастерье будет получать посуточно за свою работу. После периода обширного опыта подмастерье мог представить часть своей лучшей работы в соответствующую гильдию для оценки и утверждения. Если бы этот шедевр был принят, они могли бы стать мастерами, открыть свою собственную мастерскую и обучать учеников. — https://technicaleducationmatters.org/2011/01/06/short-history-of-apprenticeships/

Чем она отличается от стажировки?

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

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

С другой стороны, ученик — это человек, который учится ремеслу у квалифицированного работодателя, согласившись работать в течение определенного периода времени за [относительно] низкую заработную плату.

Таким образом, можно сказать, что обучение – это:

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

Почему вы должны начать один?

Наем джуниоров улучшает командные рабочие процессы

  • Улучшает разнообразие: открывает резерв кандидатов и помогает продвигать и поддерживать инициативы в области разнообразия. Увеличивает разнообразие фона и навыков потенциальных кандидатов.
  • Улучшенная производительность и повышенная производительность, поскольку доказано, что разные команды работают лучше.
  • Написание более простых объяснений способствует лучшему пониманию кодовой базы.
  • Вещи документируются лучше.
  • Общение становится явным.

Найм джуниоров способствует развитию команды

  • Улучшает удержание существующих членов команды.
  • Обеспечивает обучение сотрудников лучшим практикам и процессам компании.
  • Предоставляет работодателям конкурентное преимущество благодаря хорошо обученной и гибкой рабочей силе.
  • Устраняет разрыв в навыках между старшими и младшими.
  • Поддерживает масштаб быстрорастущих компаний.
  • Экономит время и деньги на подборе и адаптации талантов.

Что тебе нужно?

Как минимум, ученик, наставник и компания, которая готова инвестировать.

Покупка компании

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

Командный бай-ин

Вам также понадобится команда, которая готова наставлять и работать непосредственно с учеником. Ученики добиваются успеха, когда команда посвящена и стремится работать с новичком.

Ответственное лицо (лица)

Либо человек, управляющий программой, и/или наставник и ученик, вкладывающиеся в успех программы.

Как вы запускаете программу?

Шаг 1: сначала вам нужно понять потребности вашей компании.

Некоторые ключевые факторы, которые следует учитывать:

  • Продолжительность программы (3/6/12 месяцев)
  • Количество учеников
  • Кто за что отвечает
  • Что должны знать ученики перед тем, как начать
  • Чему они должны научиться в программе
  • Как они это узнают

Затем следует также разработать план:

  • Определите реалистичные ожидания
  • Установить временную шкалу
  • Спланируйте, как найти и нанять учеников
  • Развивать процессы и логистику
  • Установить бюджет

Шаг 2: исходные кандидаты

  • Как вы будете набирать и проверять кандидатов? И убедиться, что все требования соблюдены?
  • Определите, что вы ищете в ученике
  • Определитесь с уровнями оплаты
  • Решите, на каких каналах продвигать вашу программу.
  • Определите процесс найма
  • Настройте процесс найма для начального уровня
  • Установить даты в календаре
  • Выберите комитет по найму
  • Сделайте найм командным решением

Я напишу о процессе найма, который мы использовали, в последующем посте.

Шаг 3: разработайте программу

Некоторые вопросы, которые вы должны задать:

  • Какое обучение будет проводиться?
  • Что включить в учебную программу?
  • С какими компетенциями должны выйти ученики?
  • Кто будет координатором программы?
  • Как вы будете измерять и оценивать результаты учеников?

Шаг 4: как направлять

  • Установите реалистичные ожидания.
  • Подготовьте команду и наставников, например, я провел с командой сессию о том, как работать в паре с юниором. Одно и то же занятие было дано ученикам.
    Это дало всем одинаковую основу и общий язык.
  • Подумайте, как адаптировать учеников. Я начал с ознакомления со многими инженерными рабочими процессами, связанными с реальным программированием, например: как подходить к обучению, как объединять программы, как проводить проверки кода и давать отзывы, как подходить к отладке в Ruby, как проводить ретроспективы…
  • Подумайте, как проводить программу и обучение.

Шаг 5: определите успех

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

Вам также следует подумать о том, как оценивать прогресс учеников. Некоторые идеи могут быть:

  • Проект ломающейся игрушки.
  • Оценка как проект с установленными требованиями для выставления баллов.
  • Индивидуальная оценка, основанная на личном уровне уверенности.
  • Викторина в конце программы.

В Мельбурне

Довольно много компаний имеют какие-то программы поддержки новых людей, будь то программа для выпускников REA, DevelopHer от MYOB, акселератор переподготовки ANZ или программа стажировки ZenDesk. Я хотел бы особо отметить пару, Envato и Culture Amp.

У Envato есть юридическое исключение, позволяющее рекламировать только женщин. Для своей программы ученичества они нанимают двух женщин-разработчиков, у которых затем есть специальный наставник для работы.

Наш подход делает упор на захватывающий опыт, давая нашим ученикам реальные задачи в составе наших инженерных команд в паре с наставником по программированию. Это означает, что они участвуют во всем, начиная от сессий планирования, стендапов и ретроспектив, а затем парного программирования со своими назначенными наставниками.
Марио Визик

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

Молодежная инженерная программа Culture Amp проводилась дважды за последние три года. Каждая группа программы включала десять младших разработчиков. Каждый ученик-разработчик был нанят в определенную команду. Сначала они разделили рабочую неделю на два дня, работая над программой, и три дня, работая в своей команде.
Вскоре они поняли, что это работает не так хорошо из-за слишком частого переключения контекста. Поэтому программа изменилась на одну тренировочную неделю каждые три недели.

По оценке Culture Amp, выбор был сделан на Rails-проекте с установленными требованиями, которые составили 100 баллов.

Моя программа обучения: Инженерная академия в отелях Qantas

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

Большинство академических дней также состояло из теоретических занятий, работы над кодом и периодов самостоятельной работы. Полный план учебного плана можно найти на странице https://trello.com/b/oRii8I9h/apprenticeship-programme.

Программа включала:

  • Установить учебный план
  • Парное программирование
  • Во время академических недель мы начинали каждый день с упражнения по кодированию от Exercism. Мы ограничили это до одного часа в день, иначе наше утро пропало бы без предупреждения.
  • Мы следовали модели постепенного освобождения от ответственности. Сначала мы использовали групповое программирование, затем продолжили работу в парах (две группы по два человека)
    и в течение двух месяцев перешли к выполнению упражнений индивидуально.
    Каждый день мы сравнивали решения и обсуждали предложения по улучшению.
  • Студенты молниеносно рассказывают на небольшие темы, которые потом также давали на местных митапах.
  • Клуб технической книги: мы прочитали три книги за шесть месяцев, и менялись, кто проводил занятия каждую неделю.
  • Хрупкая игрушка: ученики-разработчики выполнили личный проект (следуя руководству Планы ученичества), в котором они практиковали то, чему научились, и использовался для окончательной оценки и оценки их знаний и понимания.
  • Каждые две недели 1:1 со мной и с техническим менеджером по альтернативным неделям.
  • Каждые две недели ретроспективы о том, как продвигалась программа ученичества и как мы могли бы улучшить ее по ходу дела, например, меньше домашних заданий и больше времени для практики в классе.
  • Каждому ученику-разработчику был назначен приятель-наставник, с которым они могли поговорить о своем прогрессе и задать любые насущные вопросы.
  • Групповые занятия: получение большей поддержки от команды за счет проведения некоторых более углубленных занятий, например, обучение разработчиков работе с AWS.
  • Ротация команд для практической части работы, чтобы ученики-разработчики могли испытать, как работают разные команды. Это также помогло с передачей знаний и неглубокой разрозненностью для всех инженерных групп. Команда познакомилась с учениками, и они стали частью компании.
  • Размещение: в конце программы размещение в зависимости от организационных потребностей и пожеланий ученика.

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

Резюме

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

Если вы заинтересованы в найме, разработке и/или проведении программы ученичества в вашей компании, давайте поговорим!