От игры про НЛО до спецпроектов
Владимир вырос в северных районах Москвы и учился в частной школе с углублённым английским: мама, учительница русского, решила, что в государственную школу сын не пойдёт. Классы по четырнадцать человек и английский на уровне C1 он называет главным преимуществом школы, а математика с информатикой были там базовые. Александр вспоминает собственную маму-учительницу и нелюбовь к тому, когда его учат; Владимир отвечает, что дома его не пушили, а единственная четвёрка в аттестате была как раз по русскому. Тяга к программированию появилась на даче у друзей семьи: студент ВМК показал написанную им самим игру про НЛО с холмами и деревьями, и захотелось так же. К дополнительному экзамену по математике он готовился в частной группе из шести человек, четверо из которых поступили на ВМК. На кафедре алгоритмических языков он перебрал Lisp, Haskell, Prolog, Objective-C и JavaScript, а тройку получил по операционным системам — за ответ, что аргументы системного вызова всегда можно посмотреть в man.
Менеджмент начался со студенческой организации: помогали не вылететь, добивались материальной помощи, а два года председательства дали мероприятия с командой в сто человек и двумя тысячами участников. Сравнив себя с однокурсниками, Владимир решил, что миру не нужен ещё один средненький кодер, и ушёл проджект-менеджером в маленькое digital-агентство. Дальше был банк, где начинающего специалиста тогда брали с одного собеседования: Александр сидел на том собеседовании вместе с Костей Ермаковым и Антоном Костериным. Первые полгода Владимир выбрал R&D-команду по длине цикла обратной связи — неделя против месяцев и полутора лет у соседей — и делал там конструктор баннеров для рекламной сети Яндекса, анализатор органического роста блогерских аккаунтов и админку турнира по Dota 2, где в финале сотрудники играли против клиентов. В маркетинговых спецпроектах он планировал от дедлайна назад и вкладывался в шаблоны и переиспользуемые кубики, чтобы поток проектов рос без роста нагрузки.
Журнал: доверие, движок, релизный поезд
В медиапроектах, которые делали журнал Т—Ж и Т-помощь, разработка была непредсказуемой, а доверие потеряно с обеих сторон: редакция помнила два месяца фриза фичей ради переезда на новый движок из Python-микросервисов, который так и не состоялся. Устройство сайта к тому моменту напоминало археологию: WordPress, потом кастомный движок на Django, рядом второй Django-монолит для профилей и комментариев, поверх — React, но страницы всё равно рендерила Django, ходившая в React за server-side rendering и вставлявшая динамические блоки в свои шаблоны. Чтобы обновить иконку, иногда требовался совместный релиз фронтенда и монолита. Монолит был тяжёл и когнитивно: даже написавший его архитектор уже не помнил, что там есть, — лент в системе оказалось пять вместо одной-двух. Ядро было девять человек: пара тестировщиков, три Python-разработчика и фронтендеры, а рядом — маленькая команда из трёх человек на интерактивах: калькуляторах и тестах, ближайший аналог которых сегодня, по словам Владимира, мини-приложения в Telegram. Александр, оговариваясь, что было это ещё до прихода Владимира, водил эту команду на Python-конференцию с докладом о переезде с WordPress на Django — ездили Вадим Гончаров, гость примерно тридцатого выпуска, и архитектор.
Чинили с двух сторон: продуктов учили резать скоуп и выпускать маленькое, но живое, вместо долгого и протухшего, а разработку — дробить работу на итерации и катить под фичафлагами. Отдельно Владимир разделял оценку и коммитмент: «пара недель» в ответ менеджеру — это срок в вакууме, и через две недели задача может быть даже не начата. Технически надо было расшить релизный поезд в монолит, куда задачи заезжали быстрее, чем тестировщики успевали их смотреть, а автотестов не было. Позже появилась система планирования под заказчиков первого и второго порядка — когда в Jira одновременно висят «убрать ленту» и «перевести её на SSR». Реорганизацию он провёл, по его словам, как по методичке из первого выпуска Code of Leadership со Стасом про Team Topologies: за два года получилось около пятидесяти человек на три медиа, мобильное приложение и собственную LMS.
Travel-tech, архкомитет и советы напоследок
На похороны старого движка бывшие коллеги позвали его уже после ухода: рефакторинг занял почти три года, а медиа за это время выросло с шести до тридцати миллионов читателей. Медиапроекты он оставил на пороге платформизации — выделения общей медиаплатформы для группы компаний — и уехал в Белград, откуда совмещать работу с банком было тяжело: офиса в регионе у банка нет и не планируется. Дальше был travel-tech, известный в России брендом «Островок»: после ухода Booking компания росла взрывными темпами, и на непрофильные направления — авиабилеты, трансферы, ЖД и запуск аренды машин — у CTO уже не хватало рук. Наследство было экспериментальным: одна система на Go, вторая на Go и Python, третья — монолит на Django. В авиа команда перед его приходом вымылась целиком, тестам доверять было нельзя, и на четырёх бэкендеров приходилось пять тестировщиков: цена ошибки здесь не потерянный комментарий, а невыписанный билет при списанных деньгах.
За девять месяцев отдел вырос с двадцати до тридцати двух человек, занялся автотестами и получил техническую стратегию по журнальному образцу: сервисы уходили в отказ на трёх-четырёх RPS, значит нужна целевая картинка и этапы, где первый расписан подробно, а дальше схематично. Ушёл он после смены CTO: Владимир видел архитектурный комитет как центр компетенций, куда наработки приносят добровольно, а новый руководитель — как надзорный орган, блокирующий кросс-командные проекты; по его сведениям, за полгода комитет не собрался ни разу. Александр добавляет историю про управление тестирования, предлагавшее «сначала напиши код, потом найдём ручников». Сейчас Владимир консультирует: делал SSR-обвязку поверх Tilda с раздачей через Cloudflare, потому что реклама вела на сайт, грузившийся десять секунд; маятник, по его наблюдению, качнулся обратно к статической генерации, и для многих медиа это снова хорошее решение. На прощание он советует не бояться ответственности, читать классику про data-intensive-приложения и «Пиши, сокращай» — книгу, ультимативность которой Александр не принимает.
Что стоит унести с собой
- 01Оценка и коммитмент — разные вещи: «пара недель» это срок в вакууме, и через две недели задача может быть даже не начата.
- 02Доверие между редакцией и разработкой чинится с двух сторон: продукты режут скоуп до маленького живого релиза, разработка дробит работу и катит под фичафлагами.
- 03Пять тестировщиков на четырёх разработчиков — следствие отсутствия автотестов и цены ошибки в деньгах; ручной контроль окупается разве что при редких релизах или в самом начале, когда системы ещё нет.
- 04Позиционирование решает: архитектурный комитет как центр компетенций притягивает проекты, а как блокирующий надзор — не собирается ни разу за полгода.