Как устроена разработка в VK

Сегодня мы поговорим о том как устроена разработка ПО в одной из самых известных Российских компаний. С нами на связи Александр Цветков технический директор продуктивити-сервисов в VK и Андрей Морозов CEO FIRECODE.

Как устроена разработка в VK

VK объединяет коммуникационные и развлекательные интернет-сервисы, являясь лидером по размеру дневной аудитории в России. В портфеле компании находится более сотни проектов в сфере высоких технологий. Хотя основную деятельность VK ведёт на российском рынке, её материнский холдинг зарегистрирован на Виргинских островах. Депозитарные расписки компании торгуются на Лондонской и Московской фондовых биржах.

Александр Цветков
CTO продуктивити-сервисов VK

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

Команда

В VK трудятся порядка 10 тысяч сотрудников, которые так или иначе связаны с ИТ. Александр работает в одном из крупнейших подразделении, которое занимается почтой. И как все знают, с этого бизнес-юнита начиналась история компании Mail.ru, поэтому данный отдел пронизан духом и культурой, которая начиналась еще у истоков компании.

Также отдел Александра связан с Облаком Mail.ru, которое является одним из первых облачных хранилищ в России. Облако, изначально, появилось как дополнение к основному почтовому сервису, и туда попадали большие файлы, которые невозможно прикрепить к стандартному письму. В дальнейшем “Облако” переросло в полноценный функциональный сервис.

В команде Александра трудятся порядка 40 специалистов, а всего в подразделении около 600 специалистов, которые разбиты на 50 команд и распределены в матричной структуре на 4 вертикали продуктовых направлений и несколько горизонталей. Горизонталями в VK называют продуктовые направления, такие как front-end, back-end и другие. Такая, на первый взгляд, сложная структура позволяет осуществлять грамотное и быстрое управление командами.

FIRECODE сотрудничает со многими российскими ИТ-компаниями, и можно с уверенность сказать, что в VK реализована одна из лучших структур по управлению разработкой. Это позволяет не только эффективно работать внутри команд, но и эффективно подключать внешние команды.

Состав команд

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

Андрей Морозов из FIRECODE рассказывает, что размер команд в VK зачастую небольшой, так как у многих коллег, размер команд составляет 10-20 специалистов. Бывает, что команда FIRECODE подключается к проекту, где профильные команды (например - тестирования) превышают 30-40 специалистов.

Многих интересуют, как применяются практики DevOps в VK и много ли такого рода специалистов в компании.

Подключение внешних команд

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

Судя по ответам Александра, VK больше всего применяет аутстаффинг нежели аутсорсинг, этот подход, как правило, используют большие компании с огромным опытом в ИТ. Александр пояснил, что в компании отлично выстроен процесс онбординга, все процессы регламентированы, имеется достаточно много документации, обучающих видео и чек-листов.

В компании существуют процессы по обсуждению и принятию технических решений.

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

Как дела обстоят с молодыми специалистами?

VK очень часто нанимает стажеров и молодых специалистов из собственных образовательных проектов, поэтому наличие обучающих материалов для онбординга - жизненно необходимо. Образовательные экосистемы компании очень важны, они не только развиваются как отдельный бизнес, но также позволяют компании получать отличные кадры. В холдинг входят самые крупные edTech площадки, такие как Skillbox, Geekbrains, SkillFactory. Также VK активно развивает образовательные проекты в ВУЗах, тем самым закладывая отличный фундамент для будущих специалистов. Корпоративная культура образования в VK очень располагает, поэтому более 200 сотрудников компании выступают преподавателями в ВУЗах. Более подробно об образовательной деятельности написано тут https://education.vk.company/.

Кроме того для начинающих и уже опытных специалистов компания VK проводит постоянные митапы и выступления на технологических конференциях, таких как Highload, HolyJS и др.

Технологии

У компании большое количество как внутренних, так и внешних продуктов, которые поддерживаются на протяжении длительного времени. Из всего этого многообразия порой встречаются интересные сочетания технологий. Но если говорить про общепризнанные практики, то для VK это - Go на бекенде, Typescript+React на фронтенде, Kotlin\Swift для мобильной разработки и PostgreSQL, Tarantool, Redis, Mongo в качестве хранилищ. Но для ключевых хранилищ используется собственные разработки, о чем много рассказывается сообществу. Например, на недавно прошедшем Highload специалисты VK рассказывали, как устроено хранилище Почты. Кроме того, в компании достаточно много кода на Python, порой встречается C/C++ и даже Rust. Ввиду большого количества проектов, специалистов и требований, компания не ставит себя в рамки и готова экспериментировать.

Много ли легаси на проектах?

Это немного каверзный вопрос, но Александр достаточно развернуто на него ответил. В компании есть довольно старые проекты с огромной кодовой базой, например Почта, которой в этом году исполнилось 24 года. Когда речь идет о нескольких десятках лет непрерывной эксплуатации, то необходима определенная стратегия работы с кодовой базой, чтобы она не превратилась в легаси. Просто работать над ее качеством порой недостаточно, нужна определенная стратегия и горизонт планирования.

Александр приводит довольно яркий пример. Изначально почта была написана на языке Perl и успешно развивалась в течение многих лет - писались новые фичи, рефакторился код, работали над техдолгом. Однако, примерно 9 лет назад, команда поняла, что поиск perl-разработчиков становится все более сложной и дорогой задачей, а молодые ребята не хотят изучать “непопулярный” язык. И кодовая база стала “превращаться” в легаси.

Было принято сложное, но оправданное решение - полностью переосмыслить ситуацию, провести большое количество исследований и выбрать в качестве нового основного языка Go. Кстати, VK стала одной из первых в России компаний, кто принял такое решение. Компания инвестировала много ресурсов в популяризацию данного языка и развитию комьюнити. Например, VK стала преподавать разработку на GO в собственных образовательных проектах. Благодаря этим решениям в компании практически не осталось Perl’а, его заменил Go. Такие процессы по улучшению происходят непрерывно. Для VK важно работать не только на тактическом уровне (отрефакторить кусок кода, продумать процесс непрерывного улучшения кодовой базы без остановки бизнеса), но и на стратегическом - “а будут ли через 5 лет специалисты, которые смогут поддерживать наши системы, будет ли существовать эта БД или ЯП и т.д”.

Управление задачами и производством

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

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

Редкие и интересные технологий в VK

Из собственной практики Александр упоминает Svelte, о нем много пишут и говорят, но он довольно редко встречается на практике в средних и крупных проектах, но в VK нашли ему изящные применения на главной странице и портальной навигации, и очень довольны выбором. Еще из “редкого” - это Rust. С помощью него написано несколько сервисов, в том числе сервис для деплоймента фронтенд-проектов.

Отдельно Александр отметил технологии, от которых они вынужденно отказались, например это некогда “модный” Appium на iOS, на его смену пришел XCUI, как более нативное решение, понятное iOS-разработчику.

Поговорим о тестировании

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

Грейдирование специалистов

Очень часто, в крупных компаниях своя система грейдирования, и порой она сильно отличается от общепринятой (junior, middle, senior). Но в VK придерживаются более простого, но понятного грейдирования, тем самым показывая рынку и сотрудникам свою технологичность. Использовать непонятные грейды (уровни), такие как набор букв и цифр дело прошлых лет, в современной компании должно быть всё по другому.

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

Наставничество решает

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

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

Жизненный цикл специалиста

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

KPI для разработчиков/команд

На текущий момент в VK не используют KPI для разработчиков. В компании ставят цели , которые направлены на развитие их компетенций. При этом у команд есть OKR, которые позволяют фокусироваться на важных направлениях - например, улучшение NPS, рост DAU/MAU и других показателей. Этот подход позволяет синхронизировать командные и индивидуальные цели и обеспечить эффективный контроль над реализацией поставленных задач.

Метод OKR был разработан в корпорации Intel, после чего получил распространение в ряде крупных технологических компаний, в том числе в Google, LinkedIn, Zynga.

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

Морозов Андрей 
CEO FIRECODE
1818
3 комментария

Боже, какой пустой, бессодержательный текст(

5

Ну почему все такие статьи написаны таким ужасным копирайтным текстом?! Выкиньте 90% бессмысленных слов, добавьте фоточек офиса, приведите пару живых примеров и читать будет интересно.

4

Комментарий недоступен

2