Зачем ВКонтакте инвестирует в обучение Go и как это меняет команду

Зачем ВКонтакте инвестирует в обучение Go и как это меняет команду

Не так давно ВКонтакте стартовала масштабная технологическая трансформация: соцсеть переходит на сервисную архитектуру, создаётся единая платформа разработки. Этот процесс потребовал значительных ресурсов и новых подходов к развитию команды. Мы усилили наём внешних Go-разработчиков и запустили внутреннюю программу переобучения сотрудников.

Я Павел Микушин, руководитель группы бэкенд-разработки направления музыкальных сервисов ВКонтакте. Недавно прошёл курс переобучения с языка РНР на Go в первом потоке, в этой статье расскажу про свой опыт.

Павел Микушин
Руководитель группы бэкенд-разработки направления музыкальных сервисов ВКонтакте

Зачем трансформация и почему Go

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

Для новой архитектуры мы выбрали язык программирования Go (Golang). Он подходит для построения высоконагруженных распределённых систем. Среди его плюсов: производительность, простота синтаксиса и встроенная поддержка параллелизма. Go широко используется для разработки масштабируемых сервисов.

Но был нюанс: часть разработчиков ВКонтакте пишут на PHP.Чтобы реализовать новую стратегию, компания поставила перед собой большую задачу — переобучить сотрудников на новый язык. Для разработчиков организовали возможность освоить Go внутри компании.

Зачем ВКонтакте инвестирует в обучение Go и как это меняет команду

Программа переобучения: принципы и этапы

Программа переобучения разрабатывалась с нуля под специфику ВКонтакте. Занятия были адаптированы под реальные кейсы и процессы внутри компании, а преподавали практикующие Go-разработчики ВКонтакте.

В основе материала и методики — базовые принципы, которые в итоге помогают участникам сразу вливаться в новые рабочие задачи:

  • «Не обучаем Go с нуля», — так сказали эксперты на первой встрече с участниками. Это значит, что разработчики сами осваивали нужную базу: например, самостоятельно вне курса изучали синтаксис Go. Такой подход позволил сразу сфокусироваться на более сложных и практических аспектах. Как выпускник курса замечу: считаю такой подход правильным. Инженер должен уметь решать задачи, а не фанатеть от инструментов
  • Фокус на архитектуре и инфраструктуре. Особое внимание на курсе уделялось вопросам построения архитектуры сервисов и особенностям инфраструктуры на Go при работе с высоконагруженными системами. Курс был ориентирован на подходы и принципы, сформированные внутри ВКонтакте, а его логика была синхронизирована со спецификой внутренней PaaS-платформы, что позволяло максимально учитывать особенности корпоративной среды
  • Практический подход. В центре программы — выполнение проекта: каждый участник разрабатывал каркас микросервиса, максимально приближенный к реальным задачам компании

Как разработчику и руководителю мне было важно, чтобы я и команда как можно скорее могли браться за реальные микросервисы на новом языке. На курсе мы поэтапно погружались в Go и разные процессы:

  • вникали в архитектуру сервисов и проектирование кода

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

  • изучали информационную безопасность, организацию окружения (Docker, Makefile, логирование), межсервисное взаимодействие и интеграции с внутренней инфраструктурой ВКонтакте

В конце обучения каждый участник защищал индивидуальный проект.

Зачем ВКонтакте инвестирует в обучение Go и как это меняет команду

После курса: работа на Go и изменения в команде

Новые архитектурные подходы мы с командой начали применять сразу после переобучения. В первый месяц скорость разработки, конечно, замедлилась — это закономерно. Но у нас есть и PHP-разработчики, и специалисты с опытом на Go, и мы не делили задачи на старые и новые. Переход на микросервисы — общий челлендж и зона роста. Так что совместная практика и поддержка друг друга помогли постепенно набрать привычный темп и ускорить процесс разработки. Мы освоились в новой парадигме асинхронности и научились лучше управлять рабочими потоками.

Если в целом говорить о влиянии программы на команду, могу выделить несколько мыслей. Есть мнение, что такие программы — формальность для корпоративной галочки. Но по своему опыту ощущения другие:

  • Мы как специалисты развиваемся стратегически вместе с компанией. Наши знания о продукте, наш опыт в том, как его улучшать, командная работа, — всё это осталось базовой ценностью для компании. Вместо массового найма с рынка ставка сделана на неё. И профит получается общим: накопленные знания сохраняются внутри компании и развиваются в новом технологическом контексте
  • Чувствуем профессиональную уверенность. Как уже сказал, мы через программу обучения логично встроились в стратегию развития компании. Так инженеры получили не только новый рабочий инструмент, но и понимание, как наш рост синхронизируется с верхнеуровневыми целями бизнеса. Всё это даёт чувство стабильности и мотивирует развиваться дальше
  • Изменение майндсета. Освоение Go и сервисной архитектуры изменило подход к решению задач — мы перешли к другому типу мышления. Команда стала более самостоятельной в принятии технических решений

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

8
1
Начать дискуссию