Можно ли спасти душу Раскольникова? Тимлид делает игры по классике и пишет свой язык программирования

Марат Зимнуров — тимлид двух команд разработки в HRTech Авито. Прежде чем прийти в компанию, он успел поработать линейным сотрудником в McDonald's, а затем в Microsoft — над Power BI Desktop и системами восстановления Azure после сбоев. Сейчас в Авито его команды автоматизируют процессы найма, отпусков, бенефитов, комплаенса, обработки персональных данных и кадрового учёта для более чем 12 000 сотрудников. Команда повысила эффективность компании за счёт минимизации времени сотрудников на рутинные операции.
Кроме того, Марат преподаёт в нескольких вузах, с нуля пишет собственный визуальный движок для игр по русской классической литературе, ведёт бесплатную образовательную платформу courses.digitable.life, издал детскую книгу и параллельно проектирует язык программирования с формальной доказуемостью. Мы поговорили с ним о том, как он успевает всё за день, чем студенты отличаются от разработчиков и что даёт ему Авито, чего не было в других компаниях.

Текущие и будущие задачи в Авито
Расскажи, чем занимается твоя команда в Авито?
Марат: Я тимлид двух команд разработки внутри HRTech. Мы оптимизируем существующие и создаём новые бизнес-процессы, связанные с кадровым учётом: сервисы отпусков, найма и увольнения, согласий на обработку персональных данных, комплаенс, бенефиты и мериты для сотрудников. У нас микросервисная архитектура: не один распиленный монолит, а множество процессов, каждый из которых мы либо докручиваем, либо строим с нуля. В одной команде у меня 11 человек, в другой планируемый состав — 5–6 сотрудников. Команды кросс-функциональные: в них есть фронтендеры, бэкендеры, тестировщики и стажёры. Работаем распределённо.
Что из сделанного тебе кажется наиболее значимым?
Марат: В прошлом году мы с нуля разработали календарь планирования отпусков сотрудников. Смысл в следующем: у любой организации есть фонд оплаты труда (ФОТ), часть которого зарезервирована на случай, если сотрудники пойдут в отпуск. Чем больше headcount, тем больше резервируемая сумма. Мы выстроили систему так, чтобы у сотрудников не копились незапланированные дни отпуска, и разблокировали для компании гигантскую сумму.
Ещё мы с нуля построили собственную систему распознавания документов для лендинга приёма на работу. Сегодня в Авито можно устроиться удалённо, вообще не приходя в офис.
А что с надёжностью всех этих сервисов?
Марат: Весь ЗУП (зарплата и управление персоналом) хранится в 1С, поэтому любая наша разработка кросс-дирекционная: всё нужно согласовывать с командами 1С. В прошлом году мы внедрили отказоустойчивость по отношению к 1С. Раньше сотрудник нажимал «Создать заявку на отпуск» и ждал секунд 30–40, пока 1С ответит и всё сойдётся. Сейчас сервис полностью изолирован от 1С благодаря подходу graceful degradation. Для пользователя всё выглядит мгновенным: нажал — и заявка создалась, хотя синхронизация идёт в фоне. Если что-то падает, очередь сама всё возобновляет. По кластеру у нас в среднем 99,99% доступности: для менее нагруженных сервисов — ниже, для критичных держим планку строже.
Сейчас над чем работаете?
Марат: Готовимся к кампании планирования отпусков на следующий год. Плюс в этом квартале доделывали админку для работы с бенефитами, например с ДМС. Раньше модератор дважды в месяц вручную заходил к страховому провайдеру, выгружал списки сотрудников с изменениями и сверял их руками. Сейчас это выгрузка в Excel и автоматическая проверка, а если находятся ошибки, система сама подсвечивает, где именно. Ещё с нуля переписали заявку на увольнение: раньше её подавали либо очно, либо по почте с приложенными документами, а сейчас это одна форма.
От кассы McDonald’s до Power BI в Microsoft
Где была твоя первая работа?
Марат: Первая работа была в McDonald’s: я был обычным членом бригады ресторана и проработал там около полугода. Параллельно учился: 8 часов в университете, 8 часов на работе и 8 на сон, да и то не всегда. В какой-то момент я сидел на асфальте, потому что ноги уже не держали, и понял, что так продолжаться не может. Тогда я пошёл искать IT-компанию.
Дальше было много всего. Почти три года я удалённо работал в Microsoft, делал Power BI Desktop — инструмент для аналитики, входящий в пакет Office. Помню, на собеседовании в США в 2018 году меня спросили, над каким проектом я работаю. Я ответил: Power BI, — и интервьюер прямо при мне начал гуглить, что это такое. Ещё делал систему disaster recovery для Azure — восстановление после сбоев в инфраструктуре.
Моё образование — прикладная информатика в экономике, затем магистратура в ИСИТ и аспирантура на IT-кафедре. Кандидатскую пока не защитил: диссовет распался, поэтому страдаю.
Чем для тебя Авито отличается от прошлых мест?
Марат: Тем, что мне не мешают действовать и дают карт-бланш при условии выполнения базовых ожиданий. У нас в дирекции нет некомпетентных руководителей, которые бьют по рукам из-за собственной неуверенности или какого-то страха. Наоборот, руководители поддерживают, челленджат по полной программе и помогают найти точки улучшения. Вся линейка руководителей в моей дирекции — технари. Мне попадались компании, где менеджеры без технического бэкграунда используют дешёвые манипуляции, которые просто не срабатывают на тех, кто в манипуляциях разбирается.
В Авито руководство не бьёт по рукам за инициативы. Три месяца назад я пришёл к своему руководителю и предложил запустить первый в компании ИИ-хакатон, и он сказал: «Конечно, запускай!» В итоге в нём участвовали больше 300 человек с 78 проектами. В другой раз я показал ему устаревшую систему распознавания изображений и предложил переписать её самостоятельно, не привлекая команду. Получил добро без лишних вопросов — кроме челленджа и проверки гипотезы, разумеется.

Игры по Достоевскому вместо пересказов
Ты разрабатываешь компьютерные игры на основе русской классической литературы. Это что-то вроде аудиокниги с визуалом и викториной? Расскажи, как это устроено?
Марат: Как преподаватель я вижу, что большинство людей плохо умеют учиться самостоятельно, и это нормально, ведь вокруг реальная жизнь. Поэтому видео- и игровой контент воспринимать проще. Когда я даю студентам или школьникам метафору или референс из классики, они часто его просто не считывают — не потому, что я всё усложняю, а потому, что этот материал прошёл мимо них.
Я подумал: почему бы не сделать визуальные новеллы по великим произведениям, которые уже перешли в общественное достояние? Здесь важно, что это не переделка исходного произведения, а полностью оригинальный авторский текст. Начал с небольших вещей. Первым экспериментом стала «Дама с собачкой» Антона Чехова. Это 40 минут контента, на которых я проверял, смогу ли вообще собрать нормальный редактор, разложить тексты, подобрать визуал и озвучку. Сейчас готовлю к выпуску «Преступление и наказание» Достоевского.

Можно будет в «Преступлении и наказании» не дать Раскольникову убить старуху?
Марат: Можно будет выбрать: убивать или нет. Но это не расходится на тысячу отдельных сюжетных веток. Идея в другом. Ты школьник и роман не читал, тебя заставляют изучать его к экзамену. И вот ты играешь, доходишь до момента с топором и дверью и не знаешь, что будет дальше, потому что никогда не сталкивался с произведением. Если выбираешь «не убивать», дальше идут условные 2–3 слайда с текстом, который я дописал сам, чтобы сюжет логично вернулся в оригинальную канву. В этот момент у игрока возникает твист «Так он всё же убил?» и желание либо перепройти игру, либо прочитать книгу целиком, чтобы понять мотивацию Раскольникова. При этом весь основной текст — оригинальный, без переделок. Озвучка персонажей сгенерирована, но качественно, лучшими доступными моделями, за мой счёт. Игра по «Преступлению и наказанию» выходит 11 ноября, в день 205-летия Фёдора Достоевского.

В планах у тебя «Война и мир», но там же играть и играть?
Марат: На «Даме с собачкой» я обкатывал сам движок. Дальше меняется только масштаб: Достоевский — это уже 15–40 часов контента, «Война и мир» — ещё больше. «Дама с собачкой» заняла четыре месяца разработки с нуля, Достоевский — около полутора: база уже была, но большой объём текста приходилось вручную вычитывать и тестировать. Всё пишу сам, стек выбираю под задачу: Elixir, TypeScript — что подходит.
У игр есть и английская версия, потому что русскую литературу любят и уважают во всём мире. Монетизации пока нет. Идея в том, чтобы после релиза выйти на площадки вроде Литрес или билайновских книжных сервисов и предложить им новую модель обучения и чтения — с визуализацией, викторинами и интерактивом.
Обучающая платформа на 20 000 человек и язык программирования на естественной речи
Ты ведёшь платформу courses.digitable.life. Как она появилась?
Марат: Я научный руководитель у бакалавров и магистров и заметил, что постоянно повторяю одно и то же студентам, которые приходят за бесплатным менторингом. Повторяться я не люблю, это задалбывает. Плюс студенты часто приходят с конфликтным мышлением, вместо того чтобы прямо спросить, что их интересует.

Я сделал себе портал и начал складывать туда все материалы, с которыми сталкивался сам, например о том, как учиться учиться. В итоге он разросся и стал совсем гигантским. Сейчас на нём больше 1000 материалов по полному циклу в IT: от разработки до тестирования и дизайна. Есть даже аудиорежим. Всё бесплатно. На портале около 20 000 пользователей, за последние три месяца — больше 60 000 просмотров. При этом большинство находят его в интернете сами, не через меня. Ещё я публикую там материалы с конференций, например о том, как разворачивать GPT-модели и заставлять их говорить по-русски. В своё время я писал на Хабре, как перевёл и озвучил 19 786 реплик World of Warcraft, чтобы в игру можно было играть с полноценной русской озвучкой.

А сейчас над чем работаешь?
Марат: Я готовлю доклад про Аристотеля и риторику и в этом контексте разрабатываю язык программирования Flang, который позволяет писать нативным текстом на любом языке: английском, русском, китайском и даже эсперанто. Он будет с элементами формальной доказуемости. Уже сейчас на нём можно писать программы, но я пока его не анонсирую: основная задача — полностью доделать формальную верификацию ПО. Пишешь программу, компилятор её проверяет, и если доказаны все предусловия, завершаемость, постусловия и так далее, ты получаешь сертификат с доказательством. К этой программе можно не возвращаться, пока не изменятся бизнес-требования, потому что базовые баги в поведении функций исключены.

По сути, Flang — чистый функциональный язык со строгой статической типизацией. Программа проверяется до запуска: компилятор разбирает файл, выводит типы и доказывает, что функции с пометкой «тотальная» завершаются. Проверенная программа вычисляется командой flang run или переводится в один из десяти целевых языков командой flang emit. То есть это и компиляция, и транспиляция. Компилятор написан на самом себе, для сборки нужны только голый C и make без отдельных зависимостей. Основная цель — сделать язык программирования, максимально приближенный к естественному, и для людей, и для LLM. Это позволит перестать писать код, который вы не понимаете.
Ключевые слова языка — это базовые математические операции: «плюс» — это строго плюс и ничего более. А пользовательские объекты можно называть на своём языке как угодно. Поэтому объединить синтаксически разные языки, например китайский с его визуальной логикой и русский с фонетической основой, оказалось не проблемой: логика операций одна и та же вне зависимости от языка.
Ещё я начал вести канал на YouTube, куда выкладываю записи стримов. Из последнего — как раз всё, что нужно знать программисту про ИИ, Elixir и логику, а также эксперименты с клонированием голосов. В общем-то стримлю по настроению и дискутирую с теми, кто залетает: разбираем карьеру и так далее.
Преподавание: разница между студентами и сотрудниками на работе
Где ты преподаёшь и почему вообще пошёл в преподавание?
Марат: Я преподаю со второго или третьего курса бакалавриата, читал лекции в нескольких вузах. Последний год веду курс по искусственному интеллекту в ИТМО для более чем сотни студентов. Работаю на кафедре ИТиЦЭ в ИГХТУ — преподаю функциональное программирование, тестирование ПО и фундаментальную информатику, летом участвую в ГЭК. Плюс научное руководство бакалаврами и магистрами.
Я считаю, что если делиться знаниями со всеми, можно найти «неогранённые алмазы» — людей с потенциалом, которым просто не хватило наставника. И такие алмазы есть: это 10–15% ребят от общего числа. Мне важно создавать им пространство труда, мысли и образа будущего.
Отчасти это и мой собственный комплекс из детства. Я рос в ограниченном контексте с ограниченными ресурсами, и мне бы очень помог человек, который вовремя объяснил бы, что такое хорошо и что такое плохо, на понятной научной базе, а не просто эмоционально и эмпирически.
Есть и вторая причина. Мне хочется создавать пространство, где человек может подумать не только о деньгах.
От самого преподавания я получаю удовольствие не напрямую, а через результат — когда вижу, что человеку удалось что-то усвоить и применить.
В анекдоте почти про тебя есть намёк на разницу между разработчиком и студентом? Если да, то в чём она?
Приходит разработчик к тимлиду:
— У меня задача не работает.
Тимлид:
— Что именно?
— Не знаю.
— Логи смотрел?
— Нет.
— Тесты написал?
— Нет.
— Дебаггер запускал?
— Нет.
— Документацию читал?
— Нет.
Тимлид молча смотрит на него секунд десять.
Разработчик:
— Я понял. Пойду разбираться.
На следующий день тот же тимлид приходит вести пару в университете.
Студент:
— У меня программа не работает.
Тимлид:
— Что именно?
— Не знаю.
— Тесты написал?
— Нет.
— Дебаггер запускал?
— Нет.
— Условие внимательно читал?
— Нет.
Тимлид снова молча смотрит секунд десять.
Студент:
— Я понял. Пойду разбираться.
Вечером тимлид открывает ChatGPT:
— Составь анекдот про меня на основе наших переписок.
ChatGPT:
— А что именно?
— …
ChatGPT:
— Я понял. Пойду разбираться.
(Анекдот, сгенерированный LLM на основе переписок Марата.)
Марат: По сути, разницы нет. Единственное отличие в том, что студенты сейчас в более безопасном положении: они понимают, что худшее, что им грозит, — это отчисление, а до этого мало кто доводит. У разработчика есть элемент субординации, и он понимает, что перед ним руководитель.
Что касается обучения в целом, мне не нравится не нежелание учиться, а нежелание разбираться. Обучение — вещь индивидуальная: если ты привык учиться, тебе легко даётся почти всё, а если нет, мозг застопоривается на новом материале. Я стараюсь работать с этим не через давление, а через выяснение того, что человеку самому интересно, и уже вокруг этого выстраиваю его научную или рабочую задачу.

Металл, детская книга и жизнь по календарю
Ты столько всего успеваешь делать, что кажется, будто у тебя в сутках не 24 часа, а 50…
Марат: Я читал много книжек про тайм- и селф-менеджмент. Всё укладывается в тебя. Тут очень важно разгружать голову. Если она чем-то забита, у тебя в сутках очень мало времени. А если голова свободна, времени полно. Я не стараюсь быть пунктуальным, а всегда ориентируюсь на результат: делаю небольшие инкременты, быстро проверяю гипотезы, постоянно учусь на своих и чужих ошибках. Раньше у меня было мерило: если вечером я не могу запустить доту, значит, я перегружен и надо посмотреть, куда уходит локус контроля.
Я живу по календарю: к концу недели у меня расписаны все дни, включая выходные. После жизни в Германии, где принято планировать всё на год вперёд, я перешёл на годовое планирование и в итоге даже сделал себе для этого отдельный инструмент.
Чем занимаешься вне работы, университета и разработки игр?
Марат: Езжу на концерты, в основном на металл — это увлечение ещё с детства, хотя в целом слушаю любую музыку. Недавно переиздал собственный акустический альбом, который записал ещё 15 лет назад. Сейчас он есть на Яндекс Музыке. Ещё написал детскую книгу про отцовство: о том, как отец и сын идут на обычную прогулку и в какое путешествие она может превратиться, если родитель проявит чуточку воображения. Книга небольшая, страниц на 30, но полностью иллюстрированная. Делал её вместе с дизайнером около полутора-двух лет. Она доступна в Литрес и других магазинах.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.