Как Разработчиков Php/Python В Lamoda Учат Писать На Go

Привет! Меня зовут Михаил Мохначев, я тимлид команды Core компании Lamoda. Наша команда посвятила себя обеспечению работы сайта и системы приема заказов, что бы ни случилось.

Мы очень активно используем язык Go — 95% трафика проходит через сервисы, написанные на нем.

Но есть еще сервисы на PHP и Python. У нас постоянно возникает много новых задач, а также мы накапливаем технический долг, с которым необходимо разобраться.

Поэтому мы часто нанимаем новых сотрудников.

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

В принципе, разработчиков Go на рынке немного, и еще меньше разработчиков Go, которые также хорошо знают PHP/Python. Поэтому мы решили подойти к этой проблеме иначе: нанимаем разработчиков PHP или Python и учим их писать сервисы на Go по рецепту Lamoda.

Как разработчиков PHP/Python в Lamoda учат писать на Go

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

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

Разные компании, использующие его, могут иметь очень разные методологии.

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

Техническая адаптация Go в Lamoda :
  1. Это справочная статья по Confluence.
  2. Состоит из нескольких этапов.

  3. Рассчитан на выполнение за 2 недели.

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

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

ЭШаг 1: предварительный Время прохождения этапа: 1 день.

Создание онбординг-задачи , в котором сотрудник фиксирует время и учится работать с нашим трекером задач.

Настройка среды на новом рабочем ноутбуке сотрудника.

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

ЭШаг 2: теоретический Время прохождения этапа: примерно 2 дня.

Го Теория — знание языковой документации и основных практик.

Все необходимые ссылки собраны в нашем руководстве по Confluence. Экскурсия по Го — каждый сотрудник, изучающий язык, проходит этот вводный курс, который является стандартом в изучении разработки на Go. Знакомство с нашими внутренние спецификации и требования (например, с соглашением об именах для методов API), которому необходимо будет следовать в будущем при разработке.

ЭШаг 3: создание собственного сервиса Время прохождения этапа: неделя или чуть больше.

Сотрудник сам придумывает тему для обслуживания.

Это может быть что угодно, от некоего подобия Redis до игр типа морской бой и т. д. Но есть обязательные требования: у сервиса должны быть «дескрипторы» для общения с другими сервисами, и он должен взаимодействовать с базой данных.

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

Новичок создает свой сервис обучения по тем же инструкциям.

Поскольку мы используем подход «Сначала спецификация», первое, что делает сотрудник, — это пишет Спецификация OpenAPI ваш сервис.

Затем на основе этого создается базовый код приложения с помощью генератор гоги .

После этого новичок начинает описание непосредственной логики ваше приложение.

Руководство описывает все основные команды и содержит ссылки на более подробную документацию по используемым инструментам.

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

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

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

Чтобы не тратить на это время, мы записали имена в специальную статью в Confluence — там же знакомят нового сотрудника.

Следующий этап - тестирование .

С юнит-тестированием в Go всё в порядке — оно по сути встроено в язык и описано в документации.

А для функционального тестирования мы используем инструмент Gonkey (у нас есть целый статья ).

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

Важная часть руководства - ссылка на боевую службу .

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

Это также помогает поддерживать актуальность руководства.

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

На третьем этапе к нам присоединяется новый сотрудник.

рабочее общение .

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

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

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

Этап 4: инфраструктура На этом этапе сотрудник интегрирует созданный им сервис в нашу систему.

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

А еще что docker и файлы компоновки docker необходимо создать так, чтобы приложение можно было развернуть через Бамбук в производственной среде и чтобы другой разработчик мог развернуть его локально.

Результат технического ввода Что получает новый сотрудник?

  • Он изучает Го не только теоретически, но и практически.

    Вот как это работает для нас.

  • Изучает все наши инструменты для создания сервисов.

  • Знание инфраструктуры.

Причём это происходит в комфортном режиме обучения: без стресса и дедлайнов.

Что получает Ламода?

  • Знакомимся с новичком поближе, видим, как он пишет код. Не что-то краткое на бумажке во время собеседования, а полноценная услуга.

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

  • Мы можем выбрать первые рабочие задачи, которые ему наиболее подходят.
Хочу подчеркнуть, что с помощью технического онбординга мы не пытаемся создать Го-гуру, знающего все от и до.

Наша задача — научить человека писать сервисы по рецепту Ламода.

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

Мы успешно работаем и справляемся с требованиями бизнеса и планируем продолжать использовать этот принцип найма в будущем.

Теги: #python #Go #php #onboarding

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