Непродуктовая разработка в VK
Недавно прошел лекторий «ВКонтакте на практике», на котором с докладом «Непродуктовая разработка в VK» выступил разработчик инфраструктуры Алексей Акулович.
Он рассказал, как формировалась команда инфраструктурной разработки и поделился, какими были его первые задачи в команде.
Немного истории
VK стартовал как обычный веб-сайт — существовала команда веб-разработчиков и команда тех, кто занимался базой данных.
Затем появились клиенты для Android и iOS. С тех пор появилось некое разделение: одна команда занималась веб-разработкой, а другая API для мобильных устройств. Также существовала общая база данных, которой пользовались обе команды.
Позже появились десктоп-приложение, использующее API, и полноценная мобильная версия, использующая, по сути, код web-приложения.
Common — большая кодовая база, которой пользуется каждая команда разработчиков. Алексей работает в команде, которая находится где-то на стыке между общим кодом и кодом базы данных.
Алексей пришёл в команду летом 2014 года, когда там работали примерно 12 человек. Тогда каждый занимался fullstack-разработкой и полностью отвечал за свою часть продукта.
Первые задачи
Первым заданием Алексея стал рефакторинг кода видеозаписей. На тот момент сервис пусть уже и существовал, но работал нестабильно.
Следующее задание: требовалось переписать доставку push-уведомлений. Первоначально она была написана на Node.js и не всегда работала корректно. Пуши приходили дважды или же вовсе не приходили, а могли прийти вовремя, но не тому человеку.
Следом шла довольно крупная задача: создать распознаватель музыки, чтобы другие части сервиса, например, участок, отображающий список аудиозаписей пользователя, на основе звуковой информации подобрал обложку или текст к песне, даже если их не было изначально.
Все три задачи на этом этапе никак не были связаны с прямым взаимодействием с пользователем, оттого эта разработка и назвалась «непродуктовой». Разработки использовались другими командами для реализации какой-либо фичи, которые в дальнейшем применялись пользователями.
Судьба команды
К 2015 году уже начала собираться полноценная команда backend-разработчиков, которая занималась проектом только изнутри.
Команда инфраструктурной разработки работала с самыми различными сервисами.
Количество бэкенд-разработчиков в 2019 году возросло до 13.
Каждый в команде знает 4 языка разработки.
С увеличением штата росли и возможности. Ожидаемо увеличился и объём работ.
Широкий спектр задач требует совершенно разного опыта, поэтому каждый разработчик может подобрать или даже придумать то, что интересно именно ему.
Много задач — много багов. Мало того, другие команды зачастую просят что-то исправить или реализовать именно у команды инфраструктурной разработки.
Приходится аккуратно работать с внешними файлами или потоками данных, которые, в случае чего, нельзя перезапросить: если данные испорчены — они потеряны. Допустим, если потеряна фотография пользователя, в лучшем случае он может её перезалить, но если испорчены логи какой-либо команды — взять их попросту неоткуда.
Из-за того, что команда Алексея занимается нижележащим кодом, разработчики вправе сами выбирать инструменты, которые наиболее подходящим образом решают конкретную задачу.
Как наверное уже стало понятно, основными потребителями плодов команды инфраструктурной разработки являются их же коллеги, что имеет свои положительные стороны.
У команды всё классно!
Запись выступления можно посмотреть ниже.
The Brown Room — независимое интернет-издание про социальные сети и современные технологии
Автор: Илья Филиппов
Корректоры: Лена NL / Арсений Метелев
Слайды и данные: VK Education / Алексей Акулович
