#52: Трансформация профессии разработчика в 2025
Александр Пахомов и Андрей Володин (сооснователь и CTO стартапа Gracia, ex-founding engineer Prisma и сооснователь NetMonet) разбирают, как вайб-кодинг и AI-агенты меняют профессию разработчика в середине 2025 года. Отправной точкой служит кейс Андрея: не будучи фронтендером, он с нуля собрал в Cursor комплексную админку (backend-driven UI, three.js, парсинг COLMAP) за ноль строк ручного кода. Отсюда — почему «попсовые» стеки (React, TypeScript) под наибольшим давлением, а low-level, робототехника и diptech пока «тихая гавань»; зачем разработчику смещаться в сторону бизнеса; и как экономическая конъюнктура (конец ZIRP, стагнация рынка смартфонов) переопределяет ценность кода — от «читабельности» к «нераспространению говнокода».
Главное
- Опытный разработчик без фронтенд-опыта собрал в `Cursor` комплексную админку (backend-driven UI, `three.js`, парсинг `COLMAP`) за ноль строк ручного кода — быстрее, дешевле и без усталости по сравнению с наймом фрилансера.
- Ценность кода теперь не в читабельности, а в том, что он «не распространяет метастазы»: self-contained-модули не шерят общие утилиты, поэтому поломка в одном месте не ломает всё остальное.
- Давление AI сильнее всего в «попсовых» стеках (`React`, `TypeScript`), потому что нейросети обучены на огромном объёме именно такого кода; асинхронные агенты первыми «выжрут» задачи джунов и мидлов.
- Low-level computing (`CUDA`-кернелы, шейдеры, профайлинг), embedded, робототехника и research пока «тихая гавань»: мало открытых данных и сложно построить `reinforcement learning` feedback loop.
- Университеты должны делать double down на фундаментал (алгоритмы, компиляторы, линейная алгебра, сети), а не гнаться за хайпом: fastfood-знания вроде «слайдер на React» и так выдаёт AI за секунду.
- Почасовая оплата разработчика абсурдна и напрямую мотивирует работать хуже; платить надо за результат — «за сапог, а не за часы».
- Код — это «ассемблер для документации и продуктовых задач»: если слить на торренты фронтенд крупного банка, `literally nothing will happen`, потому что вне своего бизнеса он ценности не несёт.
- Целевая команда будущего — не соло-фаундер (его скопируют 50 тысяч таких же), а свитспот в 10–30 ультра-профессионалов, где роли смерживаются в «имплементаторов» и «бизнес-визионеров».
В выпуске
- Андрей Володин — Сооснователь и CTO стартапа Gracia (объёмное 4D-видео на Gaussian Splatting для VR/AR); ранее founding engineer в Prisma и сооснователь NetMonet (продан Альфа-Банку). Автор телеграм-канала «Три сигмы». gracia.ai ↗
Ссылки
Расшифровка
[00:00] Андрей: Если вы в условном каком-нибудь Сбербанке досиделись до сеньорного грейда, то, что вы сеньор, может означать очень разные вещи. Где-то это может означать, что вы просто очень долго где-то работали — были фронтендером лет семь. Вероятность того, что вы за это время станете сеньором, ну, очень высокая — с точки зрения вашей зарплаты.
[00:18] Александр: За выслугу лет.
[00:20] Андрей: Бейджика, да, и так далее. Но можно ли вас вот так по-пацански назвать сеньором? Вот это уже к вам вопрос.
[00:25] Андрей: В попсовых технологиях, мне кажется, точно есть повод переживать. Потому что если такие компании, как мы, убили одну вакансию, то Тинькофф или Сбербанк убьёт, не знаю, три тысячи вакансий.
[00:40] Андрей: Той профессии разработчика, которой мы её себе представляли, — вот именно в попсовых технологиях — я склонен считать, что такой профессии больше нет.
[00:49] Андрей: Ну, или эти волки — ребята из overemployment-комьюнити, которые там что-то по три работы и всякое такое.
[00:55] Андрей: У кого на что смекалки хватило, те столько костей с барского стола и получили.
[01:02] Андрей: Все мажорные производители попсовых фреймворков должны объявить бан на breaking change.
[01:08] Андрей: Когда вы выпускаете breaking change React или какого-нибудь Tailwind — вы для кого это делаете, можно спросить?
[01:15] Андрей: Прикинь: если бы мы взяли всех людей, которые контрибьютят в компилятор Rust, всех, кто контрибьютит в компилятор Zig, Swift и так далее…
[01:25] Андрей: …и отправили их чинить баги или писать оптимизации для LLVM на C++. Ну это же было бы лучше! У нас был бы C++, который быстрее, стабильнее, более функциональный. И параллельно ещё нейроночки бы обучились на C++ — и всё, мы бы вообще решили C++-программирование как проблему в принципе. А на C++ можешь что угодно написать.
[01:46] Андрей: Я для себя не могу найти мотивацию нанять разработчика, который мне бэкенд будет писать на Go. И вот аргументы за Go: форматтер всё делает однотипным, всё становится очень читаемым. Для меня это вообще не аргумент — не против чего. Что мне с этого Go-форматтера? Короче, это какой-то бред. Для меня.
[02:09] Александр: Здорово! Меня зовут Саша Пахомов. Сегодня мы с Андреем Володиным говорим про AI — как, по нашему мнению (по мнению Андрея), трансформируются профессии в IT, на что становится похожа разработка, дизайн, продукт и так далее. Мне кажется, это очень интересно и очень ценно. Мы минимально хайповали и рассказывали про светлое будущее — наоборот, максимально сконцентрировались на том, что Андрей у себя в компании, а я как разработчик применяем уже сейчас, и куда, по нашему мнению, нужно двигаться и направлять свои усилия обычным работягам-разработчикам. Было суперинтересно. Сейчас уже десятый час, на улице темно, а я возвращаю вас на два с половиной часа назад, где за окошком ещё было солнце и я ещё не знал, к чему приведёт этот ламповый подкаст.
[03:10] Александр: Привет, Андрей! Расскажи про себя.
[03:13] Андрей: Всем привет. Я всю жизнь работаю в стартапах или в очень маленьких командах. Начинал карьеру с того, что разрабатывал и мейнтейнил один из самых популярных open-source игровых движков для iOS — Cocos2d. Это было ещё в 2014 году. Из-за того, что я тогда занимался программированием под мобильные видеокарты, мне удалось попасть, как тогда говорили, в early employee, а как сейчас говорят — в founding engineer, в Prisma. Это был калифорнийский, но фактически московский стартап, в котором мы запустили нейросети на телефонах в 2016 году — до того, как существовали PyTorch, CoreML и вообще любые инструменты для машинного обучения. Тогда ещё Torch был на Lua, а не на Python.
[04:04] Андрей: Я ушёл из Prisma, когда туда наняли сотого человека, и мы с моим лучшим другом основали компанию NetMonet. Для тех, кто живёт в России, особенно в Москве и Питере, это было и остаётся самым крупным сервисом чаевых, оплат и счетов. Очень успешный проект. В 2021 году мы продали его Альфа-Банку. На момент продажи в компании не было ни одного фулл-тайм-инженера, но мы были самым крупным игроком на рынке — больше всех остальных вместе взятых, занимали больше 50% рынка. А среди наших конкурентов были Тинькофф, Яндекс, «Бэр», ВТБ, Visa, Mastercard, куча сторонних частных стартапов — и мы, какой-то стартап. Внутри Альфы мы ещё развивали проект в рамках нашего лок-ап-периода. Когда мы уходили, это был уже очень матчурный бизнес: работало, наверное, больше 160 человек, капитализация кратно выросла. Но, тем не менее, это осталась очень маленькая команда.
[05:11] Андрей: И вот мы вышли из проекта, и сейчас делаем уже, можно сказать, третий стартап — в основном командой, которая выходит из Альфы. С некоторыми людьми мы делаем это уже в третий раз (Prisma и NetMonet), с некоторыми — во второй. Компания называется Gracia, и это снова deep tech. Мы делаем волюметрические видео — видео с шестью степенями свободы. Наши основные рынки — это VFX-индустрия (когда вы можете отснять какую-нибудь селебрити и сделать виртуальный пролёт камеры вокруг неё) и VR (можно надеть шлем и внутри наших видео походить по съёмочной площадке фильма или вокруг актёра). Ключевая отличительная черта нашей технологии в том, что мы делаем полностью фотореалистичные видосы — в отличие от технологий прошлого поколения. В фундаменте лежат гауссовы сплаты и нёрфы, которые позволяют делать полностью фотореалистичные эффекты — всякие отражения, переливания и так далее.
[06:22] Андрей: Сейчас мы единственная команда на планете, которая успешно запустила это на standalone-шлемах — Quest 3, Apple Vision Pro, — и единственная компания, которая предоставляет это как коммерческий продукт. У нас есть несколько конкурентов, которые только что появились, но они пока не предоставляют никакой технологии и не могут смэтчиться с нами в VR. Я начинал с жёсткого diptech, где мы оптимизировали нёрфы: делали нейронки на ассемблере, писали SIMD-инструкции, запускали всё на Neural Engine — до того, как кто-либо знал, что такое свёрточные сети. Потом я был CPO очень крупного B2B2C-проекта в России. И сейчас мы снова делаем ультра-diptech с лоу-левельными оптимизациями, Vulkan и всем таким.
[07:12] Андрей: Во всех этих проектах было очень мало людей, все команды были очень маленькие. Поэтому важный дисклеймер для сегодняшнего разговора: я ни одного дня не работал в большой компании. Я даже не знаю, каково это и как там всё устроено, — потому что даже когда мы продались Альфе, мы оставались отдельной компанией и как-то не прониклись этим. Поэтому призываю слушателей давать мне скидку, когда я буду что-то говорить, потому что весь мой опыт — из стартапов.
[07:45] Александр: Да, ты, конечно, задвинул очень много жирных тем, на которых я бы мог сделать акцент и поспрашивать тебя поглубже — про NetMonet, про твой open-source-опыт. Потому что, ну, наш слоняра — код писать Андрей умеет. Я поэтому тебя и пригласил: ты красиво рассказываешь про вайб-кодинг, про будущее, про то, как строить стартапы, но в то же время и за базар ответить можешь. Зайдите на GitHub, посмотрите, какие проекты Андрей в своё время мейнтейнил. И, ребята-слушатели, я думаю, мы сможем организоваться и поподробнее про текущий стартап Андрея поговорить — про его техническую часть, потому что технологически то, что делают ребята в Gracia, — это просто отвал башки. Это где-то в будущем, и чтобы понять, что там происходит, нужен минимум целый выпуск, а то и два. Так что пишите в комментариях — мне самому интересно.
[08:47] Александр: Но сегодня мы поговорим про вайб-кодинг, про программирование будущего, про то, как инженерам — нам, ребятам, которые увлечены своим делом, хотят самовыражаться в профессии и реализовываться в ней, — какие векторы мы можем себе задать, чтобы быть на шаг или на несколько шагов впереди коллег: зарабатывать больше денег, получать высшие должности, строить крутые компании. Как нам в этом может помочь то, что сейчас происходит с нейронками, и куда приложить усилия. Андрей про это, кстати, пишет у себя в телеграм-канале «Три сигмы» — все ссылочки будут в описании.
[09:25] Александр: Мне кажется, у тебя есть классный кейс, который может быть хуком на всю тему сегодняшнего разговора. Ты в другом подкасте — у книжного чела — рассказывал, как сделал задачу, которую хотел поставить фронтендеру у себя в компании. Что была за задача, как ты её сделал и почему там не участвовал фронтендер?
[09:49] Андрей: Я вообще смотрел и на себя, и на нашу команду как на довольно state-of-the-art-тему: считал, что мы очень heavy-юзеры нейронок. У меня уже была своя коллекция промтов, я довольно сильно рефлексировал на тему того, как мы промтим нейронку. Мы уже вложили много effort, чтобы у нас были, например, self-hosted-нейронки для sensitive-кода. Мы использовали кастомный развёрнутый интерфейс для API OpenAI, чтобы они не учились на наших данных, — потому что на тот момент они обещали, что по API обучаться не будут, а вот по чату, который в GUI, эти данные могут использовать. Я очень активно использовал API, очень активно использовал нейронки. В начале сам был недолго скептиком, но GPT-4, как и многих, меня очень сильно переубедил. И с тех пор мы очень активно это внедряли.
[10:57] Андрей: Часть вещей уже была полностью решена у нас в компании. Самый банальный пример — скрипты на Python: я вообще перестал писать их руками. У меня был хороший шаблонный промтик, который я всё время подставлял, и я шотил себе четвёртой GPT-хой любой скрипт, который нужен: зашафлить датасеты, что угодно переинкодить, зарескейлить, видосик создать. Все эти задачи уже полностью автоматизировались. В этом промежутке совпало несколько вещей. Во-первых, вышел Sonnet 3.5 от Anthropic, который фактически сделал так, что у Cursor появился product-market fit: до этого Cursor как бы был, но именно с Sonnet 3.5 он стал юзабельным и начал отвечать тому вижену, с которым его проектировали. А второе — Карпаты (Andrej Karpathy) вкинул в Twitter термин «вайб-кодинг», который сейчас, мне кажется, скорее миссьюзается, потому что Карпаты его очень конкретно дефинировал.
[12:03] Александр: А что он туда хотел вложить и как его сейчас многие интерпретируют? Давай тут немного остановимся.
[12:08] Андрей: В том виде, в котором Карпаты его внедрил, он очень конкретно написал: «Я занимаюсь вайб-кодингом, я соглашаюсь на всё подряд, что мне даёт нейронка, и просто go with the flow — куда это выведет». Это по-своему интересный сот-эксперимент, но термин сугубо негативный. А то, что сейчас большинство людей называют вайб-кодингом, — использование агентов — это уже другое. Мне кажется, коннотация, которая идёт за этим словом, уже не соответствует действительности, потому что этот термин уже надо использовать в сугубо позитивном ключе. Хотя я согласен, что изначальная идея вайб-кодинга — это такой дебильный сот-эксперимент.
[12:57] Александр: Не включая голову, да.
[12:58] Андрей: Да-да-да. Карпаты написал один твит — создал целое культурное явление. Но это уже не первый раз, поэтому нормально. Короче, в Твиттере все не могли заткнуться про этот вайб-кодинг: нигде нельзя было от него спрятаться, разговоров было только про это. При этом, несмотря на то что я к этому времени уже был довольно heavy-юзером AI, я всё ещё оставался очень скептичным насчёт того, что он, например, может делать фронтенд. У меня уже были хорошие представления о том, что он стопудово может автоматизировать более-менее однотипные REST-контроллеры на бэке, где-то помочь мне в Python-скриптах, где-то in place использоваться для сниппетов на C++. Но всё-таки чтобы я сделал экраны… И потому что я хорошо понимаю, как работают LLM-ки, и потому что отдалённо представляю, как работают интерфейсы (не фронтендные — я раньше программировал под iOS, поэтому UI-движок представляю), у меня на уровне внутренней интуиции была идея, которую я себе даже не артикулировал: я даже не хотел пробовать. Был заведомый bias, что это какая-то хрень.
[14:20] Андрей: И тут у меня образовалась задачка, которая обладала интересными свойствами. Она была очень важной — не для меня, а для нашей компании. Мы начали делать training-as-a-service — платформу, где мы перестаём процессить все видосы руками. К нам загружают, например, 25 терабайт датасетов, и раньше мы процессили их руками, а сейчас это занимает уже много времени: мы переходим из фазы R&D в фазу автоматизации. И нам нужна была админка. Эта админка удовлетворяла интересным аспектам. Первое — мы заранее понимали, что она для нас очень ценная. И при этом она была одновременно очень комплексной. Ну, ладно, не очень комплексной, но это не одна кнопка «launch» или «start». Это довольно комплексный интерфейс, который включает разные погенированные коллекции, backend-driven UI, всякие сложные валидации, стейты и так далее. И даже three.js-компонент — где в 3D нужно поставить, например, какие-то камеры: распарсить COLMAP, визуализировать это с point cloud’ом.
[15:45] Андрей: И при этом, с другой стороны, мы знали, что у этой админки естественным образом будет очень мало пользователей — это некоторые студии, наши партнёры в Лос-Анджелесе, Лондоне, Канаде. Именно они будут ей пользоваться. Из-за этого у нас было априорное знание, что прямо сейчас нам не нужен какой-то гениальный дизайн, не нужен идеальный QA — главное, чтобы это работало. И юзеров мало, поэтому мы сможем катить хотфиксы на ходу. Но базово, по старинке, по инерции я думал, что мне для этого нужен фрилансер, потому что наши фронты были загружены продуктовыми задачами для клиентов, по другим стримам. Я уже даже его нашёл, вступил в переговоры с одним парнем, мы пособеседовались, обрисовали некий скоуп. Именно из-за того, что это произошло в момент, когда весь Twitter жужжал и невозможно было спрятаться, я решил: ладно, просто попробую сделать что-то в этом Cursor.
[17:05] Андрей: И для понимания, с чем я вошёл в этот опыт: более-менее объективно можно сказать, что я очень опытный разработчик — больше 10 лет пишу код. При этом, честное слово, про фронтенд я знал так мало, как вообще, наверное, можно знать с моим опытом. Условно, мой уровень был такой, что последний раз я прогал фронтенд, когда был движок Backbone.js.
[17:36] Александр: Я думаю, среди слушателей, может быть, даже не знают, что это такое.
[17:41] Андрей: Есть, есть у нас неаматёры, есть ребята.
[17:46] Андрей: И я даже не знал, как вызвать в этом проекте npm run dev. То есть в мой уровень знаний не входило, как вообще запустить наш репозиторий. Я был супер далёк. Я попросил нашу фронтендершу меня быстренько заонбордить. Она рассказала базовые штуки: вот сюда нажимаешь — генерируешь себе API-шку, вот сюда — запускается localhost, вот тут корсы настраиваешь, чтобы они не ругались. Минимальный ликбез — и всё, дала мне этот репозиторий. И я сижу, тыкаюсь. Открываю Cursor и такой: «Го, сделаем новую страничку». Появляется новая страничка — нормально. «Смотри, тут есть API-шка. Давай сделаем сайдбарчик слева и в этой вкладке покажем список всех датасетов, которые сейчас есть в базе». Бум — появляется список. Нормас. «Давай сделаем так, чтобы в каждой карточке была foldable-секция, где подкатывалась ещё одна коллекция, а если она пустая — писали placeholder». Окей. «А давай теперь сделаем кнопку “удалить”, и чтобы в качестве confirmation нужно было, как на GitHub, ввести название датасета, прежде чем разрешить удалять, — защита от дурака». Бум, готово.
[19:20] Андрей: Идём запускать тренинг. Я говорю: «Сделай мне попапчик, и в зависимости от того, какой конфиг я выберу, сходи на бэкенд и забери для него массив моделек». А массив моделек — это, например: вот это поле должно быть int, у него такие min/max, range, описание, валидации; вот это поле — drop-down, покажи его как выпадающий список; вот это — слайдер с такими-то параметрами. То есть backend-driven UI, который динамически перестраивается: в зависимости от того, что я выбираю, строится комплексная форма. «И сделай так, чтобы кнопка “отправить” не была активна, пока все валидации не проходят». Круто. «Давай теперь three.js-компонент — орбитальную камеру, можно поворачивать, полетать». Нормально. «Давай распарсим COLMAP». COLMAP — это open-source-стандарт для фотограмметрии, там есть бинарный формат. Фотограмметрия — это реконструкция поз по картинкам, structure-from-motion: скармливаешь кучу картинок и предсказываешь, где они были в 3D-пространстве. Мы используем файлы COLMAP как хранилище для камер. Я просто скидываю прямо в Cursor питоновский файлик — как мы эти файлы парсим на Python — и говорю: «Напиши это в TypeScript и визуализируй камеры. Нарисуй такие маленькие ориентированные пирамидки». Появляются пирамидки — но повёрнуты неправильно, потому что кватернионы в системе координат COLMAP left-handed, а в three.js — по-другому. Говорю: «Пофикси кватернионы» — он фиксит, они поворачиваются. «Окей, давай теперь point cloud нарисуем». В общем, я посидел, не мог остановиться и всё сделал сам. Всю админку.
[21:30] Андрей: И для меня это был настолько впечатляющий опыт — по ряду причин. Во-первых, когда я посмотрел на то, что получилось, я осознал очень важную вещь: ни в одном проекте — разве что кроме Prisma, где был фоторедактор с довольно комплексным UI (искажения картинок, кропинги, повороты) — я не делал более комплексных UI, чем то, что сделал с Cursor. Это разные наборы погенированных коллекций, в коллекциях айтемы с разными стейтами, бейджики показываются-не показываются, есть функциональности типа «скачать zip-архив» каким-то кастомным способом, не по URL, — когда бэкенд напрямую отдаёт байты, и ты сразу пишешь их юзеру на диск. Есть многоуровневые попапы, есть backend-driven UI, есть 3D-компоненты, из которых мы экспортируем математические штуки — кватернионы, позиции сфер в виде JSON’ов. Есть штуки, которые скачивают в temporary-хранилище COLMAP-файлики, парсят их и визуализируют. Есть валидации: выключи эту кнопку, если не соответствует условиям; здесь подтверди, что юзер хочет удалить; здесь сгруппируй элементы. Если он может это — он может всё. Никто мне больше не сможет придумать интерфейс, который я не смогу сделать, — unless это какое-то видео или фоторедактор. Хотя я не фронтендер и не знал даже, как npm run dev запустить.
[23:37] Андрей: Второе — я чётко осознал, что мне было быстрее это сделать, чем объяснить фрилансеру. Сначала я бы погружал его в контекст: мы делаем такую админку, у нас есть alignment. А что такое alignment? Это разметка камер для датасетов. А что такое train-сегменты, а зачем нужен этот three.js-компонент, а как конвертировать между координатными системами? Он, скорее всего, даже не знает, что такое left-hand/right-hand coordinate system. То есть мне было и бесплатно, и быстрее, и дешевле. Я почувствовал вот это перемножение ценностей: не просто сэкономил деньги на фрилансере — ещё и время. Двойной эффект.
[24:27] Андрей: И третье — кому-то это покажется смешным, но мне кажется немаловажным: я в процессе вообще не устал. Это был освежающий опыт. Я написал, клянусь, ровно ноль строчек кода — это не преувеличение, это literally ноль. Всё, что я делал, — говорил Cursor, что надо исправить. Проявлял иногда небольшую разработческую смекалку: говорил, когда компоненты надо разбить, дописывал rules, когда он часто ошибался в одном и том же. Но ни одной строчки кода я не написал. И когда я на всё это посмотрел, я такой: да, это big deal. Со мной такого очень давно не было — последний раз я чувствовал какую-то магию от работы, наверное, лет шесть-семь назад. Это было просто фантастично, невозможно оторваться — потому что ты так легко всё это делаешь, и всё получается. Да, конечно, я потом показал это нашим фронтендерам, они сказали, что это говнокод. Но суть дела не меняется. Я этот говнокод написал так, что он не распространяет метастазы на соседний код: он прилеплен сбоку, не использует общие утилки с остальным кодом. Внутри каждый экран ничего не шерит с другими — это self-contained blackbox’ики, которые просто складываются в общий ансамбль и работают. Я смог убедить фронтенд-команду это вмёрджить, потому что они не смогли привести аргументов, почему это что-то испортит.
[26:28] Андрей: Это явление поделило моё мышление на до и после. И сейчас я целыми днями думаю, как бы нам перейти на AI-ориентированный кодинг, потому что кажется, что это меняет вообще всё. Мы прямо в активной фазе исследования всяких асинхронных агентов — Factory, Replit, Devin, Jules, Codex. Продакты пользуются Bolt, Lovable и так далее. Дизайнеров отправили изучать Figma MCP, v0. Разработчиками сильно насели на Cursor и его rules. И в общем, сейчас запускаем AI-трансформацию у себя в команде: меняем процессы полностью и собираемся очень-очень сильно ускориться благодаря этому.
[27:26] Александр: Крутая история. Крутая тем, что есть реальный пример, реальный опыт — человек, который действительно сделал. Знаешь, смотришь какие-нибудь видосы в интернете: у чела есть время, подготовься, сними несколько дублей — и люди снимают «я программирую с Cursor формочку ввода поисковой строки, как в Google, смотрите, как легко». Смотришь и думаешь: ну да, прикольно. А тут у тебя именно комплексный UI, который действительно работает. Ты рассказал — я представил, я не знаю, как это делать, реально сложно. И в существующем проекте — по-моему, это очень круто. Такой вопрос: как ты собираешься измерять — ну, даже не измерять, — как ты оценишь пользу твоего AI-внедрения в команду на «до» и «после»? По собственным ощущениям, по метрикам, по бюджету? Как поймёшь, что это успешное внедрение и оно того стоило?
[28:30] Андрей: Слушай, в маленьких компаниях традиционно очень субъективный способ оценки перформанса разработчиков. По-другому ты просто не можешь. Точнее — можешь, но, мне кажется, дико тупо делать по-другому в маленьком стартапе. Если у тебя в маленьком стартапе есть KPI или OKR-ы — по-моему, это уже клиника. Без дизреспекта, к каждому своё, но у нас, например, Task Tracker только недавно появился, а до этого мы просто приходили на работу и знали, что нам надо делать. Поэтому даже без AI мы оцениваем в очень субъективной манере, всё ли окей, — и собираемся оценивать так же дальше. Это по ощущениям. Но сейчас по ощущениям мы катастрофически ускоряемся. Каждую среду мы запустили так называемую AI-встречу, куда раскидываем доклады. Кто-то пробует Bolt и Lovable — например, наша CPO попробовала, сделала свой первый pull request, хотя она не из разработки. Наша фронтендерша попробовала Cursor. И уже по фразам в духе «если бы мы это не попробовали, мы бы не успели вот эту фичу выкатить» я понимаю, что да, блин, ускорение есть.
[30:08] Андрей: Но главная косвенная цель, которую хотелось бы добиться, — это больше никогда никого не нанимать в продуктовую команду. Если мы сможем не увеличивать команду на протяжении, например, ближайших 12 месяцев — не будем в это упираться, — для меня это будет ярким сигналом, что мы on the right track. А я бы очень хотел не увеличивать команду. Потому что если раньше, в эпоху до AI, неувеличение команды расценивалось как стагнация проекта — был запрос у команды «почему мы не растём, когда хайрить будем?» — то сейчас, мне кажется, отсутствие хайринга — это яркий индикатор, что мы ускоряемся: значит, мы справляемся со всеми нашими идеями. Я бы хотел, чтобы мы упирались в bottleneck по идеям, а не по имплементации. Получится у нас или нет — другой вопрос. Но сейчас, на берегу, я не могу придумать ни одной причины, почему это может не получиться. Мне даже не нужен AGI — всё уже придумали: Repomix, Cursor, асинхронные агенты. Просто надо научиться этим пользоваться, придумать правила, сделать так, чтобы оно не регрессило. У этого могут быть разные креативные способы, я сам ещё серебряную пулю не открыл, мы активно инвестигируем и рефлексируем на тему того, а как правильно. Но уже точно очевидно, что даже ничего нового придумывать не надо — даже условный Claude 5 не нужен, — мы можем эффективно заполучить себе двух ещё фронтендеров чисто за счёт AI.
[32:24] Андрей: Это очень сложно, потому что, например, инстинктивно, когда ты чатишься в Cursor, у тебя первый инстинкт: когда он что-то не так делает — сказать ему «ты вот это не так сделал». И ты прям бьёшь себя по рукам: нет, подумай, что ты не так во фронте написал, чего ему не хватает в rules, что ты можешь сделать, чтобы он с первого раза понял, что ты хочешь. И ты бум — restore to checkpoint, пробуешь ещё раз — о, сработало. У этого есть compound-эффект: проект обрастает rules, обрастает сгенерированной документацией, ты придумываешь приёмчики — например, inline-документацию для важных кусочков, чтобы он их потом не стирал. И я чувствую, что если мы сейчас активно позанимаемся такой мета-работой — работой о том, как нужно работать, — то по моим прогнозам мы должны выйти минимум на «работу до четверых»: у нас было два фронтендера, цель — работать за четверых. И главное, что я сейчас очень уверенно себя чувствую. Раньше я чувствовал некую беспомощность: когда на фронте была проблема, я не чувствовал сил быстро залезть, хотя я CTO в стартапе. А сейчас я что угодно сделаю — просто дайте мне Cursor и задачку от продукта, и я вам любой интерфейс сделаю.
[34:11] Александр: Блин, с одной стороны, вдохновляюще — куча интересных идей в голове возникает. С другой — эта тема про то, что отсутствие хайринга… Для меня как для инженера, который настроен на то, что чем больше его хайрят, чем выше зарплату предлагают, тем ему комфортнее, — я немного начинаю задумываться: наверное, моя стратегия прошлых лет должна немножко поменяться, чтобы у меня получалось развиваться в карьере и в профессии. Потому что, по ходу, предыдущая уже не работает. И в эту тему интересны твои мысли — именно как человека с той стороны, который думает уже не нанимать людей, а скейлиться за счёт adoption AI. Какие у тебя мысли про инженеров? Допустим, ты больше никого не хайришь. Но какие-то потенциальные инженеры, которых бы ты нахайрил, — что им делать?
[35:09] Андрей: Слушай, это очень комплексная тема, её можно подробно обсудить — думаю, она вызовет много интереса у аудитории. Мысли у меня в основном, конечно, неприятные для разработчиков. Но давай сначала понизим градус дискуссии. Когда я говорю «никого не нанимать», я имею в виду в контексте нашей продуктовой команды — которая делает бэкенд, фронтенд и продукт. Я не думаю, что сейчас вообще идёт речь о том, что разработчики как профессия подвергнутся extinction, — мне кажется, сейчас это неуместно. Это не тот Элиезер-Юдковский type of shit, который, мне кажется, несерьёзно обсуждать: никакого value такое обсуждение не добавляет. Разработчики как явление точно останутся востребованными ещё довольно долго. Но во всём есть нюансы.
[36:19] Андрей: Во-первых, разработчики есть разные. Если вы делаете что-то классическое — программируете веб-приложение на React или пишете бэкенд на Java, — то давление нейросеток вы ощутите, наверное, первыми. По очень понятной причине: я писал на эту тему текст у себя в ТГ. Мы вошли в эпоху AI, когда у нас условно 500 миллионов строчек на TypeScript написано и 5 миллионов на Kotlin. Несложно догадаться, на каком языке нейросетки будут писать лучше. Наверное, на TypeScript, а не на Kotlin. Из-за этого в этих профессиях давление точно будет. Но на кого оно будет? Я думаю, субъективно, что мы в этих сферах бежим в сторону seniority-only job-маркета. Мы точно начнём вычищать с левого края. Я, например, уже вообще не понимаю, зачем мне нанимать джунов, — это я уже даже не рассматриваю. Мне это невыгодно ни под каким преломлением: их надо менторить, отвечать на их вопросы. Они и без AI могут наговнокодить, а с AI вообще страшно будет. Маленькой команде джуны традиционно не очень подходят по ресурсам — на менторинг обычно ни у кого нет времени. А теперь это, скорее всего, даже не обсуждается.
[38:02] Андрей: Часто привожу такой пример: в hardware есть расклад под названием old talent. Из-за того что был софтверный бум, никто не шёл в железо, и сейчас вся индустрия — Intel, AMD, Nvidia — борется за очень маленький пул разрабов, которым уже в среднем 40–45 лет, потому что новой крови не было. И я думаю, что в популярных областях будет то же самое. Но тут важно добавить уровень нюансности. Если вы — опять же, без дизреспекта — в условном Сбербанке досиделись до сеньорного грейда, то это может означать очень разные вещи. Например, что вы просто очень долго где-то работали, были фронтендером лет семь. Вероятность, что вы за это время станете сеньором с точки зрения зарплаты, очень высокая.
[39:06] Александр: За выслугу лет.
[39:06] Андрей: Бейджика, да. Но можно ли вас вот так по-пацански назвать сеньором? Это уже к вам вопрос. Понимаете ли вы вообще, как работает браузер? Что там под капотом? Что такое JavaScript, HTML, как именно он рендерится, что такое dirty rectangles, как это оптимизировать и профилировать? Знаете ли вы что-нибудь про 3D, можете ли прикрутить three.js? Пробовали ли WebAssembly, WebGL? Интересуетесь ли новыми стандартами, делали ли что-то на Flutter под Web или на Rust? По опыту собеседований могу сказать: 99% фронтендеров отвечают на этот вопрос «нет». И если ваша сеньорность заключалась в том, что вы сверстали 150 корзин, 150 экранов логина, 150 сайдбаров, — то, может быть, нужно немножко переопределить, что значит сеньорность.
[40:07] Андрей: Я на это смотрю так: в этих попсовых областях асинхронные агенты очень быстро выжрут все задачки для джунов и мидлов. Мы в компании уже идём в сторону того, чтобы эти задачки делали продакты — чтобы они сразу писали задачки для асинхронных агентов, для простых кейсов. Flow такой: продакт пишет задачку, асинхронный агент её делает, открывает pull request, наш CI её разворачивает, продукт заходит, смотрит, что всё работает. Если работает — даём разработчикам быстро глянуть pull request, что там никакой фигни, и в production, пропуская вообще все стадии. А опытные разработчики с Cursor выжрут всё остальное. Если вы знаете, что вы делаете, — спрос на поддержку комплексных систем всё равно никуда не уйдёт: ваш условный CEO не сядет за Cursor. А в ближайшее время говорить, что асинхронные агенты начнут всю аппу писать под ключ, — тоже немного смешно, это нужно реалистично сметить.
[41:16] Андрей: Поэтому в попсовых технологиях, мне кажется, точно есть повод переживать: если такие компании, как мы, убили одну вакансию, то условный Тинькофф или Сбербанк убьёт три тысячи вакансий. Говорят, в некоторых банках вообще запрещают такие инструменты, и мотивация этого мне непонятна.
[41:48] Александр: Ну ты же как сотрудник — если у тебя операционка неподконтрольная и ты даёшь сотрудникам работать со своих компов, — как ты можешь запретить?
[41:57] Андрей: Не знаю, как они это инфорсят, но, говорят, в некоторых банках такие инструменты запрещают. Что, на мой взгляд, абсолютно необъяснимо — я даже не могу представить себе мотивацию.
[42:17] Александр: Ну что тебе скажут? У нас кодовая база банка, есть вещи, которые мы не хотим показывать или отдавать в API вашим нейронкам, чтобы они на них обучались и там какие-нибудь ключи утекли. Я думаю, безопасность. А что ещё?
[42:35] Андрей: Не знаю, просто, мне кажется, конкретно на фронте — ну что там может быть такого? Я и так могу Cmd+Shift сделать в любом браузере, посмотреть, что вы там в своём банке делаете. Ну окей, тем не менее. Короче, я думаю, что в этих популярных областях мы стремительно туда придём, и повод переживать есть. И если вы были muzzy-девелопером всё это время, то новости, естественно, скорее плохие.
[42:57] Андрей: При этом pivot есть в кучу чего. Мне кажется, сейчас всем нужно принять решение. Я думаю, что той профессии разработчика, которой мы её себе представляли, — именно в попсовых технологиях — больше нет. В более широком смысле: вот эти разработчики, которые не тестят свой код, а сразу отдают в QA — пусть посмотрят, вернут, и вот этот пинг-понг устраивают; или которые делают однотипные вещи; или вообще не понимают, зачем делают какие-то бизнес-штуки; или, более того, находятся в пассивно-агрессивном конфликте с бизнесом — «зачем нам эти paywall, зачем нам эти A/B-тесты». Вот такой усреднённый метапортрет разработчика, который выходит за рамки того, какой код он пишет: некое отношение к тому, что он делает, проблематика, которую он приоритизирует. Или технократичные команды, которые разводят бесконечные рефакторинги — с функциональных паттернов на императивные, потом обратно, с одного фреймворка на другой, — сизифов труд для симуляции бурной деятельности. Я думаю, вот этой профессии больше нет. Ещё долго по инерции будут люди, которые пишут React руками, — как сейчас есть люди, которым платят за Pascal, за Fortran, за 1С-бухгалтерию, и они нормально себя чувствуют. Но в прогрессивных командах понятие «разработчик» должно быть очень сильно переосмыслено.
[45:06] Андрей: Это должен быть, на мой взгляд, такой технарь, который очень сильно понимает бизнес, в котором он работает, очень на этот бизнес ориентирован. И я думаю, что в ближайшее время разработчики должны взять на себя обеспечение качества. Может, не на сто процентов, но текущий расклад, где «я сделал и отдал в QA, они посмотрят, есть ли там баги», — на мой взгляд, задним числом несерьёзно, чтобы так смотреть в эпоху, когда тесты пишутся автоматически, есть агенты и так далее. При этом существует куча других сфер, где я пока не вижу такого disruption’а нейронок. Это близкие мне сферы, в которых я хорошо разбираюсь: low-level computing, профайлинг, написание CUDA-кернелов, шейдеров, каких-то high-performance-пайплайнов, которые утилизируют дата-центры. Например, компаниям в духе Anthropic или OpenAI: если вы поднимете им GPU-утилизацию на 0,1%, они готовы будут заплатить 10 миллионов долларов, потому что сэкономят на этом 250 миллионов — из-за того что терабайты данных по шинам перекидываются, и любые компрессии, оптимизации очень востребованы.
[46:32] Андрей: Есть встроенные системы, где основная ценность в том, что вы прогаете какие-нибудь холодильники с обскурными API, телевизоры — тоже не вижу, как нейронки быстро это освоят. Есть robotics — вообще голубой океан: куча нерешённых проблем, ноль конкуренции (точнее, она виртуально есть, но фактически очень низкая), ещё не существующий рынок, при этом потенциал ясен, и никаких данных для обучения нет — людям точно придётся много всего придумывать. Ну и research. Где-то уже есть признаки, что нейроночки становятся интересными: недавно от Стэнфорда, по-моему, вышла статья — они сделали search-агента для CUDA-кернелов, запустили такой бесконечный for-loop: попробуй идею по бенчмаркам, проверь на тестах, что кернел корректный, если стал быстрее — возьми как новый бейзлайн, сгенери ещё идею, попробуй, если не получилось — реджектни, запиши, попробуй следующую. И они репортят, что агент смог получить кернелы, которые уже практически как handwritten-кернелы в PyTorch. Но тут важно сказать: во всех этих профессиях твоя основная ценность как разработчика — не совсем написание шейдеров, а очень хорошее понимание хардвера, для которого ты пишешь. Hardware-specific штуки: для AMD — одно, для NVIDIA — другое, для Qualcomm — третье. Это скрупулёзный профайлинг и использование неудобных, ненадёжных инструментов — смотреть кэш-миссы, пропускную способность, лимитеры по bandwidth памяти.
[48:43] Андрей: И вытекающие из этого комплексные инструменты — Blender, Unity, Unreal. Даже если там появятся MCP, основная ценность от тебя как инженера не в том, что ты можешь написать однотипный C++-сниппет, а в том, что можешь собрать всё в кучу так, что это будет один большой ценный проект: он не будет разваливаться, не будет работать 10 FPS, будет поддерживаться на платформах, ты будешь знать, как его тестить, как организовать работу с гейм-дизайнерами. Мне кажется, есть такие зоны технологий, где сейчас практически нет инженеров — их очень мало, их сложно хайрить, и мало проектов делается, — но там я не вижу большого прессинга с нейросетями. Может, опять ошибаюсь — я много раз делал такие прогнозы, и они имеют свойство не сбываться, — но пока что, просто исходя из common sense и расклада данных, на которых обучаются нейронки, и из того, что они обучаются на reinforcement learning, где feedback loop для фронтенда получить довольно просто, а для low-level-профайлинга — достаточно сложно, кажется, что там будет тихая гавань.
[50:09] Андрей: И там, и там хорошие инженеры будут нужны, но дефиниция хороших инженеров чуть отличается. В непопулярных сферах, которые я перечислил, вы всё ещё можете быть каким-то джуном или мидлом — если у вас есть энтузиазм и смекалка, вы можете пригодиться. А вот в популярных профессиях вы, я думаю, должны, во-первых, жёстко поменять свой майндсет: «мне быстрее сделать самому, чем объяснить разработчику». Это одновременно и правда, и неправда. Конкретно в этом кейсе мне было быстрее — это правда, я не преувеличиваю. У меня большой менеджерский опыт, поэтому я хорошо представляю, на сколько вопросов мне пришлось бы ему ответить, сколько раз сделать ассессмент — «давай эту кнопку сюда подвинем, вот это переделаем», — ответить ему про математику, про которую он, скорее всего, не знает, про линал. Но при этом я всё равно нахожусь в позиции CTO — я по умолчанию bottleneck. Куча людей от меня чего-то хотят, поэтому даже тот факт, что я потратил четыре дня и это быстрее, чем объяснить ему, — это в вакууме интересно; но если бы я мог эти четыре дня кому-то делегировать, я бы с большим удовольствием это сделал.
[51:48] Андрей: Но тут возникает вопрос: я могу это сделать только с людьми, которые понимают. Чтобы это сделать, вы должны отвечать критерию, что вы со мной на одной странице: понимаете, каким бизнесом мы занимаемся, что надо делать. И если я могу прийти к тебе как к разработчику и сказать «сделай мне вот такую админку — раз, два, три, четыре, пять», а ты уйдёшь, сам подумаешь, что там надо сделать, сам всё соберёшь и принесёшь — круто, ты для меня ценный разработчик, я тебе готов и опцион давать, и зарплату, и всё что хочешь. Но если ты разработчик старой закалки, который не тестит, сам не проектирует — именно проектирует с точки зрения того, как это в принципе может работать, без продукта, без дизайнера, — и ещё не знаешь ничего влево-вправо, ни про 3D, и не можешь это с AI обсудить, то есть не можешь сам быстро наверстать навыки, поспрашивать у него, что такое кватернион, что такое линал, как это распарсить, — то такие разработчики мне уже не интересны. Потому что мне дольше тебя онбордить и водить за ручку, чем сделать самому. Рынок быстро окажет давление, такие разработчики появятся, и мы сейчас активно пытаемся сконвертить наших внутренних разработчиков из старого типа в новый — чтобы они по-другому начали думать про то, чем занимаются и зачем.
[53:35] Александр: Слушай, про разработчиков старой закалки у меня думается интересная мысль. Ты же учился в ВГУ, как и я, и преподавал уже, как и я. Как ты думаешь — университетам, наверное, стоило бы уже пару лет назад задуматься о трансформации самой профессии, на которую они учатся, технически? Я не уверен — у меня нет актуальных знаний из университетов, — но, мне кажется, слабовато там с этим сейчас. Как бы ты, возможно, видел профессию разработчика, которую именно обучают? Какие ценности надо закладывать студентам в головы?
[54:14] Андрей: Слушай, тут я, если честно, прям дед. Не могу оценить объективность своей позиции, потому что проповедую только тот путь, который сам прошёл. Я супер ценю своё обучение в ВГУ. Когда я туда только поступил, я довольно сильно по этому поводу комплексовал, потому что в моём классе практически все поступили в ИТМО, МГУ, Бауманку, Физтех, а я остался в Воронеже, — и для меня это было такое, знаешь, «чтобы не идти в армию», типа «вот мой максимум». Я довольно высокомерно относился к универу — в силу возраста и того, что ты мало что знаешь, когда маленький. Ходил, выпендривался: «нас учат на Паскале, никто на Паскале не учит», потом был C#, я говорил «это мертворождённый язык, зачем нам этот .NET». И сам делал вклад в то, чтобы рассказать что-то авангардное: курсы, которые я читал, были по мобильной разработке, относительно необычные для того времени. У нас стояли эти маки, которыми никто не умел пользоваться, на них винду поставили, и я думал, что приношу какую-то пользу.
[56:01] Андрей: Но потом, по мере того как в моей жизни случались разные события — например, оффер в Apple или просто рабочие моменты, — количество ситуаций, в которых я благодарил себя за то, что отучился в ВГУ, стало бесчисленным. Я уже так много раз убедился, что это было не зря, и так много раз чувствовал своё превосходство как разработчика над людьми, которые не учились в универе, — даже просто с точки зрения общей эрудиции. Это как у нейронок есть претрейн на всём интернете — в некотором роде это даёт тебе универ: тебе всё по чуть-чуть рассказывают. Что переменные нельзя называть одной буквой — окей, это очень базово, но это знание; тебе до него всё равно как-то надо дойти. На Яндекс.Практикуме, или прийти в компанию и набить себе эту шишку. Как компиляторы работают, какой-то экскурс в алгоритмы, в деревья. Я тоже, когда мне было 23, ходил и умничал: «да никому это не нужно, никто эти красно-чёрные деревья не вращает, что за бред». Такая же критика часто приходит в адрес бигтеха, который делает 7 этапов собеседования. Но когда доходит до дела — например, сейчас мы будем делать свой новый формат для волюметрических видосов, и под капотом будут range-деревья, — мне даже гуглить не нужно, что это. Я просто знаю, что они есть. Или когда движки игровые делаешь — пишешь хит-тест, чтобы понять, с кем пересекается луч, — ты понимаешь, что такое scene graph, что это тоже дерево, как его обходить в глубину, в ширину. Базовые вещи, которые тебе в универе рассказали. Ты знаешь, что такое распределённые системы, про Алису, про Боба, про импостера, какие-то криптографические штуки — может, не на продакшен-уровне, но ты вообще знаешь, что они есть, какая есть проблема синхронизации времени между клиентами и как её обходить.
[58:31] Андрей: Не говоря уже о математическом бэкграунде: я занимаюсь diptech, поэтому количество раз, когда мне пригодился линал (который в универе был абсолютно непонятен — зачем, что такое детерминант, скалярное произведение, какие-то искусственные способы перемножить), — и в Apple, когда я собесился, это очень сильно помогло, и просто в ежедневной работе. Я считаю, что обучение, которое я получил в ВГУ, абсолютно мирового уровня — с точки зрения принципа Парето, 80/20. Может, челы, которые выходят из MIT, как-то более жёсткие и гламурные, но нет такого, что они в 10 раз больше знают, — ну, в 2 раза, например. То есть не критично, весь базис и насмотренность у меня есть. Поэтому я в целом супер против пропаганды «не идти в универ» — по целой куче причин. И с точки зрения психологического здоровья: продлить себе детство и пожить в упорядоченной структуре ещё 4–6 лет — это очень круто. А будете вы строить карьеру 45 лет или 49 — я думаю, на скейле это не так важно.
[1:00:16] Андрей: Теперь к тому, как универы должны адаптироваться к AI. Я про это, честно, много не думаю, потому что это не моя проблематика — я не студент, не преподаю. Но сто процентов, я думаю, нужно пересмотреть саму модель, потому что AI-читинг уже, наверное, несёт такие масштабы, что по-серьёзке… Мне кажется, вообще концепт оценок и даже концепт экзаменов уже фундаментально устарел. В компьютерных науках ещё, может, как-то. А вот в литературе, например: ты задал эссе написать — ну и как ты теперь будешь проверять, сколько из этого эссе написано руками, сколько — AI, насколько это отредачено AI, и насколько это плохо, что отредачено, а может, вообще круто. Наверное, им надо адаптироваться с точки зрения мотивации студентов и эвалюэйшена, потому что сейчас можно зафейкать что угодно, любой экзамен. Если раньше люди себе микронаушник вставляли и им что-то надиктовывали, то сейчас с AI даже этого делать не нужно — можно формить пятёрки, сколько влезет.
[1:01:51] Андрей: Наверное, надо поменять на какой-то другой подход: больше общаться со студентами, больше понимать, есть ли у них правда понимание, — больше устной коммуникации. Плюс ставить более сложные цели: рассказывать базу, но как экзамен они должны сдать не условный алгоритм обхода дерева, а какую-то более комплексную штуку, где в том числе используется поиск в дереве, — чтобы они собрали пазл, применили нужный паттерн в нужном месте, пусть даже это сделал AI. Но по смыслу я не думаю, что сейчас мега-хорошая идея бежать в универ и рассказывать, как агентами пользоваться. Может, в этом есть какая-то ценность — особенно когда мы накопим определённый культурный пласт и, скорее всего, будет достигнута некая сатурация. Вряд ли в 27-м году будет AGI — скорее всего, будет S-curve, и мы выйдем на плато. И из-за этого я думаю, что, может быть, некий консенсус по тому, какие промты писать, как писать rules, какая интуиция должна быть — что отгружать асинхронным агентам, а что даже не пробовать, — это было бы, знаешь, как в Стэнфорде читают курс по стартапам. Является ли это обязательным для CS-студента? Наверное, нет. Но является ли прикольной дополнительной плюшкой, которая расширяет взгляд на мир? Наверное, да.
[1:03:52] Александр: Просто тут хочется замкнуть мысль. Мы возвращаемся к сеньорам, которые не знают, как браузер работает, что такое интерпретатор TypeScript, что вообще под капотом происходит. Универ на самом деле — как бы смешно это ни звучало, и многие могут со мной со слюнями у рта спорить, но меня уже не переубедить, я слишком взрослый — универы в этом смысле и делают сеньоров. Они делают из тебя человека, который очень комплексно понимает компьютеры по всем вертикалям того, из чего они собраны: что такое компилятор, язык, алгоритмы, паттерны. И неважно, на Pascal тебе это рассказали, на Zig или Crystal, — суть не меняется. У тебя есть общая насмотренность, общее понимание того, что происходит. И, на мой взгляд, универы должны продолжать это делать. Потому что это напрямую вытекает из моего прогноза: что в популярных пластах останутся только настоящие computer-science-челы, которые очень хорошо понимают, что они программируют и как это работает. HTTP — нам даже это рассказывали в универе: что такое пакеты, как они долетают, TCP, IP. Меня сейчас посади собеседовать — я, может, быстро не отвечу, как это работает, но база, какое-то представление, насмотренность туда у меня есть: я понимаю, что такое DNS. Хотя я вообще с этим не работаю, я не бэкендер.
[1:05:40] Андрей: Не знаю, как там сейчас универы себя чувствуют — есть ли у них спад популярности у студентов, испытывают ли они давление AI, или им норм. Но если бы я сейчас был во главе какого-нибудь факультета, я бы, наверное, только double down сделал на фундаментальные знания. Потому что все остальные, фастфудные знания — типа «как слайдер сделать на React» — их как раз можно в ChatGPT за секунду найти. А фундаментальные знания ты тоже можешь спросить у AI, но ты должен их понимать, должен знать, что спрашивать. Поэтому я бы на месте универов сейчас за хайп-трейнами не гнался. Это моё представление; я, честно говоря, не эксперт в обучении людей, поэтому, может, и не прав. Но когда ты меня спросил — довольно неожиданный был вопрос, — первое, что я подумал, вот это.
[1:06:50] Александр: Fundamentals. Полностью за. Мне тоже я сильно ценю математический бэкграунд из универа и computer science. Видно, тебе понравился курс по распределённым системам — про пакеты, DNS. Нам про это рассказывали. Круто. У меня ещё есть заключающая мысль, которая крутится в голове про универ. Ты делаешь акцент на теоретических вещах, и это действительно так. Но для меня главным построителем моей личности как разработчика универ сыграл следующую роль. Он мне показал, что какая бы сложная и неведомая ни была задача, я могу её решить, если постараюсь. С лабами, с экзаменами, с дипломом, с магистерской диссертацией. И вот в процессе взросления и построения себя как разработчика ты проходишь эти этапы раз за разом, и каждый раз — блин, получается. И ты выходишь на работу и такой: да сейчас сядем, разберёмся, сделаем.
[1:07:56] Александр: Ты интересную мысль задвинул — что разработчикам, тем, кто реально хочет продвигаться, нужно трансформироваться, и трансформация должна произойти именно в сторону бизнеса. Разработчики, которые сейчас просто «кадильник пишут», должны двигаться в сторону бизнеса, взглянуть на свою работу со стороны менеджмента и понять, что их роль в компании не в том, чтобы запрограммировать код или ТЗ превратить в JavaScript. Задача — помочь бизнесу решить задачу, куда-то продвинуться, и мы вместе двигаемся вперёд. И как будто бы эта трансформация именно восприятия — не такая простая. Людям вообще сложно трансформироваться в этом направлении. К тому же разработчики старого поколения, как ты сказал, наоборот, как будто в противостоянии с бизнесом: «да нет, вы не понимаете, у нас код-ревью, у нас качество кода, у нас SOLID, мы ревьюим pull request’ы по два дня, потому что качество», — а бизнес такой: «чел, нам надо двигаться вперёд». И когда теперь ты должен стать на сторону оппонента — мне кажется, не у всех получится. Ну, моё личное мнение. Ты что думаешь?
[1:09:17] Андрей: Ну, получится, не получится — мы-то в капитализме находимся. Не получится — тот в «Комфорт+». Или, не знаю, в ландшафтный дизайн. Короче, это сложная тема. Я сам такой путь прошёл. Например, в Prisma мы строили очень технократичную команду. До безумия. Я там своего CTO — он был старше меня — даже не знаю, как я на это его подбивал, может, искусно уговаривал: у меня как-то получалось подбирать слова, чтобы рефакторинг на рефакторинг, «давайте функциональные паттерны попробуем, а теперь откатим, потому что они мне понравились, вот это перепишем, тут какой-то DI сделаем». Тогда это ещё только развивалось. Потом, когда я стал уже CTO сам, я, конечно, начал чувствовать себя неким предателем. И не только в этом. Например, когда я был во главе iOS-команды в Prisma, я был одновременно в секте Apple: ходил и говорил «нативный, а вот Slack — такое говно, написано на вебе, гигабайт памяти жрёт, вот если бы они на нативе написали — тогда респект».
[1:11:00] Андрей: Я очень сильно сам трансформировался. Для меня сейчас нативные приложения — вообще не серьёзно. Более того, я считаю, что это просто бред — писать нативные приложения в 99% случаев. Если вы не делаете видеоредактор, фоторедактор, игру или что-то 3D-heavy, автокад — whatever, — то, например, если вы делаете приложение для аптеки «Ригла» или интернет-магазин для «Ламоды», нет ни одной причины, почему это нельзя сделать на Ionic и сэкономить 3x на разработчиках, 3x на дизайнерах, 3x на проектах. На мой взгляд, делать нативные приложения — это привилегия компании с бесконечными ресурсами, типа Сбербанка или Airbnb, а вообще это просто скам. Я сейчас пользуюсь фитнес-апкой Renaissance Periodization: заходишь на веб-сайт, даже в App Store ничего не скачиваешь, просто нажимаешь «добавить на домашний экран», оно открывается в фуллскрине без сафариевских хедеров — всё, пользуешься как апкой. Я заплачу им 300 долларов в год подписки, они 30% Apple не отдают: эффективно у них выручка на 50% больше, а прибыль, может, в 10 раз. Я сам через эту трансформацию прошёл — довольно eye-opening, — и знаю, что она непростая, но сейчас по-другому смотреть уже не могу.
[1:12:38] Андрей: Дальше надо понимать, что некий статус-кво, который образовался, многие люди зафиксировали как новый бейзлайн. Я смотрю на многих людей, которые сформировались как разработчики, например, с 2016 по 2020 год: они прошли какой-то путь и живут в парадигме, что вот это и есть база. Все знают, как многие разработчики работают: три часа в день, удалённо. Но тут важно контекстуализировать, когда это всё происходило. Во-первых, это происходило во время бума рынка смартфонов: клюшкой рос рынок мобильных приложений, тянул за собой всю айтишку, и случилось, по сути, once in a lifetime — я даже не знаю, когда в следующий раз такое будет, с AR-очками или роботами, — когда рынок это 8 миллиардов людей. Появился гаджет, который купит каждый человек на планете, и если ты делаешь бизнес, твой рынок — 8 миллиардов: выпускаешь приложение и конкурируешь за всех людей на планете. И это всё летело по экспоненте.
[1:14:22] Андрей: Моё представление о том, как делаются стартапы, сформировалось в Prisma, и я думал: капец, стартапы вообще весело делать — приехал, что-то на слайды, поднял 2 миллиона долларов, поехал на Bentley, как в Кремниевой долине показывают: в стриптизе часть потратил, вечеринку закатил, всем большие зарплаты раздал, потом ещё поднял. И так и было, к сожалению. Я, например, не был в достаточной позиции, чтобы так поднимать деньги — был молод и неопытен, доступа не было, — но так правда было. Были всякие эти Адамы Нойманы, которые разводили народ на миллиарды с WeWork, всякие Элизабет, которые сейчас сидят. Это существовало. Параллельно был ZIRP — Zero Interest Rate Policy: в Америке эффективно на протяжении двух декад были вертолётные деньги, ключевая ставка 0%. Соответственно, если бы вы положили деньги на депозит, они бы постепенно обесценивались — долларовые депозиты были 0,1% или 1%, очень маленькие. Из-за этого очень сильно рос венчурный рынок: там можно было сделать 10% годовых, ещё и с учётом бума. Росли бигтехи, у них появилась ультраприбыль, случился этот Magnificent 7, они начали поглощать стартапы, потому что денег так много, а конкуренцию себе растить не хотели. Венчурные капиталисты много зарабатывали, ещё больше вкидывали — был этот маховик.
[1:16:18] Андрей: И понятное дело, что по пути мы, айтишники, которые в нужное время в нужном месте оказались, на этом всём нагрелись. Кому что перепало: кому смузи в ВК бесконечные с морковным соком, кому зарплаты с шестью бонусами в Сбербанке, кому эти тиктоки «The Day of a Product Manager in TikTok», где они у бассейна целый день тусуются. Кто как присосался. Или эти волки — ребята из overemployment-комьюнити, которые что-то по три работы. У кого на что смекалки хватило, те столько костей с барского стола и получили. Но это всё в прошлом. Рынок смартфонов стагнирует, не растёт. ZIRP больше нет, казначейские облигации дают пять процентов. Поэтому у венчурных капиталистов теперь есть понятный бенчмарк: у меня есть миллион долларов, я могу с нулевым риском положить его на депозит и заработать пятьдесят тысяч за год, а могу с огромным риском положить в венчурный фонд и заработать десять процентов. Интересно мне это? Наверное, уже нет — я хочу двадцать. А значит, каким стартапам я буду давать деньги? Тем, которые будут зарабатывать деньги, а не которые делают Uber для кошек и собак, которые никогда ничего не принесут.
[1:17:58] Андрей: И поэтому некий бейзлайн, который все для себя зафиксировали как «работа в IT» — не спеша права качаешь, выгорел, тебе токсично что-то сказали, «давайте активити сделаем», гибкие графики «мне комфортнее работать по ночам, поэтому я буду три часа в Slack отвечать», — это, во-первых. Во-вторых, сама модель компенсации разработчиков просто абсурдная. Мы платим разработчикам зарплату. Это самое тупое, что можно придумать. Ты приходишь к сапожнику — ты не платишь ему за часы: если он 24 часа будет чинить сапог, ты не заплатишь в 24 раза больше, ты заплатишь за сапог, чтобы он был готов. А разработчик сейчас напрямую замотивирован плохо работать: чем хуже и дольше он работает, тем больше зарабатывает. Чем дольше мусолятся итерации с QA, чем дольше грумят с продуктами, чем дольше идёт ревью — тем больше разработчики в итоге заработают. В эффективном рынке такого быть не может. Это раздача вертолётных денег, и она была возможна, потому что бигтех заработал так много. Условный Джефф Безос заработал столько, что ему не жалко — не то что он несознательно это делал, просто вопрос эффективности не стоял. Он мог позволить себе сто инженеров кинуть на экран «корзина». Даже если каждый забрал 150 тысяч долларов, для Амазона это округление после запятой — Амазон заработал триллион.
[1:21:19] Андрей: Но я думаю, что этой индустрии, скорее всего, больше нет. Есть косвенные сигналы. У всего есть инерция, и бигтех продолжает показывать сверхприбыль. Но мы видим: в Китае потребительский сектор упал, Alibaba и все в полу лежат. И что случится в Америке — казначейские облигации станут ещё больше yield давать, или тарифы, — у Apple, у Google упадёт выручка, и сразу под нож все полетят. Потому что менеджеры не захотят свои бонусы срезать — лучше эффективность повысить. Это к чему? Если вы в позиции «я ортодоксальный разработчик, езжу на Vim, пишу красивый код, рефакторю, каждую строчку пишу самостоятельно», то вы должны понимать: даже если бы сейчас не было революции — а её, может, и нет, это спорно; я в неё верю, но вы можете сказать, что это всё херня, и что я скоро сам приползу к ручным разработчикам, потому что у меня будет так много говнокода, он станет таким комплексным, я не буду знать, как это работает, и буду молить, чтобы кто-то переписал, иначе бизнес разрушится (такая вероятность есть, я оцениваю её как низкую, но объективно она присутствует), — но даже если убрать это из уравнения, времена для разработчиков в целом поменялись, потому что поменялась экономическая конъюнктура вокруг IT-сектора.
[1:22:16] Андрей: И если вы это игнорируете, то вас может ждать в какой-то момент удивление. Сначала рекрутеры станут реже писать, потом на работе начнут больше требовать, потом вы уйдёте в sabbatical на три месяца, думая, что всегда можно с Бали вернуться и найти работу, — а уже потом может не получиться быстро найти, придётся понижаться по grade, чтобы куда-то устроиться. Поэтому размышлять о том, как быть competitive, — самое время. Даже не потому, что AI, а просто потому, что непонятно. Если сейчас полетят роботы — будет Robotics, будет такой бум, что все купят себе роботов, как купили стиральные машинки, — окей, будет ещё один NEP, как Дженсен Хуанг обещает. Но роботы могут стоить 15 тысяч долларов, а могут подешеветь, и тогда их все не купят, и не будет нового триллионного рынка. Дальше логическая цепочка понятна. Сейчас вставать в позу, мне кажется, странно. Я бы на месте разработчиков, наоборот, больше подумал, как остаться в пределе. И, опять же, мне этот жанр — фиармонгерить, что разработчиков скоро заменит AI, — он такой немного пошлый, вульгарный, и я в нём не хотел бы быть заметным спикером. Но полностью игнорировать происходящее тоже странно. Свитспот где-то посередине: точно нужно быть heavy-AI-юзером, чтобы как можно больше делать, и точно надо поменять майндсет.
[1:25:15] Андрей: Потому что код — это теперь, грубо говоря, скомпилированная документация. Как раньше у нас был ассемблер: он вам был не нужен, у вас был C++ как ценность, которую вы несёте, а ассемблер — какой-то intermediate-степ репрезентации вашего кода. Он у вас был, но вы его не рассматривали как что-то, что у вас есть. Ну ассемблер и ассемблер, какой-то бинарь. Мне кажется, теперь мы можем думать, что наш код — это ассемблер для документации или для продуктовых задач. Есть задачки, и мы их компилируем в код. И код — это intermediate-репрезентация, которая сама по себе inherently ценности не несёт. Если мы прямо сейчас возьмём и open-source-нём фронтенд Тинькофф-банка — кто-то дропнет весь TypeScript-овый код Тинькоффа на торренты, — literally nothing will happen. Ни на рубль акции Тинькоффа не сдвинутся, ни вверх, ни вниз. Потому что никому, кроме Тинькоффа, этот код не нужен. Никто с ним ничего, кроме самого Тинькоффа, сделать не сможет. Ты не можешь взять оттуда фичу оплаты ипотеки и спилить её в Совкомбанк — там совершенно другая кодовая база. Поэтому фронтенд-код вообще ценности не несёт: он ценен только в контексте бизнеса, для которого вы его пишете.
[1:25:58] Андрей: Есть исключения, понятно. Например, если утечёт наш код волюметрических видосов — мы потеряем ключевое технологическое преимущество, потому что такую же технологию смогут реплицировать. Но если утечёт наш фронтенд-код, ничего не поменяется — мы можем его open-source-нуть хоть завтра. И из-за этого нам нужно теперь думать так: нет никакой ценности в том, что мы написали красивый код. Но есть ценность в том, что мы написали код, который не ломается, — хорошего качества не с точки зрения читабельности, а с точки зрения того, что у него не перемножается комплексность: если сломалось в одном месте, не сломалось всё; и что мы его тестируем, желательно автоматически. И по-другому подумать над тем, что важно. Раньше мы оптимизировали читабельность кода — и, возможно, правильно делали. Потому что даже мне как CTO это выгодно: если мне написали нечитабельный код, то в следующий раз, когда я отправлю туда человека, я ему эффективно больше заплачу, потому что он дольше будет разбираться. Но если я получил экран за 0 долларов и за 0 минут, а потом отредачил его за 0 долларов и 0 минут, — мне, строго говоря, пофиг, хорошо он написан или плохо, если он не распространяет свою говнокодность вокруг.
[1:27:53] Андрей: А если даже нейронки упёрлись в потолок и сейчас не могут мне что-то сделать с этим экраном, то к моменту, когда я отправлю туда десант в виде людей, я сделаю это впервые: я до этого ещё не заплатил за это деньги. Это будет мой первый раз, когда я плачу людям — через зарплату, их время — за то, чтобы они туда пошли. И мне пофиг, потому что они вообще могут бульдозером там всё снести, даже не редачить, а просто снести и с курсорчиком быстро с нуля написать красиво, плюс сделать нужный фикс. Мне кажется, нам всем жёстко надо поменять мышление о том, в чём заключается наша работа и что вообще значит быть разработчиком. По крайней мере, я переосмысляю это каждый день. Всех тоже призываю, но каждому своё. Кто-то может со мной не соглашаться — это тоже окей, но вот я сейчас в таком майндсете.
[1:28:38] Александр: Действительно, как будто бы мы начали с того, как AI трансформирует профессию, а вышли на более широкий дискурс: как вообще профессия трансформируется — и не только я её трансформирую, а мировая экономическая ситуация это делает, и то, что было четыре года назад, уже совершенно не так. И как будто бы я к этим размышлениям тоже сам в голове давно приходил. Даже до того, как начал пользоваться агентами для программирования, ещё во времена Copilot, где «тапочком» всё дополнял, я понимал, что тот код, который я произвожу, имеет ценность, потому что выходит из-под меня, я какой-то контроль качества провожу, он читаемый, composable, легко тестируется. Но глобально мне платят по сути не за моё время, не за то, сколько строчек кода я написал, а за результат, который по итогу моей работы бизнес видит. И я, кстати, работаю и работал в технологических компаниях: я не писал фронтенды, не писал апки — я пишу базы данных. И даже в этом продукте я понимаю, что мне платят не за то, как долго я сижу, а за то, что разработанная функциональность удовлетворяет качеством, делает то, что от неё хотят. Под этим углом я в последнее время на свою работу и смотрю: какая разница, когда я этот код написал, что я делал днём, пока это происходило, если мы договорились, что через неделю он будет готов, — и он готов через неделю, и делает то, что должен. Идея, что мне платят за 8 часов перед компом, уже точно не имеет смысла. Она давно устарела, но сейчас просто придёт чувак, который офигительно пользуется всякими AI-тулзами, и за день нафигачит то, что ты за две недели делал, а результат будет один и тот же. И кому бизнес заплатит? Естественно, тому чуваку. Капитализм двигает нас в ту сторону, что надо становиться другими, иначе мы просто проиграем.
[1:31:00] Александр: Прикольно, что мои внутренние мысли находят отклик среди других людей, среди гостей, которых я зову. Круто. А если говорить про конкретные вещи: ты наметил области, в которые можно идти, где пока не угрожает, — всякие robotics и узкоспециализированные штуки, где кода много нет, open-source, на котором LLM-ки обучились, но, возможно, через год им и не нужен будет этот код — они через какие-то свои внутренние адаптации смогут писать код, который не видели. Ладно, сейчас ситуация такая. А если говорить не про сферы, а про конкретные вещи: ты очень часто упоминал Cursor. Ты им пользовался. Для меня как для вимера, чувака, который программирует в Neovim, Cursor оказался совершенно не юзабельной штукой — мне нужен, наверное, второй подход, чтобы просто суметь программировать в Cursor. Мне некомфортно программировать мышкой, я пользуюсь другими тулзами, например Aider. Это терминальный агент, там есть reasoning-модель, есть модель, которая код пишет, и через git он тебе коммитиками делает то, что ты хочешь, и ты можешь по истории вверх-вниз. И также в виде диалога общаешься. Мне прикольно. Мы недавно на стриме за полчаса, очень угорая, написали морской бой на Python и даже не вникали, что там происходит. Прикольно было. Так что это работает. Какие у тебя ещё есть инсайды по тулзам, помимо очевидного?
[1:32:34] Андрей: Их так много, что я уже сам лично не могу отсматривать все, — поэтому мы в компании и внедрили эту AI-встречу по средам, где распределили обязанность смотреть на разные штуки. Из того, что мне сейчас интересно, — отсмотреть ландшафт асинхронных агентов: не которые у тебя крутятся на компьютере, а типа Jules, Codex, — где ты поставил задачку, и тебе через час пришло уведомление на почту «готово». Мне нравится, не по смыслу, а по лендингам, Factory AI — выглядит очень круто, и в Твиттере говорят, что это best agent around. Не могу сказать, так это или нет, но лендос выглядит хорошо, отзывы хорошие, точно буду смотреть. Есть Replit, тоже много хорошего слышал. Сам пробовал Jules от Google — очень хороший опыт, именно опыт: код получился не очень, ещё надо подумать, как ему rules подсунуть, плюс они дают всего пять реквестов в день, что очень мало для серьёзной работы, и денег даже нельзя заплатить. Но что мне в Jules понравилось — они позиционируют себя как агент для задач, которыми ты не хочешь заниматься. Прямо на лендинге говорят: используйте нас для всякой фигни, а хороший код пишите сами.
[1:34:07] Андрей: А для таких, как ты, есть ещё Claude Code — может, ты знаешь, это попсовая тема. Сам её ещё не пробовал, но меня интересует одна фича, называется — да как же… Это когда ты можешь скормить ей целую репку или папку, и она создаст один файлик, в котором будет написано всё про эти файлики, которые ты скормил: грубо говоря, перемелет их и сделает такую устремлённую базу данных, которую ей самой удобно потреблять. Есть ещё тула Repomix — я сейчас активно в эту сторону смотрю. Размышляю, как организовать процесс так, чтобы мы заходили в папочку со страничкой на фронте, а в корне лежал файлик statusquo.md, который в LLM-friendly-формате знает все нюансы на этом экране: не просто что он делает, а все нюансы — что вот тут кнопочка не должна загораться, тут не просто так такой padding, здесь обрати внимание, потому что в прошлый раз юзер говорил, что это баг, и мы его фиксили, — это важно, написано не просто так. Файлик, который хорошо репрезентит эти знания и расставляет акценты на нюансах. Пока не знаю, чем его можно сделать — может, claude init, хочу попробовать, может, Repomix, может, своим промтом, который будет запекать папочку Cursor’ом. И потом, когда я правлю код с нейронкой, я говорю: «Теперь посмотри на этот файлик и убедись, что ты не сделал регрессов, ничего не забыла, важные детали не потеряла». А после этого: «Давай теперь создадим новый init-файлик, раз мы это завалидировали. И по этому init-файлику ещё пишем тесты».
[1:36:07] Андрей: И тесты — я сейчас активно смотрю на Browserbase, очень крутая штука, по крайней мере по лендингам, ещё не попробовал. Это B2B-SaaS-ик: они придумали свой браузер-движок, как Selenium, только сделали Stagehand — AI-oriented browser agent. Суть в том, что это Selenium, который принимает human-readable-промты: вместо того чтобы говорить «find button by xpath id, button1, add to cart», ты говоришь «press on add to cart», или даже более верхний уровень — «login to account with credentials», и он тебе отдаёт suggestion, а ты вызываешь «act on suggestion», он выполняет. И Browserbase разрабатывает этот движок плюс платформу, чтобы заспавнить, например, 150 конкурентных браузеров и всё прогнать; плюс они записывают сессии — можно посмотреть по шагам, что он делал, куда упёрся, где фейлилось. Это всё интегрируется в pipeline. И сейчас мне хочется собрать — я ничего из того, что сказал, сам не попробовал, это у меня в бэклоге — некую фантазийную парадигму работы.
[1:37:34] Андрей: Я замечаю, что при всём том, что мы активно развиваем rules у Cursor, — я придумываю метарульсы, например, говорю ему: каждый раз, когда я тебя поправляю, делай заметку в комментариях у кода, что «it’s important, user made an accident», и потом, если находишь такие комментарии, будь экстраосторожным или спрашивай меня, можно ли это удалить, — всякие зацикленные штуки, и это свой эффект даёт. Но всё ещё мои знания о продукте имеют для AI высокую ценность, я это прям чувствую: я знаю, куда AI нужно смотреть, я тегаю нужные файлики, пишу «собачка этот файлик, собачка этот», говорю «take inspiration from это», «не забудь про то, что у нас есть тёмная тема, не забудь про то, сё, пятое-десятое». И моя основная цель сейчас — снижение вот этого контекста, который я каждый раз должен давать. Но при этом я понимаю, как работают нейронки, и по тупому пути идти не хочу: не хочу засунуть в rules всю инфу про проект и засрать всё контекстное окно, отвлекать нейронку. Я хочу, чтобы в каждый момент времени нейронка могла фокусироваться на задаче: если я говорю поменять валидацию пароля на логине, я не хочу, чтобы она знала, что у меня на экране профили, какие миграции. Не хочу забивать ей голову, но при этом не хочу каждый раз провайдить это руками — хочу снизить зависимость от себя.
[1:39:24] Андрей: Короче, из инструментов, которые я смотрю, — это три категории. Асинхронные агенты мне сейчас очень интересны как замена джунам: хочу посмотреть, до какого предела их можно толкнуть и как им помочь. Тут важно, что нам всем по 30 лет, и есть соблазн: если первый раз что-то не получается, сказать «а, говно какое-то». И ты так себя учишь, что, чел, если у тебя не получилось, наверное, ты неправильно пользовался, — прояви креативность. Сейчас Jules мне плохенький pull request сделал, но наш CPO себе в Bolt.new склепала админку, сделала первый pull request, пришла с восторженными глазами. Мы хотим, чтобы продукты сами делали простые задачи — terms of service поменять, бейджик повесить на paywall. Мне интересно, как этим агентам помочь: написать agents.md с rules, или написать «не забудь, что у нас в каждой папке есть init.md, смотри на него в начале — или, наверное, в конце, — и убедись, что ничего важного не удалила». Смотрю на init.md и тулы, которые позволяют запечь текущую инфу о коде. И смотрю на тестирование: Browserbase, Stagehand — я прям совсем чуть-чуть его потыкал. Они ещё Y Combinator, стартапчик, всё оверхайпнуто. Long story short, инструментов уже сильно больше, чем вы можете попробовать. И, имхо, они все дорогие: все хотят 50–60 долларов. Мы за Bolt заплатили 60 долларов, за Lovable заплатили, за Figma Make, за Factory платим, за Cursor платим — вообще, наверное, косарь долларов в месяц, потому что там сиденья плюс платные токены. Это дорого, реально, весь этот AI.
[1:42:25] Андрей: Сейчас у меня такое: я, как бы, дятловый с долларами в глазах — «нам надо всё попробовать, всё прочекать». Но по факту сейчас чуть-чуть отрезвляюсь от этой агонии и понимаю, что лучше бы мне осесть с каким-то агентиком, пусть он даже не будет state-of-the-art. В моменте, может, будет другой агентик поинтереснее, зато этот уже будет родной: я знаю, на какие rules он смотрит, с чем справляется, и лучше буду его подтачивать, чем прыгать с агента на агента, где все по-разному всё делают. Мы так и планируем. Думаю, ещё 4–5 недель будем активно исследовать тулы, я собираюсь Factory AI попробовать обстоятельно на следующей неделе. И MCP-шки, мне кажется, интересно. Прежде всего мне они интересны как физлицу: я бы хотел MCP на Яндекс.Такси, чтобы утром сказать «закажи мне такси в офис», пойти в лифт, а когда спустился — оно уже стоит, чтобы я не тыкал это в телефоне. Или «закажи мне мой стек bad’ов на iHerb, он заканчивается». Но и в девелоперских MCP-шках несколько интересных мне попалось.
[1:43:19] Андрей: Первое — браузер-tools. На мой взгляд, сочная тема. Это MCP на дев-панельку браузера. Ты вставляешь плагинчик в Chrome — расширение, — поднимаешь сервачок, который общается с этим плагином и предоставляет MCP-интерфейс, байндишь эту MCP-шку в Cursor, и она умеет дать всё, что может отдать дев-панель: реквесты, которые пришли-ушли, что в консольных логах. Ты даже можешь в браузере выбрать какой-то элемент и сказать «get select, посмотри на то, что я сейчас выбрал, там баг» или «поменяй в этом элементе шрифт». Или сказать Cursor’у «сделай скриншот» — он сам сделает скриншот и скормит его себе, он же мультимодальный. Это очень сильный продуктивити-буст. Потому что до этой MCP-шки ты всё равно решаешь микрокогнитивные задачи: в консоли что-то вывалилось, ты выделяешь текст, копируешь, вставляешь в Cursor, пишешь «у меня тут ошибка», он фиксит. А тут ты просто говоришь «работай, пока в консоли не будет чисто», и он сам начинает: get console logs, посмотрел, пофиксил, тут линтер поругал. Ты начинаешь его бить по рукам, и он сам в этом лупе крутится, пока всё не доделает. Это очень сильно меняет работу.
[1:45:08] Андрей: Плюс есть интересная MCP-шка на Postgres. Ты можешь не описывать нейронке в доке, какие у тебя схемы, как таблицы выглядят, — просто говоришь: «У меня есть MCP на мою Postgres. Если сейчас что-то делаешь, новые колонки интродюсишь, миграции — по всем вопросам обращайся в MCP Postgres», и она смотрит. И мы сейчас активно исследуем MCP Figma — пока результаты не очень. Но, опять же, у нас сейчас жёсткая парадигма: если результаты не очень — это мы миссьюзаем, а не инструмент плохой. Это может быть не всегда правда, по факту может быть реально гиммик, но мы не хотим заранее про все инструменты думать, что это гиммик, — это не очень продуктивный подход, лучше подумать, что мы можем делать не так. Короче, MCP-шки, на мой взгляд, немного оверхайп: разговора дофига, а полезных — ну, не знаю. На YouTube кто-то рассказывает: MCP на GitHub, зачем он нужен? Тебе что, сложно самому репозиторий сделать? Захламлять контекст нейронки «create new repo» — ты каждый день репозитории новые делаешь? Какой-то бред. MCP должны быть на high-frequency-задачи, потому что они всё время подсовываются агенту как опция и, соответственно, нейронку отвлекают. Какие-то дебилоидные MCP-шки, непонятно. Может, есть корпоративные юзкейсы — код-ревью: говоришь MCP-шке «посмотри на комменты и внедри их». Может, полезно, но у нас такого нет, мы код-ревью не делаем, поэтому просто не очень актуальная тула.
[1:47:11] Андрей: Короче, ландшафт инструментов широкий, их не пересчитать: какие-то Mason’ы, agents. Есть от OpenAI ещё много, но я их просто недолюбливаю, поэтому Codex, например, чтобы я пользовался — думаю, не буду. Даже без них есть Windsurf — конкурент Cursor, тоже руки не дошли попробовать. Много чего. Но я сейчас уже хочу выйти из этой лихорадки, потому что она меня немножко психологически перегружает — их так много. Уже думаю, что лучше settle down с не самым лучшим инструментом, зато я его полноценно в наш бизнес внедрю, всех научу им пользоваться, сам научусь — и в итоге на круг лучше получится.
[1:48:10] Александр: Да-да, как раз к этому и хотел подвести — почему я про это начал спрашивать. У меня тоже есть мнение, что настолько много всего этого сейчас. Во-первых, попробуй отличи скам-стартап от нормальных чуваков, которые понимают, что делают, — тоже задачка. А второе — у меня голова ограничена, я не нейронка, я всё ещё человек, у меня контекстное окно максимум 5–6 штук. И внедрять это, каждый день пробовать — «а какая тут нейронка, а это лучше-хуже, а тут попробовал» — блин, мне надо задачи решать. Я хочу найти себе инструмент, парочку, которые будут good enough для меня, и просто с их помощью решать задачи, а API, в которые они ходят, будут улучшаться с каждым месяцем — и у меня будет всё хорошо. Я пока остановился на Aider — это command line для программирования. Кстати, попробовал там Sonnet 4 последнюю, вроде прикольно было, все про неё говорят, ты, кстати, тоже в канале писал, что он там outperform’ит всех. Мне очень нравится идея именно управления вниманием нейронки — контекстным окном, тем, что мы в него суём в момент, когда хотим что-то от неё решить. Мне сейчас как инженеру дико не по себе, когда я даю доступ ко всему репозиторию и говорю «сделай мне новый endpoint». Ну зачем нейронке, чтобы сделать endpoint, видеть какие-то файлы конфигураций, dependency? Дай ей файлик с endpoint, дай тесты на эти endpoint и попроси сделать ещё один. И она сделает это охрененно, потому что у неё контекстное окно будет тысяча символов. И вот управлять этим вниманием, возможность лёгкого управления меня сильно подкупает — в Aider как раз это есть.
[1:50:04] Александр: Какие-то ещё практические заметки от хозяйки? Ну, типа, последние модельки и возможность обновляться на новые — прикольно.
[1:50:15] Андрей: С модельками, знаешь, есть ещё нюанс, который важно учитывать. Они же постоянно выходят новые: то Gemini 2.5, то 3.5 Sonnet, то 3.7 Sonnet, то o3, то Claude 4, сейчас Qwen, этот DeepSeek новый дропнули, open-source, который перформит, тот же R1. Тут то же самое, что с тулами. Ты приучиваешься к манерам одной нейронки, потом другую включаешь — она всё по-другому делает. Gemini, например, в супердругом стиле пишет код, не как Claude. И я замечаю: несмотря на то что в некоторых кейсах Gemini — у него же миллион контекстное окно, и по идее было бы неплохо его юзать, — но из-за того, что она пишет всё так по-другому, и как будто не те тулы, они иногда конфликтуют, она запинается. Я ловлю себя на мысли, что лучше с Claude 4 буду сидеть, и лучше под него всё затачивать, чем экспериментировать. Было интересное исследование недавно по SimpleQA: чуваки говорят, что, несмотря на то что у Claude 4 упали бенчи по SimpleQA (стандартный open-source), у него очень сильно упал рейт галлюцинаций. Потому что Claude 4 уже очень сильно заточен под использование тулов, и если запускается в environment без тулов, он отказывается гессить и рисковать — говорит «сори, ты не даёшь мне почитать файл, я не могу ответить на этот вопрос». И галлюцинации очень падают — а у o3 там рейтинг галлюцинаций чуть ли не ноль, она практически не галлюцинирует именно в tool-environment.
[1:52:09] Андрей: Это важный показатель. Ты можешь посмотреть: вышла новая модель, она по бенчам самая лучшая. Но эти бенчи — абсолютно неосязаемые вещи, потому что теперь тебе важны не только бенчи самой модели, тебе важно, как эта моделька дружит с инфрой, в которой ты её запускаешь. Умеет ли она пользоваться всеми этими тулами? Например, почему я пользуюсь Cursor? Я, в принципе, смузи-чел, я не использую все эти терминальные штуки, мне неудобно. Но помимо этого я понимаю, что у них узор именно tool-интеграций стоит — потому что они самые большие, самые богатые, у них больше всего юзеров. Поэтому если у них сломается tool «search», или tool «read file», или tool «share file structure», они это за два часа увидят по баг-репорту и по фиксе. А в Aider — не знаю, как там, но, возможно, будет какая-то задержка. Поэтому, мне кажется, тоже надо меньше прыгать с модельки на модельку — хотя когда ты в Твиттере сидишь, невозможно: постоянно, как инфоцыгане, «this incredible Sonnet 4 one-shot at me» и так далее. Но я сам ловлю себя на мысли, что лучше settle down и в рамках одной модельки учиться выжимать из неё по максимуму.
[1:53:37] Александр: По поводу тулов офигенно поговорили, модельки тоже затронули. Наверное, про языки программирования мы совсем не затронули. Интересный факт: большинство моделек хорошо программируют на Python, не на JavaScript, а на TypeScript — я в этом точно убедился. Неплохо вроде получается на Java, по крайней мере из моего опыта. И иногда получается на Rust, кстати говоря, если давать нормальное контекстное окно и фидбэк, — потому что у растовского компилятора, это моё сугубо мнение, самый охрененный вообще output о том, что происходит, и если этот output дать нейронке — показать «смотри», — она прям хорошенько из него выруливает. По крайней мере, у меня так получалось несколько раз. Ты что думаешь по поводу языков программирования? Ведь какая-то экспертиза у разработчиков должна быть в одном-двух-трёх языках? Куда сконцентрировать внимание, куда вектор направить?
[1:54:31] Андрей: Слушай, во-первых, я лично думаю, что такая тема, как языки программирования, перестала быть интересной где-то после появления последнего эшелона языков — возьмём Swift, Kotlin, Go и Rust, эту четвёрку. Даже когда они появились и все там поперехоливарили, я уже полностью потерял интерес к этой теме. Я как стартапер довольно давно понял, что мне лучше использовать всё самое попсовое, чтобы я людей легко нанял, легко заменил, если такая будет ситуация, чтобы я не обнаружил себя с кодовой базой на Crystal, Zig, Rust, Go и ещё каком-нибудь Elixir и не сидел, думая, как мне эту кодовую базу хотя бы запустить. Я сам как разработчик ещё до AI очень сильно перестал интересоваться темой языков программирования. Дискурс «какой язык лучше», мне кажется, неинтересный, немного инфантильный и такой сизифов труд: давайте придумаем виртуальные проблемы и начнём их решать — виртуальный спор, виртуальная энергия.
[1:56:09] Андрей: Но сейчас, в эпоху AI, — опять же, вот текст, который я написал, там мысли раскрыл достаточно внятно, но если коротко: из-за того что у нас есть суперпопулярные языки — Java, Python, TypeScript, — нейронки на них хорошо пишут код, и, соответственно, этого кода становится ещё больше, потому что люди его всё ещё валидируют, смотрят на него, пишут ещё больше, а нейронки ещё лучше обучаются. А на языках, которых кода меньше… Например, ты говоришь, что про Rust у тебя хороший опыт, — я в Твиттере видел. Ну, для меня Rust — несерьёзная тема. Мне кажется, прям крохи проектов, в которых использование Rust по-настоящему оправданно. Может, как раз Mozilla и Firefox — оправданный юзкейс. Но писать какие-то консюмерские апки на Rust — если это не 3ds Max, — ну, хз, каждому виднее, кто Rust использует, но мне кажется, это оверкил. Я вижу, что часто фидбэк-луп сводится к тому, что нейронка просто везде вставляет unsafe, unsafe, unsafe — и фактически нивелирует весь прикол Rust, потому что не может написать эти borrowing. Или я не особо разбираюсь.
[1:57:40] Александр: Borrow checker — это жёстко.
[1:57:42] Андрей: И поэтому у меня сейчас такая радикальная позиция. Во-первых, я считаю, что все мажорные производители попсовых фреймворков должны объявить бан на breaking change. Когда вы выпускаете breaking change React, например, или какого-нибудь Tailwind — вы для кого это делаете, можно спросить? Вы эффективно просто вставляете шум в обучение нейронки. Вместо того чтобы всем сказать «всё, вот у нас есть React 19, самые популярные нейронки, и мы его теперь доводим до полного решения задачи фронтенда»… Потому что никто же не будет спорить, что на React 19, как и на 16, как и на 14, и, скорее всего, как на React 3, можно написать любое приложение. Просто React 19 чуть поудобнее, чуть по безопасности, но ты и на третьей версии мог написать что угодно. Поэтому когда вы сейчас новые версии интродюсите, вы зачем это делаете? Вот вы интродюсите новую версию React, она теперь брейкает, у неё какой-то новый API. И теперь я должен нейронке подсовывать какую-то документацию на этот React, говорить ей «вот теперь так пиши, потому что то, что ты знаешь, теперь неактуально». Это просто полный бред, это только мешает.
[1:59:15] Андрей: И то же самое с языками программирования. Наверное, пока мы писали это руками, был определённый смысл размышлять, а как это может быть по-другому. Я, например, очень люблю Swift — не текущий, текущий Swift немножко потерял себя, — но Swift пятой версии субъективно кажется красивым, элегантным языком, очень легко читается, невероятно приятно писать. Из-за того, что он так сделан под автокомплит: там всё на точку начинается, поэтому в любом месте можешь IntelliSense вызвать, и через эти протоколы невероятно красиво всё обустраивать. Мне субъективно очень нравится. Но, блин, нейронки лучше знают C++, и C++ быстрее, и C++, может, больше, чем Swift, — как минимум, он может свой собственный компилятор написать. И я люблю Swift, но не понимаю, зачем мне сейчас писать, скажем, свою кор-часть на Swift, — я лучше напишу её на C++, потому что мне нейронка с этим поможет, я быстрее буду писать, в итоге лучше заработаю. То же касается всяких Zig, Mojo и языков, которые в моём инфополе — в high-performance- или game-dev-комьюнити. Кому они нужны теперь? Зачем люди тратят на это ресурсы?
[2:00:54] Андрей: Вот прикинь: если бы мы взяли всех людей, которые контрибьютят в компилятор Rust, всех, кто контрибьютит в компилятор Zig, Swift и так далее, и отправили их чинить баги или писать оптимизации для LLVM на C++. Ну это же было бы лучше! У нас был бы C++, который быстрее, стабильнее, более функциональный. И параллельно ещё нейроночки бы обучились на C++, и всё — мы бы вообще решили C++-программирование как проблему изначально. А на C++ можешь всё что угодно написать. Нет такого, что Swift позволяет что-то сделать, что не позволяет C++, — он может делать это более безопасным, больше ошибок на этапе компиляции отловить, не знаю, но по смыслу на C++ можешь всё. И тогда у меня возникает вопрос: если ты больше не пишешь 90% кода сам, зачем тебе писать его на Rust? Потерпи, напиши небольшой сниппет на C++, или даже большой, — но если ты 90% другого кода пишешь теперь бесплатно, ну камон.
[2:02:08] Андрей: Я знаю, что ты любишь Rust, и у меня просто немного нарочито радикальные мысли — но мы же в рамках подкаста, я думаю, это понятная канва, мы в определённом жанре сейчас общаемся. Мне-то, по большому счёту, всё равно, кто какие языки использует. Просто я, например, для себя не могу найти мотивацию нанять разработчика, который мне бэкенд будет писать на Go. И аргументы за Go: у него форматтер всё делает однотипным, и всё становится очень читаемым. Для меня это вообще не аргумент — не против чего. Что мне с этого Go-форматтера? Короче, для меня это какой-то бред. Поэтому я сам выбираю в попсовых сферах программирования попсовые языки. И могу только искренне, по-человечески посоветовать: если вы сейчас где-то пишете какую-то эзотерику — на Scala или на чём угодно непопсовом, — то можете оказаться в двоякой ситуации. С одной стороны, вы можете зазолотиться на этом: если вы уже достаточно много Scala написали, чтобы её уже никогда не переписали на что-то другое, вы можете, как паразит, присосаться к этому месту — как люди, которые до сих пор 1С-бухгалтерию поддерживают: просто от безвыходности бизнеса им платят, потому что выбора нет, никто больше это делать не может.
[2:03:50] Андрей: Но если вы начинаете новый проект или проект небольшой, то, я думаю, вы очень быстро начнёте замечать, что ваши конкуренты на Java уже 3 фичи сделали, пока вы одну на Scala, а потом они 6, а вы 2. А они уже поняли, что 8-ю фичу не надо делать, а вы её только сделали. А они уже выкатили, катнули и поняли, что она никому не нужна, и выпилили. А вы только её закончили на Scala. Ну, у вас очень красивый функциональный код, и всё клёво, но только ваши конкуренты на дебильной Java 8 какой-нибудь — вообще историческое говно мамонта — уже всё сделали. Поэтому есть повод задуматься.
[2:04:31] Александр: Слушай, да, прекрасно понимаю про скорость разработки, попсовые языки и то, сколько новых инструментов появляется как раз под эти языки, — нейронки, возможно, это самое на поверхности заметное, что лучше всего работает с попсовыми штуками. Но так было и до них: самые крутые и функциональные фреймворки для веб-разработки исторически всегда были на Java. Вот Spring Framework — просто берёшь, изучаешь за два вечера, за два выходных весь Spring, и можешь делать всё в бэкенде. Если голова адекватная — всё, тебе больше ничего не надо. И так же сейчас происходит с нейронками. Тут есть две мысли. Первое — не факт, что этот статус-кво сохранится и нейронки не начнут нормально писать на всех языках. От этого мы не застрахованы. Я даже думаю, что так и будет рано или поздно: сейчас просто выстрелили первыми там, где больше всего данных, потом подтянутся другие. А второе — всё-таки вопрос: ты очень результат-ориентированный бизнес-чел, где главное гипотезы проверить, фичи выкатить. Но, допустим, саму имплементацию делает твой разработчик за десятерых. У этого разработчика — он же тоже человек — если что-то идёт не так, ведь не всё так гладко в работе с нейронками. Не знаю, какой у тебя опыт, но у меня бывало, что она какую-то херню написала, и без моей интервенции… Либо я не умею, делаю что-то не так, либо проще зайти в код, такой «вот здесь бага, скорее всего, давай перепишем», — чтобы понять, что там написано, мне нужно с этим кодом работать. И, наверное, всё ещё какие-то преференции: мне нравятся, например, функциональные языки. Оно, наверное, останется и будет с нами навсегда. Вопрос, насколько это теперь играет большую роль, — уже действительно не такую большую, но я бы выбрал что-то более знакомое мне.
[2:06:37] Александр: И знаешь, ещё напоследок у меня мысль в голове крутится почти с самого начала подкаста. Но я понимал, что это такая вещь, которую можно сказать в конце: как будто бы сейчас открывается просто огромное поле для сеньор-головастых чуваков. Ведь теперь вся компания может быть один человек. Такого, мне кажется, не было — всё равно нужна была команда, специализация. Да, были эти фуллстеки, но, камон, ты не можешь классно делать много всего. А теперь, овладев инструментами, настроив себя, можно просто в одно жало делать стартап и не зависеть ни от кого, кроме себя.
[2:07:19] Андрей: Слушай, ну, я в это не очень верю. Логика понятная: мы берём текущий тренд — «теперь я могу делать за четырёх людей», через год, наверное, смогу за десятерых, — и эндгейм, что я буду единственным стартапером в единственном лице. Но в чём прикол? А что ты будешь делать в это одно жало? И, скорее всего, расклад будет такой, что всё, что ты сможешь сделать в одно лицо интересного, смогут сделать ещё таких же 50 тысяч стартапов. И резко возникает вопрос: а какой cost у этого opportunity? Интересно ли тебе сейчас идти пилить? Допустим, даже если ты на edge — условно, ты уже освоил агентов, а все нет, или у тебя привилегированный доступ, — но ты знаешь, что в результате все их освоят, или 50 тысяч людей точно освоят. То сделаешь ли ты ставку на то, что ты в соло пойдёшь, запилишь стартап, и его не скопируют 50 тысяч человек? А если ты исходишь из того, что капитализм не спит, все друг друга мониторят, и как только где-то пахнет жареным — кто-то придумал B2B-SaaS, который качает бабло, и этот SaaS можно в соло сделать на Cursor, или даже просто взять твой B2B-SaaS как ссылку, скормить в Cursor и сказать «повтори всё, что там есть», — то это резко становится менее привлекательным. Получается очень низкий порог входа и очень высокая доступность, но она у всех есть, — то есть ты не можешь в соло это делать.
[2:09:24] Андрей: И поэтому, как я вижу, сейчас, наоборот, надо… Есть ультрамаленькие команды, которые, я думаю, если честно, останутся не у дел. Есть ультрабольшие команды, у которых тоже всё будет сложно: если вы в 400 айосеров пилите одну убер-аппу, скорее всего, вам даже с точки зрения толкания в мерж-конфликтах — хоть same, хоть не same — будет не очень. А вот in between есть некий свитспот. Понятно, я предвзят, но, мне кажется, наша команда, например, находится в таком свитспоте. Нас сейчас 19 человек, причём это полноценная компания: у нас есть бизнес-люди, продукт-люди, R&D-шники. Это очень много — это не 19 фронтендеров, а 19 человек во всей компании, с продуктами, тестировщиками, дизайнерами. И всё равно, даже хоть есть нейронки и они могут ускоряться, у тебя всё равно есть… Мы уже обсуждали: даже если я могу за 4 дня сделать это в соло, я-то могу за эти 4 дня ещё 10 других дел сделать. Поэтому мне бы хотелось, чтобы мы параллелизовались: эту задачку по админке теперь делает наш фронтендер, просто за трёх разработчиков, а я в это время курирую бизнес или делаю что-то, где нейронки ещё не особо хороши.
[2:10:54] Андрей: Я думаю, что, возможно, в коротком промежутке времени смышлёные типы вроде этого чела-француза, как-то его зовут, — Casio IO, Level IO, Levels IO, короче, он ещё к Лексу Фридману приходил, у него до 50 конкурентных стартапов, фоточки. Известный инди-хакер, который на PHP клепает эти. Таких чуваков, я думаю, в short term могут нормально этим opportunity воспользоваться — потому что пока есть ортодоксальные фронтендеры, которые сидят в Тинькоффе и говорят «ну блядь, Cursor не будем использовать», челы, которые быстро смекнули, уже сделали себе 12 подпроектов, раскатили, с каждого по 400 долларов в месяц зарабатывают, стали а-ля financially independent. Но я не уверен, что это будет sustainable. По мере того как порог входа в такую фигню понижается, и она качает деньги, — естественный вывод, что туда, где качают деньги, прибежит народ, который тоже захочет качать деньги, с вами рыночек попилит, и вам придётся как-то сожительствовать. Что окей для небольшого объёма амбиций, но если ты уж идёшь делать что-то в соло, должен быть какой-то high risk, high reward. Не очень интересно пойти делать что-то в соло и зарабатывать столько, сколько тебе без риска на зарплате платили, только теперь стрессовать. Если уж идёшь делать что-то для себя, хочется, чтобы там какой-то большой куш был в конце, хотя бы потенциально.
[2:12:46] Андрей: Поэтому я бы думал в сторону того, чтобы объединяться в команды. Мне кажется, целевое состояние — это 10–30 человек. Такие команды могут быть ультра-компетитивны. Если каждый из них суперпрофессионал в использовании AI и может менеджерить кучу разных проектов, умело использовать асинхронный агент: ты проснулся, Jules’у 5 задач поставил, Factory поставил 5 задач, раскинул, сам что-то поделал, вечером посмотрел — 35 pull request’ов, это выкинул, это выкинул, это вмёрджил, это потестил, собрал, бум — в продакшн. Мне, кстати, кажется, ещё надо отказаться от идеи релизов раз в две недели.
[2:13:34] Александр: А что это за идея?
[2:13:36] Андрей: Релизы надо каждый, когда надо.
[2:13:38] Александр: Вот мне тоже так кажется.
[2:13:40] Андрей: Мы релизим по старинке, раз в 10, раз в 14 дней, а мне кажется, в эпоху AI надо сильно ускорять feedback loop: сделали релиз, сделали релиз, сделали релиз. И я, короче, верю. Я вначале специально представился, чтобы ко мне не было вопросов: я определённым образом прожил начало осознанной жизни и карьеры, поэтому я ультра-предвзят, всю жизнь нахожусь в маленьких командах — и сейчас говорю вам, что маленькие команды самые лучшие. Можно догадаться, что немножко удивительно стало. Я пропагандирую то, как я делаю. Как говорит Ася Казанцева (признана в РФ иностранным агентом), изменение предпочтений вследствие выбора. Возможно, такое явление есть, но тем не менее я вам такую перспективу даю, почему в это верю. Вы, может быть, находясь в позиции соло-девелопера, поможете увидеть другие opportunity, или наоборот, если вы в бигкорпусе, скажете: «Чел, ты делаешь проекты, у которых lifespan 36 месяцев, а мы тут уже 20-й год работаем, — приди, попробуй у нас тест написать и расскажи про AI». Это всё валидные аргументы, но я-то рассуждаю, исходя из своей песочницы.
[2:15:08] Александр: То есть, грубо говоря, не компания из одного человека, а компания из нескольких людей, пары десятков, каждый из которых суперпрофессионал в чём-то своём: в дизайне охренен, по фронтенду шарит, бэкендер супер лютый, может настроить весь девелоперский пайплайн и релиз сам, но ещё может отлично и эффективно делегировать это агентам, тулам, whatever, — и получается, он один работает за команду бэкендеров в конкурентной компании, которая этого не имеет.
[2:15:45] Александр: Ну, тоже круто, мне тоже это близко. Я, конечно, начал говорить про компанию из одного человека, но сейчас понимаю, что да, если у меня будет конкурент из такой команды, которую ты описал, я не вытяну — меня обыграют. Но я и не такой инди.
[2:16:02] Андрей: Да, сори, что перебил, просто ты сказал один из вариантов, я думаю, довольно валидный: мы моделируем такую команду, но нового времени, где просто те же самые роли, которые есть сейчас, — продакты, бэкендеры, фронтендеры, QA, — но все они ультраэкспертны. Это очевидная модель, она может прижиться. Но я сейчас размышляю над тем, что, возможно, вот, например, я вообще из-за того, что работаю в маленьких командах, работаю только с четырьмя ролями, иногда пятью: продакты, разработчики, дизайнеры, и в некоторых проектах у меня были ещё проджекты. Я ни разу не работал и слабо представляю, что делают, например, системные аналитики или продукт-оунеры, — для меня это набор букв, я реально не знаю, что делают эти люди, как они интегрированы, или скрам-мастер, что он делает.
[2:17:05] Андрей: И я думаю, даже пять ролей — это слегка многовато. Продакты нужны только в больших командах. Остаются продукты, дизайнеры, разработчики, тестировщики. И мне кажется, прикольная идея — ну, мы оцениваем идеи не по прикольности, а по полезности, — что мы могли бы подмёрджить продуктов и дизайнеров, и тестировщиков и разработчиков. Как в бизнесе есть, знаешь, business и tech founder duo: говорят, что эпоха соло-фаундеров прошла, нужно как минимум два фаундера — один бизнесовый, другой технический. Так же и в команде было бы хорошо, если бы были условные «тыж-программисты», которые просто делают так, чтобы это работало, было стабильно, расширяемо, не ломалось, не падало, отвечало требованиям, было перформансным. Такие условные технологи, которые как blackbox решают задачи, тестируют через автотесты, сами ручками смотрят, что получается, и пишут код на фронте и на бэке.
[2:18:29] Андрей: И то же самое должно произойти с дизайнером и продуктом. Потому что дизайнеры в текущем виде на конференциях друг другу рассказывают: «ой, мы не просто рисуем кнопки, а думаем, UX-исследования делаем». Для меня такое явление, как UX-дизайнер, — тоже что это за профессия? Я не пытаюсь обесценить или обидеть, просто для меня не понятно, что они делают, в чём ценность UX-исследования. Для меня дизайнеры всё-таки люди, которые наводят красоту. И здесь возникает конфликт: если ты хочешь выделяться дизайном, скорее всего, ты хочешь делать что-то нешаблонное. А если нешаблонное, тогда, скорее всего, это не сможет сделать AI. А если это не сможет сделать AI, скорее всего, разница в цене тебе как бизнесу сделать шаблонное и нешаблонное будет не X2, как раньше. Потому что раньше ты мог нанять посредственного дизайнера, он нарисует средненький дизайн, и, допустим, ты сэкономишь на его зарплате, но дальше не так много сэкономишь: разработчикам всё равно нужно запилить этот посредственный дизайн, тестировщикам оттестить.
[2:19:55] Андрей: А сейчас ты станешь как бизнес перед таким выбором. Ты либо делаешь кастомный дизайн и платишь 100x, потому что теперь его и разрабатываешь, и тестируешь сам, и дизайнишь с нуля, всё по старинке; либо делаешь более шаблонный дизайн — более обычный, из стандартных компонентов, — но получаешь его за ноль, или в 100 раз дешевле. И когда бизнес станет перед таким выбором, мне кажется, даже уже продвинутые ультрадизайн-ориентированные команды начнут хотя бы в каких-то подмножествах своего продукта предпочитать более менее секси, но более быстро имплементируемые дизайны, чтобы быстро посмотреть, что получилось. А потом уже компании, у которых много ресурсов или проверенные штуки, смогут позволить себе handcrafted-дизайн, чтобы отличаться от конкурентов. Но из этого напрямую вытекает, что дизайнерам нужно, чтобы они могли остановиться на продукте — хотя бы в каком-то виде. Потому что если у меня в команде дизайнер, который всё, что делает, — рисует кастомные компоненты, то по сути он просто вредитель. Я утрирую и гиперболизирую, да, но для меня как бизнеса, если у меня есть чел, который получает задачу от продукта, превращает её в очень красивые кнопки и заставляет меня заплатить и за его работу, и за работу разработчиков, и за работу тестировщиков, вместо того чтобы сделать AI-friendly-дизайн, который по Figma MCP на 90% будет запилен, а потом разработчик чуть подпилит, и завтра это будет в проде, — против того, чтобы мы 10 дней это верстали и потом выяснили, что эта фича не качает деньги, не поднимает retention, и мы закопали 2 недели, — то к такому дизайнеру тоже вопросы: чел, ты точно с нами на одной странице? Может, всё-таки придумаешь, как сделать просто, нормально и AI-friendly, чтобы это автоматизировалось?
[2:22:21] Андрей: И поэтому, мне кажется, если дизайнеры сместятся в сторону продуктов, станут такими visual-product — продуктами, у которых хороший визуальный вкус, которые начнут дизайнить в более первичном понимании этого слова, — а те продукты, которые сейчас продукты, станут более бизнесовыми, больше смёрджатся с аналитиками: будут считать A/B-тесты, придумывать экономику, считать конверсии, воронки, LTV, — то вот это было бы логично. И я думаю, что, возможно, целевая команда будущего — это всего две профессии. Условно, бизнесовые визионеры, которые обсчитывают, всё придумывают, и имплементаторы. В таком усреднённом… Понятно, что мы сейчас просто сидим фантазируем, это не мешки ворочать. Но так, чисто как мысль немножко закинуть наперёд. Мне кажется, это интересно. И я свою команду пытаюсь немного сейчас подмёрджить разной компетенцией, чтобы мы были ближе к этому сценарию. Мы не прям такую команду строим, но думаем про это, что можно с этим делать.
[2:23:34] Александр: Слушай, у меня на самом деле основные темы, прям вопросы, закончились. Мне кажется, мы плотно вообще раздали. У тебя есть что-то, что бы ты хотел ещё добавить? Я часто спрашиваю такие ламповые напутствия — совет какой-нибудь по жизни.
[2:23:42] Андрей: Блин, ты даже… не знаю, ты застал меня врасплох. Ну, слушай, честно: всё, что я сегодня говорил, — как я уже сказал, это такое нарочитое, какие-то вызывающие мысли, которые мы в рамках жанра подкастов обсуждаем, чтобы вызвать реакцию у людей, дискурс, и вместе подумать, что из этого может быть интересным. Но here and there я говорил какие-то вещи, в которые правда верю. Я сейчас не выступаю в роли Юдковского, который ходит и просто продвигает какие-то публикации. Знаешь, есть выражение practice what you preach — делай то, о чём говоришь. Всё, что я говорю, — я в эту сторону иду. Возможно, я не прав и это вообще полная хрень. Возможно, это полная хрень в каком-то контексте: например, не хрень для меня в моей маленькой команде, но полная хрень для условного Авито — просто это вообще не так надо делать в команде из четырёх тысяч разработчиков, или сколько там в Авито.
[2:24:58] Андрей: Какие-то вещи, про которые я говорил, — я бы, правда, вот это человеческий совет. Мне кажется, сейчас переосмыслить свою профессию — это очень важно. А так, не знаю: четыре часа deep плюс REM sleep, силовые тренировочки и десять тысяч шагов в день. Это, мне кажется, тоже хороший совет. Я бы хотел получить его пораньше — от кого-то, кто являлся бы для меня авторитетом. Не говорю, что я авторитет для кого-то. Но лишний раз повторить это в публичном пространстве, думаю, хуже не будет.
[2:25:46] Александр: Да-да-да. Два выпуска назад я минут 20 разгонял тему про спорт и про его важность. Я надеюсь, что для кого-то хоть вот на столечко моё слово является авторитетным — раз вы смотрите это видео. Поэтому я полностью подписываюсь под этими словами. Ну а на этом, наверное, всё. Спасибо тебе, что пришёл!
[2:26:00] Александр: Ну а всем пока.
[2:26:02] Андрей: Да, всё, пока-пока.