Андрей Аксёнов нередко начинает свои доклады с такой самопрезентации: «воронежское быдло, интересуюсь информационным поиском». Правда, в Воронеже он уже давно не проживает, но информационный поиск по-прежнему в топе списка его интересов. Работает Андрей тимлидом в компании Avito и руководит юнитом инфраструктуры поиска. А ещё именно он создал поисковый движок Sphinx и не ограничился этим, а участвовал ещё во многих других проектах — работал в веб студиях, геймдеве (приложил руку к 10+ разных игр в начале 2000-х), немного помогал с движком Unigine, много выступал на IT конференциях. За эти заслуги его наградили Премией Highload++ в 2018 году. Мы расспросили его, что значит для него премия и как создать популярный и полезный open-source проект.

Курьёз: выступал ежегодно, но в год награждения решил отдохнуть
Это был самый первый сезон Премии. Тогда ещё программные комитеты собирались и для скорости, чтобы не опрашивать 5000 человек, опросили 576 членов программных комитетов, ведь это в 27 раз быстрее. Во время награждения я ничего особого и не почувствовал, честно говоря. Но то, что в HighLoad придумали собственную премию и хотят мне её выдать — воодушевило.
Несмотря на награду, я не ощущаю себя лидером индустрии. У премии первого сезона была двоякая цель: наградить тех парней и девчонок, которые активно участвуют в конференциях и растят комьюнити. Я на этих конференциях выступал чуть ли не каждый год, ходил как на работу с 2006 года, а как раз в 2018 решил разок пропустить и съездить в отпуск. Вот в отпуск мне и позвонили.
На мой взгляд, звание лауреата — это такой приятный бонус, признание за предыдущие 10+ лет методичного вещания различных, надеюсь, не самых плохих докладов на конференциях Highload++. Но, я думаю, в комитете премии отметили не только мои доклады, но и создание поискового движка по имени Sphinx. А может, просто то, что я — паренёк, вроде, неплохой!
Над большим проектом всегда работает команда
Проект Sphinx в один прекрасный момент был, без ложной скромности, лучшим решением на планете – по некоторым (не всем!) параметрам. Это было более чем конкурентоспособное решение среди поисковых серверов.
С тех пор он, конечно, скукожился и превратился в никому неизвестную забытую технологию. Но в условном 2006 году среди поисковых серверов не было особого выбора. Elasticsearch ещё не придумали, Solr не масштабировался. Sphinx в этот момент работал в 10 раз быстрее конкурентов, и хотя бы на две машины криво и косо, но разрезался. Правда, с этих высоких позиций нас быстро снесли.
Но на мой взгляд странно гордиться большим проектом, в котором ты участвовал не один. Даже если, как в случае со Sphinx, довольно большой пласт кода лично мой, делал я его не совсем в одиночку.
Да и вообще «гордость» — неправильное слово. Но одним из своих самых серьёзных личных достижений считаю участие в давно и до меня существовавшем, и после меня успешно продолжившем существовать проекте, где я немного помогал команде справиться с временными трудностями. В частности, снёс из этого проекта какое-то чудовищное количество строк мусорного кода, сотни тысяч. Миллиона там не было, там вся кодобаза, наверное, под миллион строк. Но 100, 200 или 300 тысяч строк мы тогда снесли, и это было здорово.
Кто-то до меня заботливо сидел и вручную писал массу глупого кода, который сразу надо было бы автогенерировать. Понятное дело, что за 10 лет его скопилось много и поддерживать эту массу не было уже никакой человеческой возможности. Редко когда удается настолько ярко выступить: пришел и снес 300 тысяч строк.
Sphinx, кстати, до сих пор меньше!
Всё началось с геймдева
Первую программу я написал в начале 90-х, а первую программу, которой пользуются живые люди, в 1993 или 1994 году. Это был screen grabber ещё под DOS. Нужен он был, чтобы захватывать скриншоты (причем во всех нестандартных режимах, а их было много) и ловко их показывать. А первые деньги за программирование я заработал ещё позже, в конце 90-х на каких-то мелких контрактных работёнках: тут вебформочка, там приложение для местной телестанции.
И вот наблюдая IT вживую последние 30 лет, я избрал платформу фундаменталистского алгоритмического джихада и смело утверждаю, что за эти годы в индустрии технологии принципиально не менялись.
Ну да, ну да, увеличилось разрешение монитора, в компьютере стало гораздо больше мегагерц, а компилятор образца 2023 года гораздо приятнее, чем дерьмище, которым мы были вынуждены пользоваться в “святых” девяностых. Но несмотря на феноменальный прогресс, какого-то концептуального скачка, какого-то «софта на новых физических принципах» с тех пор так и не произошло!
Пирамидка устройств под названием «процессор, память, диск» осталась такой же, как была. Да, теперь у меня на десктопе почти 4 ГГц, а не 8 МГц. Изменение в чуть менее чем 1000 раз. С учетом того, что всё это еще и адаптивно турбируется выше 5 ГГц, подсчитать точно даже «просто частоту» становится особенно сложно. А кроме изменения частот, местами сами инструкции, которых мы раньше делали миллионы, а теперь вот делаем миллиарды в секунду, работают до сотни раз быстрее. Итого, вычислительная мощь невероятно выросла — в тысячу, десять тысяч раз. А уж если это ещё и на количество доступных ядер помножить, то вообще снесёт крышу в сравнении с тем, что было доступно сто (в двоичной системе) лет назад.
Но ведь одновременно с этим самые базовые принципы не меняются совсем. Ну да, гигантское количество compute power стало. Но одновременно с этим память всё равно относительно compute тормозная, диск всё равно тормозной относительно памяти, появляются новые клёвые техники, но старые добрые алгоритмы даже 50-х, 60-х по-прежнему актуальны, несмотря на новое прочтение и оптимизацию под текущие архитектуры.
Концептуально же ничего пока не меняется. Продолжаем писать циклы for, сортировки и хэш-таблицы! Укладываем их на гигагерцы, кэш-линии и наносекунды, а не ферритовые барабаны и ламповые транзисторы, но концепция не меняется, математический уклад един. Именно поэтому меня, видимо, до сих пор и не уволили из индустрии. Может, с наступлением квантовых компьютеров уволят.
Про конференции и интересы
Выступать на конференциях я, кстати, начал вовсе не с Highload++ и новомодной интернет-движухи, а с доблестного геймдева. Мотивировал меня тогда, как и всех, стандартный набор: личный пиар, пиар моей компании, практика публичных выступлений. Это был призыв: смотрите, мы существуем, делаем свой интересный проект, нам есть о чём рассказать, приходите к нам работать.
Мне всегда тяжело придумать какую-то конкретную тему доклада. Это всегда мучительный процесс. Но сам процесс подготовки за это время уже довольно неплохо отладился. Подготовить какую-нибудь презентацию и что-нибудь рассказать я могу достаточно быстро. Понятное дело, это труд, но не гигантский, два месяца full-time мне не нужно. Я закладываю несколько рабочих дней и мне хватает. В экстремальных случаях может хватить 1 часа.
За 30 лет мои профессиональные интересы не изменились: я всё также занимаю «суперузкую» (нет) нишу, которая уже изменилась пять раз. Мне интересен узкий по формулировке, но достаточно широкий по сути набор вопросов: разбираться в алгоритмах, крутить производительность. Снобизма к «своим» или, наоборот, презрения к каким-то “другим” областям почти нет, хотя некоторыми мне просто скучно и неохота заниматься.
Я вот люблю всё, что хотя бы относительно связано с интересной алгоритмикой, приличным перфомансом. Но это же настолько широкая поляна, что под неё подпадает всё подряд. Я и сегодня буду рад позаниматься геймдевом, сжатием, базами данных, алготрейдингом или компьютерным зрением, тем более оно похоже на графон, которым я 20 лет назад тоже занимался. И этот список наверняка не полон.
А вот форму для бухгалтера на 1С писать не буду. Но это не потому, что там нету места алгоритмам и оптимизациям, оно и там есть! Просто там всё обычно на русском языке, на котором я не могу программировать. Я навсегда привык, что переменные называются на английском. Разве что возьмусь написать форму для бухгалтера на 1С с идентификаторами на английском языке по небольшой ставке в 500 долларов в час
