Йо-хо-хо!
Я посмотрел, как мой сайт пустеет – и решил, что хотя бы пост в год выкладывать все-таки надо. Прикинул, что можно наконец-то начать делать свои итоги года не постами в телеграм-канале, а как-то побольше в них вкладываться.
А то я тут посчитал, что если выкладывать по посту в год, то через 10 лет у меня будет 10 постов – ну и когда это лучше всего начать, если не сейчас? Тем более, 2025 был круглой датой – насладимся же напоследок.
Все, к итогам!

Квест года: ICPC
Главным событием 2025, которое определило большую часть моей жизни, был финал ICPC – чемпионат мира по спортивному программированию!
Строго говоря, мы с пацанами собрали команду и начали готовиться еще в 2024, но это все было как-то понарошку – не было понятно, насколько мы реально можем хорошо выступать. Когда 01.12.2024 мы выиграли SWERC, то отобрались на финал и стало понятно, что можно либо тренироваться с желанием забрать последнюю бронзовую медаль, либо ехать по фану. Мы договорились, что будем готовиться, и я построил свой график так, чтобы жестко пахать.
Спортивное программирование не зря называется спортивным. Я забыл, сколько нужно тренироваться, и как это занимает твою жизнь. Так же я уже успел забыть, как мне нравится соревноваться, насколько мне нравится самосовершенствоваться, и как круто, когда есть спортивные азарт и комьюнити.
В феврале мы устроили себе две недели онлайн сборов – это когда вы решаете по пятичасовому контесту каждый день, а потом дорешиваете оставшиеся задачи.
В марте поехали на Европейский чемпионат, где взяли немного стыдную бронзу – на контесте был сильный скачок по уровню задач, и мы как-то не за те задачи взялись во второй половине контеста. Но было понятно, что на стандартном контесте финала мы бы не попадали в такую ловушку и имели бы хороший результат.

До августа мы успели еще один раз устроить онлайн-сборы, а так же еженедельно решали какие-то архивные финалы. Я старался ежедневно либо дорешивать, либо двухчасовые контесты писать.
В августе мы сделали Люсю нашим тренером, поехали в Польшу на двухдневный камп от Huawei, на Кипр на двухнедельный камп от JetBrains. А в сентябре уже поехали на финал.
Я не знаю, что написать хорошего про сборы – но вообще-то было прикольно. Я буквально ехал туда как в отпуск вместе с Люсей – поэтому я, наверное, не мог решать 24/7, но зато была возможность отдохнуть немного, потому что до финала оставался всего месяц и было уже не до того, чтобы жестко потеть. Тем более, что руки у меня были размяты, а идейно я уровень сборов тяну плохо, мне пацаны все разжевывают.
Наверное, стратегически одну вещь можно было сделать лучше – не готовить свой контест на сборы. С точки зрения вовлечения в комьюнити это было прикольно, но мы очень сильно задолбались его делать, написали на один турик меньше – лучше бы все это время потратили на дорешку. С другой стороны, мы конечно очень прикольно контест подготовили – картинок порисовали, задачи придумали. Я узнал про одну очень продвинутую технику, когда решил свою задачу, которую мы дали в этот контест. Сначала задачу решил, а потом узнал, что такая техника вообще существует.
Финал был очень забавным, но и очень заебным мероприятием. Что я про финал понимал заранее (и оказался прав):
- Там много людей с разных частей света, у всех разный контекст, много кто плохо знает английский.
- Это гораздо более масштабное соревнования, чем все остальные, на которых я был.
- Спортивная составляющая на финале скорее второстепенная: помимо того, что это не всерос с двумя турами, и рандом роляет очень сильно – еще и задачи делаются проблемсеттерами отовсюду, с долгим согласованием. За счет этого финалы часто отстают от меты и задачи в них получаются достаточно странные.
- В хороший день мы вполне можем взять медаль.
- В плохой день мы точно не возьмем медаль.
Что я понял только во время финала:
- Придется
- Очень
- Долго
- Ждать.
Финал проходит неделю, из которых содержательными являются пять часов контеста. Перед всеми пробными турами и непосредственно финалом вы где-то еще полтора часа сидите без всего и тупите. Все остальное время происходят какие-то церемонии открытия и награждения, где ICPC коллегия дарит друг другу почетные грамоты за развитие ICPC. Было приятно увидеть русскоязычную тусовку впервые за столько лет, но даже с учетом этого неделя на окраине Баку в фуллтайм-ивент режиме была too much.
Сам контест для нас прошел плоховато. Там как-то много сошлось, но в первую очередь, кажется, просто не с той ноги встали. Я обычно на туре играл роль саппорта – валидировал решения сокомандников и садился их писать, чтобы быстро засылать. В этом плане я доволен началом контеста – я стабильно засылал все, за что садился. Но начало контеста не очень пошло у Димы – и он так и не смог ультануть до конца контеста (а это обычно является нашим win condition). А я облажался во второй половине тура – в сложной задаче я сделал односимвольную опечатку в границе цикла, и мы не могли ее найти 1.5 часа. Леха потел, но задача на математику ему не далась, а код он в нашей команде и так не писал. Короче, мы заняли 77 место, решили 6 задач (+2 не успели додебажить), медали были за быстрые 9, до которых мы явно не дотягивали.
Обидно, короче, год пахать и ничего не добиться. Это, очевидно, не «вы все уже победители» – это контест, где 150 команд, из которых примерно половины из Африки, Индии и ЛатАма, где программировать почти не умеют – и вот мы проиграли примерно всем командам из другой половины.
Наверное, я мог с другим майндсетом качаться, чтобы у меня не было такого вин кондишена, как то, что пацаны ультанут. Но у меня очень сильны остаточные инстинкты школьника-программиста. У меня, без шуток, весь год ушел на то, чтобы просто научиться сидеть и решать одну задачу, пока она не решится. Обычно я пытался поскрести по каждой задаче, но в этом мало смысла, когда нет подгрупп. Помимо этого я все-таки пытался, чтобы за выходные у меня были не только AtCoder раунд, тренировка с пацанами и какая-то минимальная дорешка, но еще и хоть полдня на погулять с Люсей. Надо ICPC заниматься до того, как семью завел.
Главный хайлайт контеста - это когда нас показали в трансляции русскоязычной, и никто ни разу не сматерился (а мы не знали что нас транслируют конкретно в этот момент). Но динамика в команде была ровно как на видео – Леха мне что-то рассказывает, я запоминаю и потом иду за компьютер писать, а Димон решает контест параллельно с нами.
Сразу после финала оказалось, что можно попробовать следующий год, потому что формально мы еще были студентами какое-то время. Мои пацаны стали слишком старыми и я попробовал написать SWERC 2025 во французской команде Эколь Политехника. Французские команды не котируются обычно, потому что есть лобби сильных студентов из восточной европы – в основном состоящее из румынов (в прошлом году из русских, хе-хе). Я потренировал наших французов и мы проиграли всего одну задачу румынской команде – не пошло и ладно уж. Я бы, наверное, не выдержал еще один сезон.

Универ
Главная вещь, по которой я НЕ БУДУ СКУЧАТЬ в 2026 году – универ. Господи, я закончил универ, и это такое счастье, вы бы знали.
В целом, в 2025 у меня было только одно учебное полугодие (во французском универе так же известное как два с половиной месяца) – но это был самый показательно бессмысленный семестр.
У нас были какие-то курсы с поломанными домашками, обзорные курсы ни о чем, курсы по неймдроппингу моделей, бесцельные проекты, презентации ни о чем – все в таком духе. Не то, чтобы я был фанатом других наших семестров, конечно – но там хоть прослеживалась какая-то идея программы и были опорные курсы. Оно было плохо, но там хотя бы старались – в четвертом семестре мы просто занимались херней ради херни.
Я в поисках картинок нашел слайд с защиты проекта, где надо было прочитать статью, сделать презентацию, и написать свой код по ее опенсорс-реализациям. Это с курса, где на лекции 240 слайдов с названиями статей, которые вы кликаете, как слайд-шоу. Ну и это самый осмысленный курс полугодия, наверное, если спорт не считать. Вот такая планка.

Я очень тяжело реагировал на плохие пары, потому что работать-то тоже надо было. У меня босс сидел в Америке и рабочий день сдвигался на несколько часов попозже, без полноценной накладки – но тем не менее, весь учебный год получался очень неприятным с точки зрения распорядка:
- Пришел на бессмысленные пары к 9.30 в жопу мира
- Просидел в помещении без интернета до 12.30 (мы сказали о проблеме в сентябре, до марта не починили)
- Пообедал, пошел на бессмысленный семинар до 16.30
- Параллельно работаешь в оффлайн-режиме, сливаешься из аудитории на время созвонов
- Приезжаешь домой к 18, дорабатываешь до 22-23 то, что не успел.
Если в Вышке я выматывался, но получал удовлетворение и бустился по скиллам, то тут такая схема абсолютно никак себя не оправдывала.
Я прямо сто процентов сожалею о том, что пошел в магистратуру. Скорее в эту конкретную, чем в магистратуру в целом, но у меня особо альтернатив при поступлении не наблюдалось даже. Себе из прошлого хочется сказать, чтобы всегда делил на два чужие обещания, особенно когда в деле знаменитый западный навык самопрезентации. Будь я более прошаренным заранее, я бы копал в сторону учебы в IPP (x3 дешевле), каком-нибудь ENS или MVA (крутая местная магистратура в вижене). Либо не во Франции учился бы – мне, например, очень TUM хвалили.
Стажировка
Несмотря на мои сложности с универской мотивацией, мне очень хотелось продолжить академическую карьеру.
Во-первых, потому что я изначально пошел в магистратуру, чтобы позаниматься графикой – кто же виноват, что универ слабоват и почти не сложилось. Но графикой-то все еще хотелось заниматься – более того, после универа стало понятно, что такие места в целом существуют.
Во-вторых, потому что phd, кажется, должен открывать какие-то карьерные двери, особенно на западе. Плюс мне заметно недоставало хард скиллов в графике и вижене после магистратуры, без повышения квалификации мне было бы сложно в какие-то приличные места попасть.
В третьих, потому что можно стать доктором, прикольно, ыыы.
Короче, я очень смотрел в сторону ресерча около компьютерной графики. Но я пообщался с разными работягами местными, и сложилось впечатление, что в индустрии сейчас с этим скорее тухло, особенно если ты не phd – а phd находятся во всяких софия антиполисах и греноблях, и платят там полторы тыщи евро.
Лайфхак тут такой, что можно пойти заниматься трехмерным компьютерным зрением – это не совсем то же самое, но набор того, что мне нравится, заметно пересекается и платят лучше, потому что это сейчас AI на хайпе.
Меня, как почетного олимпиадника, захантил Хуавей (который олимпиадников очень любит) – заниматься компьютерным зрением в автономных машинах. Тема звучала интересно, денег на жизнь хватало, потенциально можно в той же команде остаться делать phd.
Я был на жестком хайпе, уволился со старой работы, которая аж повышение предложила, ушел на зарплату вдвое меньше и уже руки потирал, как теперь буду заниматься любимым делом всю оставшуюся жизнь.
Ага, конечно.
Я пришел на работу, замотивированно прочитал все, что смог найти про видео диффузионки для контролируемой генерации с консистентной мультикамерой. В планах от моего руководителя было начать работать над популярной открытой моделью, адаптировать ее для наших данных, а потом придумать какой-нибудь небольшой trick для академической новизны и пойти публиковать статью.
Мне очень понравилось работать в офисе. У нас была классная столовая, офис около Сены, двухчасовой обеденный перерыв, во время которого можно было ходить бегать, играть в футбол и бильярд. Можно было даже тренировку для icpc успеть написать нормально.
Я начал воркать, получил сколько-то первичных результатов, а потом наглухо застрял. Моя модель выдавала одно и то же неприемлемо низкое качество и выходила на какое-то плато, которое я не мог пройти. Кажется, все упиралось в нехватку данных – и по тем или иным причинам я работал исключительно на малюсеньком датасете.
Тупее всего было то, что мне никто не мог нормально помочь. Команда была гораздо более инженерная, чем ресерческая – ресерч делали в основном нанятые phd студенты, а фуллтайм-сотрудники занимались скорее тюнингом существующих методов для продакшена. Мой непосредственный руководитель значительную часть времени вообще менеджерил сервера и переливал датасеты между сетевыми дисками, и в целом за полгода наблюдения за его синьор ресерчерской работой я заметил очень мало ресерча, какое-то количество чисто инженерного тюнинга, и в целом скорее сомнительные успехи. Он продвигал мне очень странные вещи – типа, код вообще сам не пиши, просто юзай то, что выдаст copilot. Формулы он очень странно воспринимал и про статьи мы общались как-то странно, когда вместо основного фокуса статьи брали какие-то маленькие детали. С учетом того, что свой бекграунд он мне описывал как c++ инженера, которого хуавей внезапно пересадил заниматься ai, я сделал вывод, что сильно он меня по скиллам не забустит – я сам по такому же карьерному треку пришел.
Ну и в общем, стало понятно, что я могу либо вкладываться в это дальше, либо прочиллить лето и уйти обратно заниматься бэкендом. Уйти в другой ресерч я не был готов, со своим-то плохим резюме (у меня все еще 0 публикаций!) и негативным опытом от места, которое выглядело хорошо – коммититься на три года в phd-шную кабалу мне казалось очень тупым.
Так что лето я прочиллил, кое-как защитил стажировку, а параллельно готовился к финалу ICPC.
Вот так вот во мне умер большой ученый.
Stockly
Финал ICPC очень неудачно накладывался на мой академический график. Стажировка заканчивалась в конце сентября, выходить на новую работу стоило в октябре, а искать работу, соответственно, в августе. Но весь август был занят поездками на сборы, за которыми еще и следовал финал. Короче, было понятно, что мне будет не до активного поиска работы.
Я решил, что нужно постучаться к моим знакомым из Stockly – я в целом знаю штук 10 французских компаний от силы, и среди них только Stockly выглядели хоть немного моим форматом. А знаю я их, потому что они единственный онсайт контест по спортпроге в Париже делают. Я у них выиграл микроволновку в свой первый год в Париже – а прошлой весной вообще какой-то джекпот сорвал, про который в канале писал. Я когда-то общался с CTO, компания выглядела достаточно привлекательно, но у меня были мечты стать большим ресерчером. Как хорошо, что теперь мои мечты мертвы и можно податься на работу!
В общем, написал напрямую на почту, пообщались чуть-чуть, меня подкупило то, что все люди выглядят подозрительно счастливыми. Разве что по деньгам неприятно договариваться было – я забыл, что мы не на глобальном рынке, а на французском, и тут и средние чеки поменьше, и я считаюсь ньюградом несмотря на пять лет опыта… Но ничего, какой-то компромисс нашли.
Вышел на работу в октябре и пока что жутко доволен! Есть много приятных вещей – офис в центре, обеды в виде takeaway из кучи парижских рестиков, удивительно хорошая инженерная культура (хотя и немного специфичная), интересный и глубокий домен. Но ничего из этого не сравнится с тем, что меня подкупило изначально – это, наверное, первый раз у меня такое в программистском коллективе, когда вот прямо вы ежедневно веселые и довольные жизнью. При этом таски щелкаются и летят на продакшен, все работают.
Две интересные вещи, наверное, расскажу. Во-первых, мы занимаемся очень доменно-ориентированной разработкой (конкретно в случае моей команды – обработкой ситуаций, когда заказ отходит от happy path), где нужно набрать очень много интуиции о том, что вообще происходит, и какие проблемы е-коммерса сейчас мешают бизнесу масштабироваться – поэтому во время онбординга ты регулярно сидишь и помогаешь с тикетами, проходящими через кастомер саппорт. Просто чтобы понять, как вообще бизнес устроен. Очень классный опыт, который мне раньше было тяжело добывать.
Во-вторых, чуваки очень много рефлексируют о своих процессах и культуре. Например, у нас есть inbox-zero: принцип, предполагающий, что ты блочно отвечаешь на все входящие сообщения и упоминания на ежедневной основе (обычно в конце рабочего дня). Идея в том, чтобы соблюдать баланс – чтобы ты был ответственный за ответ в срок, но при этом коммуникация шла асинхронно и не мешала фокус-тайму других людей. На моем прошлом месте принцип был другой: если что-то занимает пять минут (включая ответ на сообщение), надо прямо сейчас сделать и забыть – и хоть звучит так же хорошо, на практике мелочей набиралось достаточно, чтобы ты весь день на что-то отвлекался.
В планах на ближайшее будущее жестко перформить, апаться по скиллам и бустить бизнес.
Ориентирование
В этом году я занимался ориентированием куда меньше, чем хотелось бы – всего порядка 50 дистанций пробежал. Это связано в первую очередь с тем, что я дважды выходил на новую работу, и у меня не было отпусков, которые не брались бы с целью сборов к ICPC.
Тем не менее, я аж дважды отобрался в сборную Парижского региона (Ile-de-France) на Чемпионат Франции – по миддлу и спринту.
Я в какой-то момент усвоил, что французы очень любят бегать лонги (и рогейны), и местные лесные дистанции на 10-13км слишком тяжело даются моим ногам, учитывая каменный и заросший парижский регион. А вот спринты и миддлы я могу бежать на относительно неплохой скорости, и результат получается нестыдным.
Осенний чемпионат франции был в подпарижье, куда я приезжал исключительно на ночные гонки, поэтому вообще не проникся и не прочувствовал – но весной я очень приятно ездил на соревнования в Прованс (сначала бежал лонг, а потом решал контест со сборов!) и в Аквитанию. Еще в Caen ездил, где было шикарное ориентирование в Икее.
Я записал сколько-то headcam-забегов, но выложил очень мало - руки не дошли. Икеевское видео крутое.
Рандомные life updates
Comeback года: преподство
Повозившись немного с icpc, я решил вернуться в преподство. Но я прикинул, что возвращаться учить A’ мне будет тяжело – все-таки олимпиады не стоят на месте, и я уже немного динозавр. Решил устроить себе другой челлендж — попробовать учить B’. Если в моем старом A’ люди уже все знали, и их в основном надо было натаскать и научиться не бояться ничего, то в B’, наоборот, никто по умолчанию ничего не знает, и надо рефлексировать над какими-то вещами, которые кажутся интуитивными (например, что можно маленькое множество в битовую маску сохранить).
Мне сложно пока что оценить, насколько мой преподский камбэк успешен – но преподавание очень быстро приносит в жизнь какую-то миссию: вроде за день ничего не сделал, а вроде паре школьников помог задачки отдебажить – может, новыми чемпионами icpc когда-нибудь станут!
Полезная привычка года: меньше пить!
Напившись на прошлый новый год, я как-то решил пить поменьше - и мы с Люсей перестали покупать алкоголь домой. Меня не очень пугало то, что я практически ежедневно пил пиво или вино – но было интересно посмотреть, что получится.
А ничего интересного не случилось – просто стал реже заходить в продуктовый за пивом, ну и общее употребление алкоголя снизилось очень сильно, если в абсолютных цифрах смотреть. В относительных цифрах все так же – на свои десять тусовок за год с употреблением алкоголя я все-таки сходил.
Фэмили активити года: домашний маникюр
Мы с Люсей научились делать маникюр дома! Полноценный такой, салонный, с гель-лаком и хитрыми дизайнами.

Как-то раньше не до этого было, и вообще в Европе ценники неприятные – а в Москве я делал, мне нравилось. Вот сейчас опять любуюсь, когда код пишу. Люся гель-лака боится (и абсолютно справедливо, потому что я ей его могу положить исключительно криворуко), так что я ей рисую дизайны обычным лаком. Тоже прикольно!
Книга года: Патриот
В этом году я читал еще меньше, чем обычно (хотя, казалось бы, куда еще меньше). Но я прочитал Патриота, и это было на удивление интересное чтиво.

Я думал, что на 99% в лоре, и мне ничего нового не расскажут – а нифига, все равно многое читал в первый раз. Ну и вообще сложно переоценить масштаб личности Алексея – читаешь и кажется, что он как будто очередной пост для инстаграма пишет… А его уже с нами нет. Бррр.
Вы знаете, кстати, что я с ним паркран в Тимирязевском парке бегал много лет назад? Я опоздал на старт, побежал всех догонять, пронесся мимо него, и уже на финише после заминки понял, что вокруг него толпа какая-то стоит, обсуждают что-то. С народом был человек. Но бегал я побыстрее.
Прогресс года: интеграция
За этот год я не обзавелся французскими друзьями, но стал очень неплохо понимать Париж, понимать, как вообще общество устроено. Стал на французском сносно говорить, в конце-концов!
Моя работа стала французской, я разобрался с налогами. Наконец у меня нет мысли на заднем фоне, что мне сейчас отключат грузинское ИП и мне больше не на что будет есть.
После магистратуры теоретически можно хоть сразу подаваться на паспорт – но на практике какое-то время еще ждут. Я, кажется, еще немного подожду, чтобы каких-то документов подсобрать и подучить язык дополнительно.
Но Париж сейчас – реально дом! Хоть и сумасшедший, конечно.
Открытие года: Flash Invaders
Я в канале уже писал, но просто повторю еще раз – мне нравятся карты, нравятся игры, и нравится собирательство. Собирать стрит-арт в реальной жизни – это ОЧЕНЬ КРУТО. Я перевалил за 400 штук в 5 городах, и в Париже они все еще не закончились!
Технология года: Codex
Просить ChatGPT писать что-либо, кроме скриптов на один запуск - достаточно неблагодарная задача. Cursor у меня какое-то время назад сломался, но даже он не был достаточно хорош. Inline code completion не прожил и года, а уже стал прошлым веком.
Сейчас надо, чтобы за тебя все делали AI агенты!
По факту, это тот же ChatGPT, только ты ему выдал доступ куда угодно, и дал сжигать невероятное количество токенов. Он даже по качеству не то чтобы на две головы лучше – он просто реально продуктово теперь осмысленный.
Codex у меня работает в двух форматах:
- Рабочему Codex-у я говорю, что делать и как делать, даю контекст, пока я минут пять сам над чем-то думаю, он мне выдаст хорошее приближение к тому, что мне надо было. Быстрее, чем самому писать.
- Личному Codex-у я даже IDE не открываю - я просто даю доступ к гитхабу, выдаю ему промпт, он мне делает пулл-реквест, а я его мерджу не глядя. Я так какие-то проекты сделал, которые у меня в беклоге висели.

Еще не понял, что я про это всю AI-революцию думаю. Каждый раз что-то разное. Но вот этот лонгрид, например, не содержал бы никогда красивых ссылок на инсту с телегой, если бы я это делал вручную. Я помню, что добавление переключателя языка у меня заняло несколько часов, которые я размазал на несколько дней. А тут пять виджетов за один вечер – по щучьему велению!
Через пару лет, когда AI будет нас всех захватывать, я буду везде приписывать белым текстом, что быстрее него решил L на финале ICPC – 14 минут против 40! Будет меня больше уважать.
Инсайт года
Я не знаю почему именно в этом году, но я более-менее стал понимать, что могу планировать compound effect реально на многие годы вперед.
Я давно просек, что если ты начнинаешь делать дела рано, то сможешь раньше засиньориться, раньше найти свою нишу для самореализации, раньше заработать денег. Но я не очень много думал о том, на какой горизонт планирования это вообще рассчитано. Идея была такая, что если все вокруг начинают делать дела в 25, а я делаю дела в 20, то к своим 25 я буду впереди. А сейчас мне до 25 осталось уже немного, и появляется резонный вопрос – а для чего вообще быть впереди в 25? И вообще, в какой стороне перед?
Я оттачивал стратегии продолжительностью до пары лет: заботать всерос, первые два курса вышки, вторые два курса вышки, поработать год, поработать полтора, поботать ICPC. Они требовали сфокусированно двигаться к конкретным целям, которые маячат где-то недалеко. Ты берешь, делаешь и получаешь пару лет экспертизы. Но несколько раз по паре лет очень плохо комбинируются – я чувствую, что если продолжу так же, то через пару лет окажусь в той же точке, что и сейчас, просто послужной список станет на позицию длиннее. В целом, этого было бы достаточно, чтобы продавать курсы саморазвития или чтобы трудовая книжка выглядела внушительно – но все-равно как-то мало.
Хочется разобраться, как двигаться к более далеким целям, которые нельзя сформулировать даже, потому что они не близко, и они будут сформированы обстоятельствами ближайших лет. Оказывается, что недостаточно научиться классно кодить и несколько лет поработать на «реальных работах» – ты станешь нормальным типом, но до мощного тебе останется как до луны. И такое расстояние не преодолевается за пару лет – на это надо закладывать декаду.
Другой фактор, почему я про это все думаю, заключается в том, что некоторые вещи в моей жизни поразительно устаканились. Через пару месяцев будет пять лет, как мы вместе с моей женой Люсей. В это сложно поверить, потому что у меня с отношениями, как и с работами, никогда не складывалось долгосрочно. Ну и если в самом начале отношений как-то казалось, что пару лет вы вместе наверняка пробудете, а дальше кто знает – то оглядываясь назад, понимаешь, что не мог предугадать, как все сложится, но очень рад, что сложилось хорошо.
Очень хочется сделать так, чтобы через пять лет отмечать еще больше хороших вещей.
Yo-ho-ho!
I noticed my site was getting emptier and decided I should at least post once a year. I figured it was time to stop doing my year-in-review posts just in Telegram and actually put more effort into them.
I did the math: if I publish one post a year, in 10 years I’ll have 10 posts. When’s the best time to start if not now? Especially since 2025 was a round-number year—let’s savor it while we can.
Alright, on to the recap!
Note: This translation was generated by AI and has not been reviewed by any human.

Quest of the Year: ICPC
The main event of 2025, the thing that shaped most of my life, was the ICPC World Finals!
Technically, my teammates and I formed the team and started preparing back in 2024, but it was all kind of for fun—we didn’t really know how well we could perform. When we won SWERC on 01.12.2024, we qualified for the finals, and it became clear we could either train hard for a shot at that last bronze medal or just go for fun. We agreed to prepare seriously, and I structured my schedule to grind.
Competitive programming is called a sport for a reason. I forgot how much training it takes and how it consumes your life. I’d also forgotten how much I enjoy competing, self-improvement, and the thrill of having both a competitive spark and a community.
In February we did two weeks of online training camps—daily five-hour contests with upsolving afterward.
In March we went to the European championship and took a slightly embarrassing bronze—the problem difficulty jumped midway through the contest, and we focused on the wrong tasks in the second half. Still, it was clear that on a standard finals contest we wouldn’t fall into that trap and would have a solid result.

Before August we managed one more online camp and kept solving archived finals weekly. I tried to do daily upsolving or two-hour contests.
In August we made Lyusya our coach, went to Poland for a two-day camp hosted by Huawei, and to Cyprus for a two-week camp hosted by JetBrains. By September we were on our way to the finals.
I’m not sure what to say about the camps—I actually had fun. I literally treated them like a vacation with Lyusya, so I probably couldn’t grind 24/7, but it was a chance to rest a bit since finals were only a month away and there wasn’t much point in burning out. My hands were already warmed up, and conceptually I don’t handle camp-level problems well—my teammates chew them for me anyway.
Strategically, we could have done one thing better: not preparing our own contest for the camp. It was fun for community engagement, but we were exhausted by organizing it and wrote one fewer practice contest—should have spent that time on upsolving instead. On the other hand, we did make a cool contest—drew pictures, invented problems. I learned a very advanced technique while solving my own problem that we included. First I solved the problem, then I learned the technique even existed.
The finals were both hilarious and insanely exhausting. What I knew about the finals beforehand (and was right about):
- Tons of people from all over the world with different contexts, many not great at English.
- It’s a much bigger event than any other contest I’ve been to.
- The competitive side at finals is almost secondary: beyond the heavy randomness and the fact that it isn’t a two-round national contest, the problems come from setters all over the place with long coordination cycles. Finals often lag behind the meta, and the problems can be quite weird.
- On a good day we can totally get a medal.
- On a bad day we definitely won’t.
What I only figured out during the finals:
- You
- Have to
- Wait
- Forever.
The finals span a week, with only five hours of meaningful contest time. Before every practice and the finals themselves, you sit for about an hour and a half doing nothing. The rest of the time it’s opening ceremonies and award shows where the ICPC board hands each other honorary certificates for advancing ICPC. It was nice to see the Russian-speaking crowd for the first time in years, but even with that, a full-time week on the outskirts of Baku was too much.
The contest itself went poorly for us. A lot of things piled up, but mostly we just woke up on the wrong side of the bed. I usually act as support—validating my teammates’ solutions and sitting down to code them for fast submissions. I’m happy with my contest start—I consistently submitted everything I coded. But Dima’s start wasn’t great, and he never ulted by the end of the contest (which is usually our win condition). I messed up in the second half—a single-character typo in a loop bound in a hard problem, and we couldn’t find it for 1.5 hours. Lyokha was grinding but couldn’t crack the math problem, and he doesn’t code for our team anyway. We ended up 77th, solved 6 problems (+2 we couldn’t finish debugging), and medals were for the fast 9—well out of reach for us.
It sucks to grind all year and get nothing. This is not a “you’re all winners already” situation—this is a contest with 150 teams, roughly half from Africa, India, and LatAm where programming skills are often low—and we basically lost to everyone in the other half.
Maybe I could have trained with a different mindset so my win condition wasn’t “the guys ult.” I still have strong instincts from being a high-school competitive programmer. No joke, it took me the whole year just to learn to sit and solve a single problem until it’s solved. I used to scratch at every problem, but that’s pointless when there are no subgroups. I also tried to make sure weekends weren’t only AtCoder, a team training, and minimal upsolving, but also at least half a day to go out with Lyusya. You should probably do ICPC before you start a family.
The highlight of the contest was when we were shown on the Russian-language stream and no one swore (we didn’t know we were live at that moment). The team dynamic was exactly like in the video—Lyokha explains something to me, I memorize it and go type it, and Dimon solves the contest in parallel with us.
Right after finals we realized we could try again next year because technically we were still students for a bit. My guys were too old, so I tried SWERC 2025 with a French École Polytechnique team. French teams usually aren’t considered strong because of the lobbying from talented Eastern European students—mostly Romanians (last year it was Russians, heh). I coached our French team and we lost only one problem to the Romanians—didn’t go our way, oh well. I probably wouldn’t have survived another season anyway.

University
The main thing I will NOT MISS in 2026 is university. Goodness, I graduated, and it’s such happiness—you have no idea.
Overall, I only had one academic semester in 2025 (also known in French universities as two and a half months)—and it was the most spectacularly pointless semester.
We had courses with broken homework, survey courses about nothing, courses that were just model name-dropping, aimless projects, presentations about nothing—the works. It’s not like I was a big fan of our other semesters, but at least there you could see some kind of program idea and core courses. It was bad, but at least someone tried—whereas in the fourth semester we just did nonsense for the sake of nonsense.
While hunting for images I found a slide from a project defense where you had to read a paper, make a presentation, and write your own code based on its open-source implementations. That’s from a course where the lecture is 240 slides of paper titles you click through like a slideshow. And that’s probably the most meaningful course of the semester—sports aside. That’s the bar.

I reacted very badly to lousy classes because I also had to work. My boss was in America, so my workday shifted a few hours later—no full overlap—but the whole academic year schedule was still awful:
- Show up for pointless classes at 9:30 in the middle of nowhere
- Sit in a room with no internet until 12:30 (we reported the issue in September; they didn’t fix it until March)
- Have lunch, then another pointless seminar until 16:30
- Work offline in parallel, slipping out of the classroom for calls
- Get home by 18:00, work until 22–23 to finish what you couldn’t earlier.
At HSE I was exhausted but got satisfaction and skill growth. Here, this pattern made zero sense.
I one hundred percent regret doing a master’s. More this particular master’s than the idea of a master’s in general, but I barely had alternatives at admission time. I’d tell my past self to cut other people’s promises in half, especially when famous Western self-promotion skills are involved. If I’d been savvier, I’d have aimed for IPP (3x cheaper), an ENS, or MVA (a great local vision program). Or studied outside France—I heard great things about TUM.
Internship
Despite my struggles with university motivation, I really wanted to keep an academic track going.
First, I entered the master’s to do graphics—who’s to blame if the university was weak and it almost didn’t happen? But I still wanted to work on graphics, and after the degree I realized those places do exist.
Second, a PhD supposedly opens career doors, especially in the West. Plus I lacked hard skills in graphics and vision after the master’s; without upskilling, landing at a decent place would be tough.
Third, because you get to be a doctor—funny!
I was very interested in research around computer graphics. But after talking to local folks, I got the impression the industry is rather dead there, especially if you’re not a PhD—and PhDs are off in places like Sophia Antipolis or Grenoble, earning about 1.5k euros.
Here’s the hack: you can switch to 3D computer vision—not quite the same, but it overlaps a lot with what I like, and it pays better because AI is hot right now.
As an honored Olympiad kid, Huawei (they love Olympiad people) recruited me to do computer vision for autonomous vehicles. The topic sounded interesting, the pay covered living expenses, and potentially I could stay in the same team for a PhD.
I was hyped, quit my old job (they even offered a promotion), took a salary cut by half, and rubbed my hands, ready to do what I love for the rest of my life.
Yeah, right.
I joined and eagerly read everything I could find about video diffusion for controlled, consistent multi-camera generation. My supervisor’s plan was to start from a popular open model, adapt it to our data, then invent a small trick for academic novelty and go publish.
I loved working in the office. We had a great cafeteria, an office by the Seine, and a two-hour lunch break during which you could run, play soccer, or shoot pool. You could even squeeze in an ICPC practice contest.
I started working, got some initial results, and then hit a wall. My model produced the same unacceptably low quality and plateaued, and I couldn’t break through. It seemed to come down to lack of data—and for various reasons I was working solely on a tiny dataset.
The dumbest part was that no one could really help me. The team was more engineering than research—research was mostly done by hired PhD students, while full-time employees tuned existing methods for production. My immediate supervisor spent much of his time managing servers and shuffling datasets between network drives, and over six months of watching his senior-researcher role I saw very little research, some pure engineering tuning, and generally dubious success. He pushed weird ideas—like “don’t write code yourself, just use whatever Copilot gives you.” He interpreted formulas strangely, and we had odd conversations about papers where we latched onto tiny details instead of the main focus. He’d described his background as a C++ engineer whom Huawei suddenly reassigned to AI, so I concluded he wouldn’t boost my skills much—I was on the same career track myself.
So it became clear I could either keep investing in this or chill through the summer and go back to backend. I wasn’t ready to jump to another research track with my weak résumé (still 0 publications!) and the negative experience at a place that had looked good—committing to a three-year PhD “bondage” felt really stupid.
So I chilled the summer, barely defended the internship, and prepared for the ICPC finals in parallel.
That’s how the great scientist inside me died.
Stockly
The ICPC finals clashed terribly with my academic schedule. The internship ended in late September, I should have started a new job in October, and therefore I should have job-hunted in August. But August was all training camps, followed immediately by finals. It was obvious I wouldn’t have time for an active job search.
I decided to ping my acquaintances at Stockly—I know maybe 10 French companies total, and only Stockly felt even slightly like my kind of place. I know them because they run the only onsite competitive programming contest in Paris. I won a microwave from them my first year in Paris—and last spring I hit some kind of jackpot I wrote about in my channel. I’d once talked to the CTO; the company seemed appealing, but I had dreams of becoming a big researcher. It’s great that those dreams are dead now so I can actually apply for a job!
I emailed directly, we chatted a bit, and I was sold on how suspiciously happy everyone looked. Negotiating salary was the only annoying part—I forgot we’re on the French market, not the global one, so average offers are lower and I count as a new grad despite five years of experience… But we found a compromise.
I started in October and I’m super happy so far! Lots of nice perks—the central office, takeaway lunches from tons of Paris restaurants, a surprisingly good engineering culture (though slightly quirky), and an interesting, deep domain. But none of that beats what hooked me initially—it’s probably the first time I’ve been in an engineering team where everyone is cheerful and happy day to day. Tasks get done and shipped to production, everyone’s working.
Two interesting things. First, we do very domain-driven development (for my team specifically, handling cases when an order goes off the happy path), so you need a ton of intuition about what’s happening and which e-commerce problems are blocking business scale. During onboarding you regularly help with customer support tickets just to understand how the business works. It’s a great experience that was hard for me to get before.
Second, people reflect a lot on their processes and culture. For example, we have inbox-zero: you reply in batches to all inbound messages and mentions daily (usually at the end of the workday). The idea is to balance responsibility for timely replies with asynchronous communication that doesn’t break others’ focus time. At my previous job the principle was different: if something takes five minutes (including replying), do it right now and forget it—and while it sounds good, in practice enough little tasks pile up that you’re distracted all day.
The plan for the near future: perform hard, level up, and boost the business.
Orienteering
I did much less orienteering this year than I wanted—only around 50 courses. Mainly because I started two new jobs and had no vacations that weren’t earmarked for ICPC training camps.
Still, I made the Île-de-France regional team twice for the French Championship—middle and sprint.
At some point I realized the French love long runs (and rogaines), and the local forest courses of 10–13 km are too tough on my legs given the rocky, overgrown Paris region. But I can run sprints and middles at a relatively good pace, and the results aren’t embarrassing.
The fall French championship was in the greater Paris area; I only went for the night races, so I never really got into it. But in spring I loved going to events in Provence (ran a long, then solved a camp contest!) and Aquitaine. I also went to Caen, which had amazing orienteering inside an IKEA.
I recorded some headcam runs but uploaded very few—never got around to it. The IKEA video is awesome.
Random life updates
Comeback of the year: teaching
After a bit of ICPC grinding, I decided to return to teaching. I figured going back to teaching A’ would be hard—the Olympiad scene moves on, and I’m a bit of a dinosaur now. I chose a different challenge: try teaching B’. In my old A’ group, the students already knew everything; they just needed drilling and to learn not to be scared. In B’, nobody knows anything by default, so you have to articulate things that feel intuitive (like storing a small set in a bitmask).
I’m not sure yet how successful my teaching comeback is—but teaching quickly adds a sense of mission to life: maybe you did nothing all day, but you helped a couple of students debug problems—maybe they’ll be future ICPC champions!
Useful habit of the year: drink less!
After drinking a lot last New Year’s, I decided to drink less, and Lyusya and I stopped buying alcohol for home. I wasn’t too worried about drinking beer or wine almost daily, but I was curious to see what would happen.
Nothing interesting happened—we just stopped popping into the grocery store for beer, and total alcohol consumption dropped a lot in absolute numbers. In relative terms, it’s the same—I still went to my ten drinking parties this year.
Family activity of the year: home manicure
Lyusya and I learned to do manicures at home! A full salon-style manicure with gel polish and fancy designs.

We’d never gotten around to it before, and prices in Europe are unpleasant—back in Moscow I got manicures and liked them. Now I can admire mine again while coding. Lyusya is afraid of gel polish (fair—my gel application would be very crooked), so I paint her designs with regular polish. Also fun!
Book of the year: Patriot
I read even less than usual this year (though, who knew that was possible). But I read Patriot, and it was surprisingly interesting.

I thought I was 99% up to speed on the lore and wouldn’t learn anything new—but nope, I still read a lot of things for the first time. And it’s hard to overstate the scale of Alexey’s personality—you read it and feel like he’s writing another Instagram post… and yet he’s no longer with us. Brrr.
Did you know I ran Parkrun in Timiryazevsky Park with him many years ago? I was late to the start, ran to catch up, passed him, and only after cooling down at the finish did I realize there was a crowd around him discussing something. He was a man of the people. But I ran faster.
Progress of the year: integration
This year I didn’t make French friends, but I learned to understand Paris pretty well and how society here works. I finally speak decent French!
My job is French now, I figured out taxes. Finally no background fear that my Georgian individual entrepreneur status will be shut down and I’ll have nothing to eat.
After the master’s, you can theoretically apply for a passport right away—but in practice they make you wait a bit. I think I’ll wait a little longer to gather documents and study the language more.
But Paris is truly home now! Even if it’s crazy, of course.
Discovery of the year: Flash Invaders
I wrote about this in the channel, but I’ll repeat: I love maps, games, and collecting things. Collecting street art in real life is VERY COOL. I’ve passed 400 pieces in 5 cities, and Paris still isn’t finished!
Technology of the year: Codex
Asking ChatGPT to write anything more than one-off scripts is pretty thankless. Cursor broke for me a while back, and even it wasn’t good enough. Inline code completion didn’t last a year before it became passé.
Now you need AI agents to do everything for you!
In reality it’s the same ChatGPT, just with access everywhere and license to burn a ridiculous number of tokens. It’s not two heads better in quality—it’s just finally a sensible product experience.
I use Codex in two ways:
- For work Codex: I tell it what and how to do, give context, and while I think for five minutes it spits out a good approximation of what I need. Faster than writing it myself.
- For personal Codex: I don’t even open an IDE—I just grant GitHub access, give it a prompt, it makes a pull request, and I merge without looking. That’s how I finished some backlog projects.

I still haven’t decided what I think about the whole AI revolution. It changes every time. But this longread, for example, would never have had these nice Insta/Telegram embeds if I’d done it manually. I remember adding the language switcher took me several hours spread over a few days. And here I added five widgets in one evening—just like magic!
In a couple of years, when AI conquers us all, I’ll add white-on-white text everywhere saying I solved L at ICPC finals faster than it did—14 minutes versus 40! Maybe it’ll respect me more.
Insight of the year
I don’t know why exactly this year, but I more or less realized I can plan for compound effects many years ahead.
I figured out long ago that if you start doing stuff early, you can senior up earlier, find your niche for self-realization earlier, and earn money earlier. But I never thought much about the planning horizon that assumes. The idea was: if everyone around me starts doing stuff at 25 and I start at 20, by 25 I’ll be ahead. Now I’m almost 25, and the reasonable question is—what’s the point of being ahead at 25? And which way is “ahead” anyway?
I was honing strategies of a couple years each: crush the national contest, the first two years at HSE, the second two years at HSE, work a year, work a year and a half, grind ICPC. They required focused movement toward concrete near-term goals. You do it and get a couple years of expertise. But stacking several two-year stints doesn’t combine well—I feel like if I keep this up, in a few years I’ll be in the same spot, just with one more line on my résumé. It’d be enough to sell self-improvement courses or make the work record look impressive—but it still feels like too little.
I want to figure out how to move toward more distant goals that can’t even be articulated yet because they’re not close and will be shaped by the next few years. Turns out it’s not enough to learn to code well and work a few years at “real jobs”—you’ll become a solid guy, but truly powerful is still a moonshot away. That distance isn’t covered in a couple years—you need to budget a decade.
Another reason I’m thinking about this: some things in my life have stabilized shockingly well. In a couple months it’ll be five years with my wife Lyusya. Hard to believe—my relationships, like my jobs, never used to last long. Early on it felt like, sure, you’ll be together a couple years, then who knows—but looking back, you see you couldn’t have predicted how it would go, and you’re very glad it went well.
I really want five years from now to be celebrating even more good things.
