Военный городок, гимназия и QBasic
Даниил поправляет ведущего: в компании он не восемь лет, а семь — ровно с августа, зато официальный стаж в ИТ ровно двадцать лет, потому что первая запись в трудовой книжке появилась в 2005 году, на третьем курсе. Его подразделение выросло из проекта с кодовым названием 100M: бизнес начал быстро расти, и системы надо было к этому готовить. Оттуда же практика архитектурного ревью, к которому готовится команда, а разбирают представители ключевых вертикалей — информационной безопасности, инфраструктуры, надёжности, продуктовых направлений; из тысяч сервисов смотрят бизнес-критичные и выше. Даниил сразу делает помарку: мерить масштабируемость и надёжность он предпочитает не у сервиса и не у системы, а у услуги для пользователя. Вырос он в семье военного, в маленьком городке в Красноярском крае с единственной школой, где сильными преподавателями часто оказывались жёны военных, и в детстве собирался стать военным врачом.
В седьмом классе семья перебралась в Нижний Новгород, и мама устроила отличника в городскую педагогическую гимназию с тремя языками — немецким, английским и латынью — и уклоном в гуманитарные науки. В ИТ его вывела учительница информатики Светлана Николаевна: своего компьютера долго не было, он зависал в школьном классе с машинами на Windows 3.1, где она открыла ему бейсик. 3D Max тогда был доступен единицам, поэтому вдвоём они решили добавить третью ось обычными математическими преобразованиями прямо в QBasic: двумерная фигура превращалась в трёхмерную и вращалась по заданным параметрам. Этой школьной научной работе он отдал два старших класса и честно признаёт, что сложные преобразования с интегралами копировал не понимая — разобрался уже в университете, куда пошёл на радиофак вслед за сильным школьным физиком, а к третьему курсу перевёлся на ВМК. Физикам он всё равно благодарен: они учили думать, и зачёт у них сдать было сложнее, чем экзамен.
Справочники, реклама и бан в Яндексе
Зарабатывать он начал рано: собирал системные блоки, а когда вышел Flash MX, писал на ActionScript баннеры и обвязки — по сути рекламу. На третьем курсе вместе с однокурсником и его старшим братом взялся за собственный продукт XMS, Extended Management System: коробка с подключаемыми модулями, задуманная как нечто большее, чем обычная CMS. Деньги на разработку приносили сайты — дизайнер рисует, они верстают и деплоят по SFTP, — а потом появились заказчики из США с интеграцией PayPal и обучающими системами: спрос на онлайн-обучение был уже в 2006–2007 годах, хотя, добавляет Александр, взрыв случился позже, вместе с массовыми онлайн-курсами. Следующим заказчиком стал национальный альянс создателей справочников, на который вышли в Нижнем Новгороде, — конкурент Yellow Pages, осознавший, что бумага уходит: команда цифровала весь цикл — код для вёрстки книжек, систему информационного отдела, личные кабинеты.
Там же случился первый урок клиентоориентированности: красиво переписанную форму информационный отдел встретил секундомером — старую, «уродскую», сотрудница заполняла за 35 секунд, новую за три минуты, и полгода работы пришлось похоронить. Хайлоад пришёл вместе с ростом: справочники выходили в полусотне городов, до шести-восьми тысяч уников в день и всплески в 300–400 RPS заставили думать про масштабирование и инвалидацию кешей, а звонки отслеживали пулами выделенных номеров — Александр называет это call tracking. Монетизация, по осторожной формулировке Даниила, «в какой-то степени убила» пользовательский опыт: руководство просило поднимать в выдаче не самые релевантные карточки, продуктовой аналитики не было, люди искали всё реже, а в ответ звучало «деньги идут, занимайтесь своим делом». Сильным ударом стала переоптимизация: Яндекс забанил всю сетку, трафик упал примерно в тридцать раз и возвращался год. Даниил ушёл сам — в аутсорс с госзаказами, где внутри пробовали XP и Agile, а снаружи стоял ГОСТ с прибитым гвоздями скоупом и работой сутками за месяц до сдачи.
RTB-стартап, банк и авторизация физлиц
За хайлоадом, о котором рассказывали на конференциях, он уехал в Москву и вместо привычного «выходи на работу» обнаружил очередь на вакансии. Взял его RTB-стартап, и по просьбе Александра Даниил расшифровывает термины: SSP регистрирует площадки, готовые отдать рекламный блок; DSP настраивает стратегию и торгуется на аукционе второй цены по протоколу Open RTB; DMP из склеенных эвристиками кук собирает неперсонализированный портрет — пол, возраст, интересы, — чтобы менеджер нацелил креатив на конкретный сегмент, а расчёт шёл по CPA или CPM. Александр добавляет, что на американском рынке программатик консолидировался ещё в середине 2000-х, а Google в своё время купил DoubleClick. Инвестор, доктор экономических наук, заработавший на стройке, относился к этому как к интересу и не мешал экспериментировать: в стеке уживались C++, PHP, Java, Hadoop и Vertica. Александр предполагает вакуум власти, где лидом становится тот, кто вносит порядок, но Даниил добавляет: были сильный CTO и менеджеры, приносившие современные практики — оценку задач через Planning Poker, демки и ретроспективы. Ретро выходило кривым, пока не позвали внешнего эксперта: отсюда совет не бояться просить помощи.
В банк Даниила позвали бывшие коллеги, а собеседовал его Александр — вдвоём в переговорке человек на двадцать, потому что остальные интервьюеры не дошли; вводную речь новичкам читал тогдашний исполнительный директор Оливер Хьюз, и его «не бойтесь ошибаться, делайте» гость повторяет до сих пор. Задачи оказались знакомыми: купленная в 2012 году рекламная платформа, где менеджмент-система была control plane, а data plane писали на C++ и Scala. Монолит разделили на SSP, DSP и DMP, но обязательства сразу перед всеми заказчиками дали эффект, который Александр сравнивает с раздачей восьми CPU при одном имеющемся, а матричная структура заставляла разработчиков каждые два-три дня вспоминать чужой домен. Дальше Александр отдал ему проект авторизации физлиц: год каздева, quality-атрибуты и ограничения вместо списка плюсов и минусов, PoC с нагрузочными тестами — и открытие, что расхваленное опенсорсное решение рассчитано на другой профиль нагрузки. Модель упростили, сохранив совместимость контрактов, зато команда стала центром экспертизы по распределённым базам. Напоследок — про work-life balance, лягушку с утра и фиксированное время на обучение; архитектурное ревью обещано вторым выпуском.
Что стоит унести с собой
- 01Годовой каздев обесценивается на ходу: Даниил советует выделять ключевых стейкхолдеров, корнер-кейсы, самый простой и самый сложный сценарий — и строить инструмент вокруг них.
- 02Архитектурный выбор нельзя делать списком плюсов и минусов — так сравниваешь круг с квадратом; сначала quality-атрибуты и ограничения, потом значимые требования, потом PoC с нагрузочными тестами на своей инфраструктуре.
- 03Провал технологии стоит превращать в актив: после неудачного опенсорсного решения команда стала центром экспертизы по распределённым базам, к которому приходят другие команды.
- 04Матрица, где за целый набор важных сервисов отвечает один инженер, делает социотехническую систему хрупкой, а переключение доменов каждые два-три дня бьёт по time to market.