AI SLOPCAST #9: Lehrwerkstatt и гробовое молчание агента
В прошлых выпусках было много про кибербезопасность. Всё, нафиг кибербез, достало. Давайте поговорим о социалке и простой человеческой работе с агентами.
Одиннадцатого мая Тоби Лютке, генеральный директор Shopify, опубликовал у себя в блоге пост — «Learning on the Shop floor», что-то вроде «Как учиться прямо на работе».
В этом посте он рассказывает про их внутреннего кодинг-агента, которого зовут River. Обычный нормальный агент. Какая там модель внутри — Claude, ChatGPT или их комбинация — Лютке не уточняет, да это и не так важно. А важна одна деталь.
River отказывается работать в личных сообщениях.
Вы пишете ему в личку, чтобы он помог с кодом. А он отвечает: извините, в личке я работать не буду, создайте, пожалуйста, публичный канал — и продолжим там. Спасибо за понимание.
История эта поразительна по двум причинам.
Первое, что приходит в голову — это какой-то баг или забытая настройка. Но нет, это сознательное решение, и Лютке об этом пишет открытым текстом. Личные сообщения с агентом у них в компании запрещены специально.
А вторая причина — то, что происходит внутри их Slack. Shopify — крупнейшая канадская техническая компания, по-настоящему большой бизнес. И там у них полная прозрачность: каждое взаимодействие любого инженера с ИИ видно коллегам. Не где-то в логах службы безопасности, а вот прямо здесь, в канале. Сам Лютке работает с River в канале #tobi_river, где сидит больше ста человек — и они просто смотрят, как генеральный директор просит ИИ что-нибудь закодить.
В этом выпуске я хочу разобрать три вещи. Первое — почему странный запрет на личку вообще работает, и работает хорошо. Второе — что в этой красивой истории остаётся за кадром, потому что в любой красивой корпоративной истории всегда что-то остаётся за кадром. За кадром обычно остается корпоративное рабство и людоедство, но... посмотрим. И третье — что эта история значит для маленьких команд и для open-source-проектов, потому что Лютке этот вопрос не задаёт, а зря.
Начнём.
Lehrwerkstatt
Лютке формулирует свою идею через немецкое слово Lehrwerkstatt — произносится приблизительно как «лЭр-вер-кштатт», с ударением на первый слог. Буквально это «учебная мастерская». Понятие из немецкой профессиональной традиции: цех, который одновременно и работает, и обучает. Молодые мастера не сидят в учебном классе, а стоят рядом с опытными, смотрят, как те делают работу, и учатся через наблюдение.
Это, кстати, отличает старую немецкую инженерную культуру от классического американского подхода с университетскими аудиториями и MBA. У немцев было — и до сих пор есть — представление, что знание передаётся через присутствие. То есть через то, что ты стоишь рядом с человеком, который умеет, и смотришь, как он что-то делает.
Лютке — сам немец, переехавший в Канаду — берёт этот культурный концепт и переносит его на работу с ИИ-агентом.
Идея простая. Если все взаимодействия с River происходят в публичных каналах, то компания постоянно учится у самой себя. Я задал вопрос — двадцать человек видят, как я его задал. Я допустил ошибку в промпте — все видят, какую именно. Я нашёл удачный приём — все могут его подсмотреть и повторить. River плохо справился с моей задачей — кто-то более опытный заходит в тред и подсказывает, как переформулировать.
Каждое такое взаимодействие становится учебным материалом для остальных. И никаких курсов, тренингов и документации не нужно. Хватает просто наблюдения.
Я сам веду стримы на Ютубе, и мне очень близка эта идея. То есть, я же веду эти стримы не потому что они какие-то супер умные, что это какой-то крутой источник знания, нет. И денег я с них не получаю никаких. Но есть вот эта идея, что я могу личным примером показать, что я непрерывно что-то делаю с нейросетями, и вот что привело к успеху. А вот что не привело. И все могут заходить и просто смотреть, как я работаю.
Что касается Лютке. Звучит красиво. И — что неожиданно для красивых историй — там есть цифры, которые это подтверждают. Там есть разбор LLM-Ops ZenML: за месяц с River взаимодействовали пять тысяч девятьсот тридцать восемь сотрудников Shopify, в четырёх тысячах четырёхстах пятидесяти каналах. River открывает примерно каждый восьмой смерженный PR в основном монорепо компании.
Давайте посмотрим на цифру, которая мне здесь кажется самой важной. За два месяца доля смерженных PR от River выросла с тридцати шести процентов до семидесяти семи. То есть из всего, что River придумал, мержить стали в два с лишним раза чаще. Без обновления модели. Без дообучения. Без смены промпта.
Что изменилось? Компания научилась с ним работать.
И в этом, я считаю, и состоит главная мысль всей истории. Главное улучшение производительности кодингового агента может прийти не от чудесных открытий в ML, а от того, как устроена процесс вокруг его использования, и насколько им на самом деле пользуется команда.
В индустрии мы привыкли считать так: чтобы агент работал лучше, надо взять модель помощнее, или написать промпт получше, или подключить ему ещё инструментов. Всё это надо заставить работать внутри агента. А Лютке предлагает работать снаружи — не менять агента, а менять среду, в которой он живёт.
Достаточно контр-интуитивная штука. Производительность ИИ — это функция и от модели, и от организации. И организационная часть может перевешивать техническую. Техника — это не конец. Техника — это начало.
Почему запрет на личку работает: три механизма
Давайте разберём, что именно происходит, когда вы запрещаете агенту работать в личных сообщениях. Потому что эффект там не один, а целых три, и работают они на разной временной дистанции, в разной перспективе.
Первый механизм — лёгкое обучение, обучение мимоходом. Горизонт у него короткий. Я случайно вижу, как мой коллега что-то делает с River в публичном канале. Я не обязан смотреть, могу просто проскроллить это мимо. Но если задача похожа на мою — я задерживаюсь и изучаю всё, что там происходит. Обучаемся писать промпты через подглядывание. Такой бытовой вуайеризм. Это очень дешёвая форма обучения. Не нужно проходить курсы, читать документацию или даже специально что-то изучать. Просто живёшь в общем пространстве — и оно тебя само обучает.
Второй механизм — распространение знания, шаринг знаний. Горизонт у него средний. Когда кто-то нашёл удачный приём — рабочий промпт, способ разбить задачу на шаги, конкретный инструмент, который полезно дать агенту — этот приём виден всем. Дальше он расходится как мем. Через несколько недель в компании появляются общие конвенции работы с агентом, которые никто не насаждал сверху. Они сложились органически, как народный фольклор.
Третий механизм — коллективная отладка. Самый длинный горизонт. Когда люди наблюдают, как River систематически ошибается в каких-то задачах, эта информация накапливается. Кто-то документирует, что River плохо понимает их часть кодовой базы. Кто-то добавляет инструкцию в MCP, которая компенсирует слабое место. Кто-то пишет агенту специальный инструмент, tool, который перекрывает провал. По сути это и есть краудсорсинговое общественное улучшение агента — без переобучения модели. Мы вместо переобучения модели переобучаем общество и инструменты.
Третий механизм, видимо, и объясняет, как у них вырос процент смерженных PR. Дело не в том, что агент стал умнее: компания накопила корпус поправок к нему, который постепенно закрывает слабые места.
Такое накопление возможно только при условии, что взаимодействия видны всем. Если у каждого свой приватный Cursor на ноутбуке — каждый бьётся со своими ошибками в одиночку, и общий корпус поправок просто не складывается. Каждый инженер заново открывает Америку.
Это, кстати, объясняет, почему многие компании, развернувшие приватных кодинг-агентов, не получают такого роста. Они вкладываются в модель. Но не вкладываются в то, чтобы практики работы с этой моделью были видны снаружи. А без вот этой возможности наблюдать — коллективное обучение не запускается.
Параллель с парным программированием
Лютке в своём посте проводит одну параллель — с Midjourney. Что в ранние годы основной интерфейс у них был в публичных каналах Discord, и это создавало эффект обучения. Параллель нормальная, она работает, но, по-моему, слабовата.
Гораздо более точная параллель — та, что лежит в самой основе того, что Лютке описывает — это культура парного программирования и код-ревью в инженерных командах. Та самая, что зародилась в семидесятые. И никогда, на самом деле, не стала мейнстримом.
С семидесятых в программистской культуре появился набор практик, объединённых общей мыслью: код пишется лучше, когда его пишут на глазах у других. Парное программирование было частью практики Экстремального Программирования. Код-ревью — и сейчас обязательная практика во всех приличных командах последние лет двадцать. Open-source как способ работы — где буквально о том, что весь твой код видит вся планета. Все эти практики возникли когда-то в 70-х годах ещё.
И все эти практики работают по тому же принципу, что и Lehrwerkstatt у Лютке. Видимость работы для других — это инженерный инструмент.
Главное возражение к парному программированию и код-ревью всегда было одно: это медленнее. Программист пишет медленнее, когда у него за плечом напарник. Код-ревью требует времени и второго человека. Эти практики плохо масштабируются — поэтому многие команды от них отказались или применяют только формально.
А вот с появлением агентов меняется одна важная вещь. Агент не возражает против того, что за ним наблюдают.
У него нет эго. У него нет страха перед публикой. Ему не неудобно, что сто человек смотрят, как он решает задачу. И, что особенно важно, скорость его работы от наблюдения не падает.
Получается, что публичность как инженерная практика становится дешёвой — там, где раньше она стоила дорого.
И вот в этом — главный переворот в этой истории. Раньше публичность стоила дорого и применялась выборочно. С агентом она бесплатная, и применять её можно по умолчанию. Lehrwerkstatt как массовая практика стала возможной впервые в истории — именно потому, что главный работник в этом цехе не человек и от наблюдения не страдает.
Это новый класс организационных решений, доступный только в эпоху агентов. В 2020-м году ни одна компания так работать не могла. Не потому, что не догадались — а потому, что инструмент не позволял. Сейчас позволяет, и Shopify пользуется этим раньше остальных.
Немного корпоративного кринжа
Теперь, немного цинизма. Лютке отличный рассказчик, и его история звучит как у Стива Джобса — только без вонючей водолазки и драных кроссовок. А когда история стилизована под Стива Джобса, это всегда повод поискать, что в ней недосказано.
Во-первых. Цифры в этой истории, скорее всего, специально аккуратно отбирались. Они все позитивные. Процент смерженных PR вырос, число каналов выросло, число пользователей выросло. А число багов? А аварии на проде, в коде, который написал River? А технический долг? А нагрузка на тех, кто эти PR ревьюит, — потому что если River создаёт каждый восьмой PR, кто-то их должен просматривать, и я готов спорить, что это сеньоры, и их время тоже денег стоит.
Все эти негативные метрики внутри Shopify, конечно, существуют. На любую разумную вещь, которую можно измерить. У них есть мониторинг продакшена, у них есть отчёты об инцидентах, у них есть внутренние опросы. И ничего из этого они не публикуют. Публикуют только то, что красиво ложится в рассказ.
Это нормальное поведение для корпоратов, Shopify здесь никак не выделяется, корпоративные сказки — это особый жанр. Но рассказ про River полностью построен на этих специально выбранных метриках, и никто из тех, кто разбирает историю целиком, не задаёт вопрос: «А что у вас за эти два месяца стало лучше — или хуже?» А стоило бы. Лучше не в плане пулл-риквестов, а в целом, в общем.
Второе. Запрет на общение в личке — это, конечно, классика Lehrwerkstatt, но помимо учебной мастерской там есть ещё кое-что, про что Лютке деликатно умалчивает.
Когда я работаю с агентом, я думаю вслух. Я рассказываю, чего я не понимаю. Я показываю, где у меня пробелы в знаниях. Я делаю ложные посылки. Я ошибаюсь. Это очень интимная часть инженерной работы. Когда у тебя «приватный Cursor и Claude на ноутбуке» — эта вот интимность защищена. А если у тебя «River в публичном канале» — она транслируется на всю компанию и запоминается на годы вперёд.
С точки зрения отдела кадров — это золотая жила. Можно отслеживать, кто застревает на простых задачах. Кто слишком сильно зависит от агента. Кто вообще агентом не пользуется — и почему. У кого какие пробелы. По уровню детализации такие данные обгоняют любую оценку 360, 5+, что там придумали овчарки. Это идеальная картинка корпоративного рабства.
Лютке этого вслух не говорит. Возможно, у них в Shopify это пока не используют для оценки сотрудников — официально. Но возможность сама собой встроена в систему, и прецедент уже создан. Компании, которые скопируют архитектуру River, получат вместе с ростом метрик ещё и встроенный надзор за работой сотрудников — самый детальный, который вообще когда-либо существовал.
Лютке не хочет свою репутацию марать об идею, что River — это самый совершенный инструмент надзора за сотрудниками, который когда-либо был у Shopify, или вообще у кого-либо, и он довольно лицемерно замаскирован под учебную мастерскую.
И третье — и оно, на мой взгляд, самое стрёмное в этой истории.
River вышел на семьдесят семь процентов смерженных PR. Это, в общем, уровень джуниора в большой компании. Лютке параллельно говорит публично, что Shopify планирует держать штат семь с половиной — восемь тысяч человек ещё пять лет. То есть новых джуниоров нанимать не будут. Те, кто уже внутри, продолжат работать.
Складываем дважды два. Lehrwerkstatt отлично работает для тех, кто уже сотрудник Shopify. Они учатся через наблюдение, и их продуктивность растёт. Но откуда возьмутся следующие сеньоры, если позиции для джунов исчезли? Кто-то же должен пройти путь от джуна до сеньора. Люди, через найм, они как ручеёк вливаются в компанию. Если этот ручеёк становится тоньше, через пять лет проблема будет уже не с джуниорами, а с тем, что не из кого вырастить сеньоров.
Получается, архитектура Lehrwerkstatt сделана для того, чтобы текущие сотрудники продолжали быть продуктивными, даже при переходе к тотальному использованию ИИ-агентов. Но на вопрос «А откуда у индустрии возьмётся следующее поколение разработчиков?» эта архитектура не отвечает. Менеджмент Shopify тоже не отвечает.
Лютке частично обходит проблему аргументом про создание в компании новых ролей — появляется профессия «context engineer». Такого специалиста, который управляет агентами вместо того, чтобы писать код напрямую. По его словам, лучшие context engineer-ы — это бывшие тимлиды. Те, у кого есть опыт «промптить» живых людей. Это удобная история для нынешних сеньоров и менеджеров. Но для джуна такой карьерный путь крайне осложнён. А новичков такого опыта нет и не появится — просто потому, что джунов больше не нанимают.
Получается такой организационный тупик. Эта новая роль контекст-инженера доступна только тем, у кого уже есть опыт. А опыта больше не появляется, потому что джуниорам теперь негде расти.
Ну и я сам по себе хорошо знаю этот эффект. Потому что я постоянно людям рассказываю как работать с ИИ, как работать с агентами. А они просто не могут эти знания применить. Потому что они никогда не давали задач на разработку живым людям, у них нет опыта, и для них все эти инструкции — это пустые слова. Так что, когда вы покупаете у инфоцыган какой-то курс типа «стать ИИ-инженером за 30 дней», ну, вы понимаете, что скорей всего, это всё полная ерунда и вранье. Вам нужно не видосики смотреть, а вам нужен реальный опыт.
Что это значит для маленьких команд
Под конец — давайте поговорим про практику.
Shopify — это семь с половиной тысяч человек. У них есть Slack, огромная монорепа, формальные навороченные процессы разработки. River, хоть и с трудом, но вписывается в эту экосистему.
А что эта история значит для команды из десяти человек? Или для open-source-проекта?
Хорошие новости! Для команды из десяти человек эффект Lehrwerkstatt будет даже сильнее. Потому что у вас и так все знают, кто чем занимается. Запрет на личку с агентом в такой команде — решение более естественное, чем в Shopify. В Shopify ни один сотрудник не сможет прочитать все чаты, там бесконечное количество сообщений. В маленькой команде ни для кого не проблема читать вообще все рабочие чаты.
Простой эксперимент, который можно поставить уже завтра: настройте вашего ИИ-агента так, чтобы все его действия публиковались в один общий канал команды. Никаких личных сессий с Cursor, никаких приватных Claude Code. Всё должно быть видно. Я подозреваю, что для маленькой команды эффект будет похожий — и он реализуется за вечер.
Единственная проблема с таким подходом, что вы, как маленькая команда, скорей всего, используете Claude Code не через API, а по подписке. Корпоратам это неважно, у них все тарифы по сути оцениваются по стоимости API. А для вас — важно. Вы не можете работать через API. Поэтому, я скоро выложу свой хак, позволяющий делать Lehrwerkstatt для Телеграма и других мессенджеров, используя обычный Claude Code. Следите за моим каналом на Ютубе и подписывайтесь на Телеграм — там всё будет.
А вот для open-source всё ещё интереснее. Потому что open-source-проекты по своей природе уже работают в публичном режиме. Каждый PR, каждая дискуссия, каждое ревью видны всем. Если в open-source-проект ввести агентов, то ничего особенно не изменится. Публичность уже встроена в саму суть опенсорса, и эффект Lehrwerkstatt включается даром.
Отсюда любопытное предсказание: open-source-проекты могут оказаться эффективнее коммерческих компаний в освоении агентов. Не потому, что они умнее. А потому, что публичность работы — естественное свойство open-source, и она даром обеспечивает эффект Lehrwerkstatt. Корпорациям эту публичность приходится создавать искусственно — через инструменты вроде Slack. Open-source получает её бесплатно.
Я ставлю на то, что через год лучшие практики работы с агентами в инженерных командах придут не из корпораций, а из open-source-сообществ. Linux Foundation, Apache, Rust Foundation. У этих структур всё готово для того, чтобы выжать максимум из публичной работы с агентами. Если у них хватит политической воли начать, конечно.
Завершение
Итак, что мы поняли.
Первое. Тоби Лютке принял маленькое архитектурное и организационное решение — он запретил River работать в личке — и получил крутой, большой эффект. Доля смерженных PR от агента выросла с тридцати шести процентов до семидесяти семи за два месяца, без обновления модели. Это сильная иллюстрация того, что в эпоху агентов правильная архитектура компании или сообщества может давать больше интересных результатов, чем магия с улучшением модели и прочими ML-инструментами.
Второе. Запрет на личку работает через три механизма: лёгкое обучение через подглядывание, через распространение приёмов внутри компании, и через коллективную отладку слабых мест у агента. И третий способ, кажется, сейчас приносит наибольшие результаты.
Третье. История очень похожа на историю парного программирования и код-ревью, но с одним важным отличием. Раньше публичность и открытость процесса работы, процесса производства, стоила дорого. Потому что человек устаёт от постоянного наблюдения за собой. А с агентом всё это даётся бесплатно — агент не стесняется и не устаёт. И это открывает целый класс организационных решений, которые раньше были просто недоступны.
Четвёртое — и самое неприятное — это корпоративный кринж. Цифры в этом рассказе для широкой публики — специально отобраны чтобы соответствовать KPI. Слежка за сотрудниками встроена в архитектуру, и является прямым её следствием, хотя об этом не пишут. И главный вопрос, на который у индустрии всё ещё нет ответа: откуда индустрия будет брать новых сеньоров, если позиции для джунов исчезают?
Пятое. Это такая форточка от духоты. Освоение этой идеи может куда эффективней пойти не в корпорациях, а в open-source-сообществах. Потому что у них публичность встроена даром. И мы, как сообщество этого канала в ВК, на YouTube, в Telegram, и в других местах — обязательно воспользуемся этим преимуществом.