Техническое обучение в ASOS

May 03 2023
Одно из многих преимуществ работы в ASOS Tech Одним из приятных преимуществ, доступных инженерам ASOS, является бесплатное техническое обучение. Мы проводим ежемесячные сеансы в Docker, Kubernetes, AKS и CI/CD.

Одно из многих преимуществ работы в ASOS Tech

Одним из приятных преимуществ, доступных инженерам ASOS, является бесплатное техническое обучение. Мы проводим ежемесячные сеансы в Docker, Kubernetes, AKS и CI/CD. Мы также предлагаем курсы «разработчиков программного обеспечения», «молниеносные разговоры» и курсы по шаблонам проектирования.

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

Ну… как я сюда попал?

Я программист-самоучка, который начал программировать в конце 1980-х в Сан-Франциско, когда изучал музыку в университете. С тех пор я сохранил две карьеры, работая профессионально инженером-программистом и музыкантом.

Я изучил .NET в середине 2000-х, переехал в Лондон в 2008 году и работал на постоянной и контрактной должностях, в основном выполняя внутреннюю работу с технологиями Microsoft (C#, .NET), а также фронтенд с ASP.NET / MVC. , Реагировать и Угловой.

В начале 2020 года я стал старшим инженером-программистом ASOS, работая в команде Browse над микросервисами, такими как API поиска и категорий.

Как и многие команды ASOS, в то время мы переносили классические облачные сервисы Azure на Kubernetes и AKS, но команда Browse была в авангарде. Я понял, что мне нужно больше узнать об этом стеке технологий, поэтому я воспользовался предлагаемыми бесплатными внутренними курсами технического обучения.

Потом случилась пандемия. Программа обучения немного застопорилась, затем мы начали проводить занятия онлайн через MS Teams. Прозвучал призыв к большему количеству добровольцев для обучения. Я подумал, что участие в преподавании было бы хорошим способом заставить себя более тщательно изучить эти технологии, чтобы быть более эффективным в своей повседневной работе.

Типичный путь обучения для студентов состоит в том, чтобы сначала пройти курс; затем «теневой поезд» (смотрите, как проводится обучение, учитесь у ведущих); затем, пройдя некоторое обучение и подготовку, станьте ведущим тренером. Я начал делать это с нескольких предметов (в основном Docker и Kubernetes), обнаружил, что мне это очень нравится, и стал очень активным в программе обучения.

ASOS Tech активно поощряет людей становиться тренерами — чтобы наставлять других инженеров, а также для личного развития — но, естественно, это и в интересах компании. Наличие более образованной команды инженеров помогает ASOS Tech более эффективно создавать отличное программное обеспечение.

Нам понадобится более крупное приложение

Сначала административная часть была полностью ручной; мы отслеживали сессии и стажеров на вики-странице в Confluence. Я подумал: «Это требует приложения». Поэтому в свободное время я создал полноценный внутренний веб-сайт с интерфейсом React, серверной частью .NET Core и базой данных SQL с Entity Framework. Я вручную перенес данные со страницы вики в БД, привел их в форму, достаточную для демонстрации, и, таким образом, создал MVP приложения «Training Course Manager» («TCM»).

Еще одним интересным аспектом ASOS является то, что очень поощряются проекты с внутренними источниками. Так что я был очень взволнован, когда команда приняла TCM. С небольшой помощью главных инженеров и специалистов по инфраструктуре мы поместили его в контейнер, написали конвейеры DevOps и диаграммы Helm и развернули его в AKS. Как и все программное обеспечение, оно все еще находится в стадии разработки, но для меня это был счастливый день, когда TCM заработал!

ТКМ… в разработке…

Дэйв получает концерт

Затем, в начале 2022 года, я узнал, что ASOS создает официальную должность «Инженер-тренер». Я подумал, что это будет прекрасная возможность продолжить работу, которой я раньше занимался в свободное время.

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

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

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

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

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

Сделайте вещи последовательными

Одним из важных аспектов облегчения обслуживания является установление стандартов структуры учебного материала независимо от преподаваемого предмета. Типичный каталог материалов курса будет содержать уцененный файл плана преподавателя (показывающий программу однодневного или двухдневного курса); файл полезных ссылок (содержащий гиперссылки на соответствующую дополнительную литературу по темам); папки «labs» и «demos», содержащие практические лабораторные упражнения и демонстрационные сценарии; каталог «слайды», содержащий файлы уценки, которые представляют собой исходный материал для слайдов; и каталог «опубликованных слайдов», содержащий выходные данные PPTX.

Типичная структура курса

Это как волшебство

Трудно увидеть различия при изменении файла PowerPoint. Другими словами, когда что-то меняется, и вы пытаетесь просмотреть запрос на вытягивание, невозможно увидеть, как слайд PowerPoint или заметки докладчика выглядели раньше, по сравнению с тем, как они выглядят сейчас.

Чтобы решить эту проблему, мы решили, что нам нужно текстовое решение, из которого мы могли бы автоматически генерировать файлы PPTX. Для этого есть ряд решений (например, мы также попробовали Reveal.js); но в итоге мы выбрали Марпа . Он позволяет редактировать файлы .md, представляющие собой смесь уценки, HTML и CSS. Заметки докладчика записываются в виде комментариев HTML. CSS делает колоды похожими на стандартные слайды ASOS.

Мы по-прежнему представлены в PowerPoint (совместное использование в Microsoft Teams). При локальной разработке колоды вы можете вручную экспортировать в PPTX, но мы автоматизируем это с помощью действия GitHub — после слияния команды Marp автоматически генерируют файлы PPTX. У нас также есть еще один набор действий GitHub для публикации «выпуска», поэтому, например, когда студент проходит курс Docker, ему не нужно клонировать весь репозиторий учебных материалов; выпуск публикуется в виде zip-файла, который содержит последние материалы курса.

Подойди к лаборатории

Стажеры выполняют практические лабораторные упражнения, которые требуют регулярного обслуживания и обновления. Например, меняются версии Docker и Kubernetes; Microsoft меняет способ обработки удостоверений в AKS; меняются политики лицензирования и т. д. И мы меняем наши методы работы, поскольку наши основные команды AKS и Kubernetes разрабатывают новые артефакты, шаблоны и совершенствуют наши передовые методы. Например, они установили «базовые образы основных контейнеров», которые можно использовать для приложений в службе Azure Kubernetes, службах приложений Azure или других приложениях на основе контейнеров. Все эти вещи требуют регулярного выполнения лабораторных упражнений, чтобы убедиться, что они по-прежнему актуальны.

Автомат для людей

Мы всегда ищем способы улучшить и автоматизировать управление курсами, чтобы облегчить жизнь как тренерам, так и стажерам. Например, приложение поддерживает список ожидания людей, заинтересованных в прохождении курса, и когда сеанс запущен, администратор может отправить электронное письмо всем в списке ожидания одним нажатием кнопки. Еще один щелчок создает событие календаря Outlook и канал Teams, которые будут использоваться для доставки сеанса. Приложение знает о предварительных требованиях, поэтому, например, оно проверяет, что вы уже прошли курс Docker, прежде чем вы сможете присоединиться к сеансу Kubernetes.

Цель!

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

Ищу несколько хороших тренеров

Это не все единороги и радуги. Одной из задач, над которой мы работаем, является расширение нашей команды тренеров. Потому что (кроме меня, чья работа заключается в обучении) для моих коллег-тренеров это, по сути, добровольно. Как правило, существует основная группа преданных своему делу главных, ведущих и старших инженеров, которые проводят обучение, потому что они этого хотят; но реальность такова, что нам нужно больше тренеров. Почему кто-то должен брать перерыв для проведения обучения, если у него есть напряженная дневная работа по созданию отличного производственного программного обеспечения для ASOS? Каждый месяц мне нужны четыре или пять инструкторов, которые будут сопровождать меня, чтобы проводить необходимые курсы. Как я могу получить нужных мне людей устойчивым образом?

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

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

ASOS взяла на себя обязательство разнообразия, справедливости и инклюзивности, запустив стратегию FWI («Мода с честностью») — «Будь разнообразен». Наши первоначальные цели сосредоточены на достижении 50-процентного представительства женщин и более 15-процентного представительства представителей этнических меньшинств в нашей общей руководящей команде к 2023 году и на каждом уровне руководства к 2030 году. ) ролей к 2030 году. Узнайте больше наhttps://www.asosplc.com/news/asos-announces-ambitious-new-2030-esg-goals/

Вы должны верить

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

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

Но если вы получаете вопрос, на который не знаете ответа, вам не нужно смущаться по этому поводу; никто не знает всего. Вы можете просто сказать, что не знаете; вы изучите его и вернетесь к стажеру; затем проследите и сделайте это, в идеале, до окончания курса. Это научит вас обоих чему-то, чего вы не знали. Ученик будет (надеюсь!) уважать вас за то, что вы признали, что не знали, но потом продолжили; и, узнав что-то на собственном горьком опыте, в конце концов, это то, что вы вряд ли забудете!

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

Игра началась!

Мы ищем пути решения нашей проблемы с поставками тренеров, например, «исправление игры» в приложении, создание списков лидеров для отдельных лиц и команд и раздача бесплатных подарков (бесплатные обеды, кофе, футболки, кружки и т. д.). Но этого все еще недостаточно. Мы также работаем с инженерами и инженерами-менеджерами, чтобы создать более ощутимые стимулы для обеспечения постоянного притока инструкторов в программу обучения. До сих пор программа хорошо работала с нашей специальной основной группой, но нам нужно расширить команду по обучению — и мы активно работаем над этой проблемой. Наблюдайте за этим пространством.

Другие вопросы и проблемы

Дело в том, что разработать качественный обучающий курс просто сложно. Мы научились этому, пытаясь возродить наш курс «Разработчики программного обеспечения», который несколько потерял свою актуальность во время пандемии. Что вы включаете, а что упускаете? Как вы структурируете материал на кусочки размером с укус, возможно, с короткой беседой и более длинным лабораторным упражнением, ката или упражнением по парному программированию? У людей разные стили обучения; как вы их размещаете? Как вы примиряете разные мнения о том, что является хорошей практикой, например, для TDD? Как вы сохраняете знания людей свежими, помогаете им практиковаться после окончания курса и не даете материалу устаревать? Мы работаем с нашими партнерами, а также смотрим на реальные примеры успешных обучающих программ и обучающих приложений,

Живи в эфире!

Выводы

Я начал преподавать, потому что хотел учиться — так что я определенно выигрываю в этом отношении. Каждый день приносит новые вызовы и возможности улучшить ситуацию. Это действительно интересная задача — разработать программу обучения мирового класса для такой сложной организации, как ASOS Tech, с требовательной аудиторией уже высококвалифицированных инженеров. Мне очень повезло, что у меня есть возможность помочь своим коллегам-инженерам улучшить свои навыки и сделать прекрасное место для работы еще лучше.

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

Я Дэйв Бэрроуз, инженер-инструктор ASOS Tech. Я провожу учебные курсы по Docker, Kubernetes, AKS, DevOps, а также по написанию кода и созданию программного обеспечения. Я также музыкант и продюсер со своим собственным независимым лейблом и домашней студией; Я регулярно играю в Лондоне и других местах.