Выпуск 74 · подкаст «Тысяча фичей»

#74: Java больше нет. Rust vs Go в мире агентов

• 1:50:27

Александр и Дмитрий Волыхин из Java Swag обсуждают, почему скорость генерации кода упирается в тестирование, выкладку и откаты, а также как меняется роль разработчика рядом с агентами. Во второй части спорят о будущем Java, сравнивают Rust и Go через личный опыт и разбирают, когда смена стека оправдана требованиями к продукту и стоимостью инфраструктуры.

Главное

  • Рост числа сгенерированных PR требует инфраструктуры проверок, выкладки и откатов: одной скорости написания кода недостаточно.
  • Цена ошибки зависит от продукта: релиз базы данных у клиента сложнее исправить быстрым откатом, чем собственный веб-сервис.
  • Сгенерированные тесты тоже требуют контроля: они могут замедлить пайплайн или перестать проверять нужные сценарии.
  • Агенты помогают исследовать незнакомые системы, но понимание архитектуры и эксплуатационных ограничений остаётся полезным.
  • При выборе языка участники предлагают учитывать гарантии, производительность, размер артефакта, инструменты и стоимость эксплуатации.
  • Дмитрий ценит диагностику компилятора Rust и Clippy; его сравнение с Go основано на опыте ручного написания Go, без агентов.
  • По опыту Александра, Go даёт более короткий цикл компиляции, а в Rust его привлекают свойства итогового артефакта и отсутствие GC.
  • Переписывание легаси стоит обсуждать через измеримую пользу и риски миграции; знание нескольких языков расширяет выбор решений.

В выпуске

  • Дмитрий Волыхин — Java-разработчик в бигтехе, ведущий подкаста Java Swag и лидер комьюнити FAANG Talks по подготовке к интервью в big tech. javaswag.github.io ↗ LinkedIn ↗ Telegram ↗
Расшифровка

Примечание редакции: OpenJDK запрещает включать сгенерированный ИИ контент в контрибуции, но допускает личное использование ИИ для исследования, понимания и проверки кода; GraalVM принимает AI-assisted контрибуции. Ссылки на политики — выше. Упомянутые суммы расходов Uber и причины отдельных сбоев переданы со слов участников; независимо подтвердить эти детали не удалось.

[0:00] Дмитрий: Мне кажется, Java-разработчикам срочно, срочно, во-первых, становиться генералистами, дженералистами, чтобы писать на любом языке. Хватит, нет, нет, если вы пишете до сих пор в своём резюме «Я Java-разработчик», перестаньте. Уберите слово Java. Я год не писал код, вот с ноября 25-го года, вот скоро будет и год, после того, как всё изменилось, и мы стали не нужны.

[0:23] Александр: Вот люди говорят, что «А зачем ты здесь нужен, когда есть агенты?» Я такой, так вот как раз-таки с агентами я теперь могу делать то, что я хочу, а не то, что мог и за что мне платили.

[0:32] Дмитрий: И это, как бы, опять, ещё один источник фрустрации, что у нас есть вроде агенты, а помогают ли они? Блин, по-моему, они вызывают ещё иногда просто чувство того, что ты, не знаю, сходишь с ума.

[0:45] Александр: Такая мысль. Мы все сходим с ума в 2026 году, и у нас есть лучшие инструменты в мире для этого.

[0:53] Дмитрий: Да, лучший способ сойти с ума.

[0:57] Александр: Я тоже тут в последнее время, ну, начал замечать, что хейта больше стало. И именно не то, чтобы там, я бы сказал, что просто там аудитория как-то растёт. Она там, естественно, у меня росла всегда. Но вот именно люди как будто приходят, ты знаешь, они злые. Вот, и они какую-то фигню пишут. Я не знаю, может быть, это было всегда, но вот ты говоришь, что ты тоже с этим сталкиваешься. Я бы всё-таки поговорил про такой хейт именно, ну, персонализированный, да, просто там. Как-то обидеть. А полуобоснованный на тему того, что там вот и-и, не-и, программисты, не-программисты, заменят, не заменят.

[1:33] Александр: Мне кажется, вот вокруг этой темы у людей как-то пригорает. Вот нет ли у тебя такого чувства?

[1:40] Дмитрий: Ну, я вижу всё больше расколов. И расколов несколько. То есть, например, расколы те, кто уехал, те, кто остался. Расколы также вот по-программистски. Например, компаниям, которые там уехали. Если ты говоришь что-то про… записываешь ролик что-нибудь про IntelliJ IDEA, то обязательно кто-нибудь придёт. Скажет про… один будет комментарий едкий про то, что JetBrains, вот они какие-то там не такие уехали. То есть, есть раскол такой. Есть раскол про те, кто… есть ещё же вкатуны. Есть раскол, кто вкатывается, а кто не вкатывается. Есть раскол ещё про тех, кому весело и задорно, и всё хорошо. И у них отлично всё идёт с ИИ.

[2:17] Дмитрий: Они программируют, они продуктивны. Есть те, у кого ничего не получается с ИИ, и они расстроены, что они как бы не успевают. У них не получается, а у их коллег там софтверная фабрика на 200 пул реквестов в день. Это расстраивает. И несколько расколов. И получается, что даже те же самые подкасты, те же самые шоу, то есть мы когда записываем какой-нибудь очередной стрим, став инженером, мы всё равно как бы… Ну, мы пытаемся объединить этих аудиторий, чтобы пришли все те, кто любят технологии, чтобы произошла какая-то дискуссия.

[2:55] Дмитрий: Но вот всё равно в комментариях возникает такой раскол. Это вот так, как есть. С этим приходится жить. Есть несколько способов тоже, как с этим бороться. Ну, и само общение. Вот если ещё про раскол поговорить, само общение стало более токсичным. То есть, например, вот такая лексика, когда ты знаешь… Я, по-моему, писал какой-то телеграм-пост на это, когда вот ты что-нибудь говоришь, а, например, у нас в программе много багов. И тебе кто-то пишет, а эти баги сейчас в одной комнате. Ну, тебе сразу, знаешь, что-то пишут в комментариях такое, типа, ясно, всё понятно.

[3:32] Дмитрий: Типа, понятно, инфо-цыган, всё ясно. То есть, сразу какие-то пишут комментарии, которые не приводят к развитию дискуссии. Человек заходит, как бы такой, здесь чисто, ну-ка, плюнул. Раз, плюнул. Или увидел какой-то газон красивый, потоптал этот газон, а что это у них красиво? Они, наверное, не знаю, что-то странное. У нас не такое. И как бы ушли. Просто высказались. Высказались за злость. Не знаю, как с этим бороться. Не знаю, Саша, что ты видишь. Вот твои какие-то есть наблюдения? Что происходит? Почему так, ну что ли, больше хейта, больше какой-то лексики, которая непонятно откуда взялась?

[4:08] Александр: Мне, знаешь, что вот зашло, твой заход, сравнение на тему того, что есть как бы разные оси, по которым раскалывается общество, да? Или там какой-то социум. Ну, если мы говорим про программистов, нам, наверное, особенно программистов на Java. Мы про Java выпуск записываем, между прочим. Про то, что… Что действительно было там, ну, понятно, по политическим причинам и каким-то экономическим, географическим. Это мы прошли. Дальше идёт, условно, те, у кого получается, и те, кто воодушевлены и видят в программировании с агентами вообще будущее, разработки как что-то, что, ну, наконец-то мы нормально начнём софт создавать, и это весело, круто, и мы перестанем заниматься фигнёй.

[4:49] Александр: Я себя к таким людям причисляю. А есть те, кто, наоборот, вот просто у них сплошной пессимизм. У них, видимо, не получается… Вообще что-то строить, что им доставляет удовольствие, как раньше. И в то же время альтернатив никаких нет. То есть такое какое-то упадническое настроение, что, мол, всё, ничего хорошего нас не ждёт. И я постоянно вижу представителей этого лагеря у себя тоже в комментариях. И у них… Ну, есть нормальные комментарии, вот словно реально человек переживает, там как-то вот пока не определился, как контролировать софт, который он генерирует, как вообще процессы поменять.

[5:27] Александр: Ну, нормальные такие переживания. И в целом дискуссия тогда, ну, она более-менее хотя бы к чему-то ведёт, как минимум к развитию кому-то. Но вот большинство, я вижу, что это просто чел приходит, и вот как ты говоришь реально, а эти баги, они там с тобой в комнате, а вот эти строчки кода, они там у тебя…

[5:45] Дмитрий: Что делают? Ну, то есть… Слоп. Я из слопа навалил.

[5:49] Александр: Навалил. Навалил как бы… Ну, пройди мимо. Ну, я у себя на огороде навалил. Какое твоё дело, условно, что я там у себя делаю? И вот сразу чувствую наезд, то есть в формулировках именно, даже вот вокабуляр, которым человек пользуется, вот он от ним несёт, что как будто бы он говорит и плюётся в этот момент. И вот что с этим делать, я не понимаю. Вот ты сказал лайфхак мне, возможно, я его применю, что ты на Ютубе начал банить комментарии, которые просто вот такие плевки мимо проходящие. Это в целом нормальная тема.

[6:25] Дмитрий: Подожди, давай поправим, а то сейчас, знаешь, вырежут этот кусочек и скажут, начал банить. Не начал банить, смотрите. Лайфхак такой, то есть я на Ютубе начал пускать ролики, там появилось достаточно много комментариев, которые просто люди там проходят мимо и говорят какую-нибудь ерунду, но вот им что-то хочется сказать. Вот, и уходят. Я написал комментарий, запинил, говорю, смотрите, ребят, напишите, либо пишите какие-то аргументы, то есть этот комментарий должен развивать дискуссию и пишите какие-то аргументы. Если нет каких-то аргументов, и не несет пользы ваш комментарий, то тогда это бан. Я никого не баню.

[7:01] Дмитрий: То есть не забанил. Я не знаю, где на Ютубе банить. Надо еще как бы найти. Я никого не баню. Но мне кажется, что после этого люди стали, знаешь, как на заборе. Если написано, вот у тебя там осторожно, злая собака, а собаки нет. И люди как-то лишний раз начинают думать, что, блин, лучше я не буду на всякий случай связываться. Но есть и другие люди, которые кто-то пишет комментарий, что что значит бан? Мы что, нафан? На форуме, что ли? Ты что, как ты меня забыл? Кто-то там пишет такой, кто-то возмущает, кто кого-то забыл.

[7:31] Александр: Кем ты себя возомнил, короче? Знаешь, на своем, на моем, на канал.

[7:34] Дмитрий: На своем канале ты имеешь право банить. Вообще-то кто? На самом деле, правда, не знаю, почему такая злость. Наверное, опять же, еще мы не проговорили, в индустрии много сейчас увольнений, сокращений. То есть это не только ИИ. Просто тот же самый человек, который мне месяц назад говорил, что мы внедряем ИИ. Блин, я очень, все очень круто, я доволен. Его сокращают, и потом он как бы, ну, как ему вернуть свое, ну, не знаю, вернуться в игру, не потеряв свое эго, свою уверенность. И поэтому у них возникает мысль, что нет, наверное, что-то не так, что-то происходит, что-то неправильно происходит.

[8:16] Дмитрий: Еще такая культура появилась, что раньше, когда комьюнити, IT росло, и оно было такое, знаешь, приходите все к нам, я вам помогу, я люблю помогать. Все делились знаниями, было много чего бесплатного, можно было входить в компанию, все делились реферерами, были радостны новым людям, новым инженерам. Сейчас из-за того, что тоже много сокращений, много какой-то нестабильности, появилось такое, знаешь, типа я на своей работе, и вот как бы я задержусь за это место. Нам эти новенькие не нужны, нам не нужны эти, во-первых, те, кто приезжают, не знаю, в нашу компанию, нам этого не надо.

[8:52] Дмитрий: Началась более такая тактика, тактика какая-то защиты своей, своей позиции. И из-за этого ты хочешь казаться более сеньорным, более темледовым, более таким, знаешь, опытным. Напущенным таким. Напущенным, да. Надуваешь щеки, надуваешь щеки как жаба,

[9:06] Александр: чтобы казаться больше. Мы тут делаем серьезные вещи.

[9:09] Дмитрий: Такие серьезные вещи твой и я не сгенерируют. Если он что-то генерирует, это какая-то фигня. И опять же, оттуда, мне кажется, растет вот эта лексика, что ты не хочешь в интернете казаться слабым. То есть ты должен сразу, даже если тебе нужна помощь, вот Саша выступает с докладом, и мне нужно что-то у него спросить, мне интересно. Я должен подойти, не спросить типа, Саш, слушай, спасибо за доклад, а как вы сделали вот это? А получается, что ты не хочешь показать, что ты не знаешь чего-то, что тебе нужно что-то узнать. Ты говоришь, слушай, а что там, как у вас вот это работает? А то что-то как-то вяленько, ты там что-то пробубнил.

[9:46] Дмитрий: То есть с позиции силы. Нельзя в интернете теперь быть слабым в 2026 году.

[9:52] Александр: Показать слабость. Ты должен быть мощным, мощным разработчиком.

[9:55] Дмитрий: Ты должен быть мощным разработчиком, иначе вдруг кто-нибудь, вдруг кто-нибудь усомнится в том, что ты сеньорный программист, и в том, что ты чего-то не знаешь. Раньше такого не было, за житочные какие-то годы. Сейчас это то, что я замечаю, с этим можно тоже как-то, не знаю, несколько способов, как с этим можно бороться. Но нужно ли тратить на это время? Я думаю, не нужно. Это пройдет.

[10:17] Александр: Да, вот хороший тоже момент. Ты постоянно говоришь там, типа, как с этим бороться. И вот я думаю тоже, что с этим бороться, если, как бы, естественным образом это все пройдет. Это просто временное такое проявление защитной реакции людей, хомо сапиенсов, которые психологически включают такие защитные барьеры. Ну, время пройдет, адаптируемся. Кто-то не адаптируется, ну, и нормально тоже. Но индустрия так или иначе, она вот переживает такое, наверное, я бы сказал, ну, на моей-то памяти уж точно самый масштабный кризис, а может быть, даже и самый масштабный кризис за все время, там, с 50-х годов, как мы начали что-то программировать.

[10:56] Александр: Ну, такого вот прямо движняка и именно волнения, я думаю, не было.

[11:02] Дмитрий: Вначале мы немного и слишком много программистов нагнали к нам. А теперь вот мы пытаемся сплотиться и очиститься.

[11:12] Александр: Но вот я, кстати, по поводу того, что новая кровь нам не нужна. Это интересно, потому что, смотри, вот сидит, как бы, такой сеньор напыщенный, не проявляющийся, не проявляющий слабость. И приходит…

[11:26] Дмитрий: Саш, подожди, ну давай не будем, извини, давай не будем их так называть. Обычный сеньор, ну то есть…

[11:32] Александр: Не, ну обычный сеньор, нормальный чел, он способен сказать, типа, как вы это делаете. А вот мы говорим, мы в абсолют возводим.

[11:40] Дмитрий: Ну ладно, с плохим настроением.

[11:43] Александр: Да, вот он защищает свою вотчину и никого туда не допускает, пытаясь сохранить там статус-кво и свой bus factor максимально, чтобы удержаться на рабочем месте. И у него какая конкуренция возникает с молодым движовым чуваком, который там 20-22 года прилетел, он уже AI-native, он как бы изначально уже с этими нейронками уже понасоздавал всего, и он же, ну у него потенциал сильно больше у этого чувака, человек у сеньора, который скептик такой еще и не переехал на новые рельсы. То есть он на самом деле что испытывает? Он испытывает страх глубинно. И защищает он это чувство страха.

[12:20] Александр: Я так думаю, конечно же. И отсюда все вот эти проявления. То есть боязнь показаться слабым, потому что тебя могут там подвергнуть критики условно, а нужен ли ты вот тогда вообще, раз ты этого не знаешь и все такое. Бороться, как мы с тобой решили, наверное, не стоит с этим, но делать-то что-то, наверное, хочется. То есть либо просто игнорировать, сидеть и ждать, либо как-то пытаться изменить то, что происходит. Потому что, ну, экспертиза людей, которые много делают, она важна. И давно делают. Это факт.

[12:56] Александр: Нельзя сказать, что давайте мы сейчас всех уволим и новых наберем, и все будет классно. Я не думаю, что это так. Но в то же время…

[13:03] Дмитрий: Ты пробовал? Оно работает некоторое время. Но в том плане, что в Твиттере уволили половину и половина человек работает. Можно было бы еще уволить.

[13:10] Александр: Это вот еще со времен, когда Илон Маск это сделал. Правильно?

[13:12] Дмитрий: Да, да, да. Но есть такое ощущение…

[13:14] Александр: Но это еще в до-ИИ было. Еще в до-ИИ время убирали половину людей, и оказывалось, что нормально все едет. С ИИ, получается, можно и как бы три четверти сократить.

[13:23] Дмитрий: Я хотел не совсем про это добавить, про то, что твоя история, ситуация про Сеньора и вот новичка. Новичок делает много. Он и шуму производит много, и ломает много. И в чатах он сидит до 12 часов ночи. Сеньор выключает в 6 вечера компьютер, потому что им надо домой идти и с ребенком сидеть. И он уже видел все это много раз, что переработки — это такая, знаешь, выгода краткосрочная. Ты успеваешь в дедлайн, потом оказывается, что этот релиз никому не нужен, но ты сам перерабатываешь и выгораешь. У тебя проблемы потом начинаются еще в семье и с кукухой.

[14:04] Дмитрий: А твой джуниор, еще он весь AI-native, он и шуму много наводит. То есть он везде в чатах есть. Ты его просишь написать документы, а он тебе такой слопный гуглдок на 60 страниц прислал и говорит, что я написал. Ты сам прочитал, он говорит, конечно, прочитал, вот тебе TLDR на 2 страницы. А TLDR на 2 страницы ты прочитал? Нет, там я нагенерировал последние и последние модели, проверил еще тремя последними другими моделями. В общем, это лучшее решение. Так делают Google, Amazon и все такое. И это просто бесит. И много шума, много ломается, а инфраструктура не готова к этому. То есть инфраструктура все еще старая.

[14:39] Дмитрий: Все еще, если тебе он присылает твой напарник, более молодой, AI-native, 30 пул-реквестов, ты не можешь просто закрыть глаза и сказать, да погнали. Там оно все само откатится. Оно не откатится, оно сломается. И чинить будет уже не тот человек, который AI-native, а не нативный, тот, который знает, как чинить, потому что инструменты еще не там, инфраструктура еще не там. И ты, когда говоришь, что мы хотим, AI-native, это не значит, что ты просто кодишь с агентом. Инфраструктура не готова. Ты не можешь не ревьюить код. Вот люди, когда говорят, что мы не ревьюем код. Ну, почему? Потому что возможно, у них инфраструктура готова. Потому что, если что-то сломается, этот пол-реквест сам автоматически откатится, смотря там по метрикам, если что-то, какие-то метрики просядут. В каких компаниях настроен автоматический откат каких-то pull-request, если перформанс-метрики просаживаются.

[15:29] Дмитрий: То есть, ну, допустим, это какой-то веб-сервис. Ну, не во многих. Это требует построения инфраструктуры, которая вот тоже AI-нативная, которой ни у кого нет. То есть все хотят быть AI-native, но инфраструктуры для вот именно доставки 200 pull-request в прот, чтобы ничего не сломалось, нету. AI-нативный чел кидает туда pull-request, а нормальный кожаный чел приходится ему ревьюить и чинить это все. И оттуда тоже идет много фрустрации. Это вот как пример вот этого противостояния еще одного раскола, когда кто-то excited и вдохновлен насчет AI, а кто-то говорит, да погоди ты.

[16:06] Дмитрий: На нашем там сервере, блин, там я, если что-то сломалось, мне ночью придется джарник самому там руками копировать и перезапускать. У нас как бы не готово к этому. Мы поэтому выпускаем релизы, потому что мы не можем релизить 300 раз в день. У нас инфраструктура позволяет релизнуть в понедельник, вот, а до следующего понедельника ничего не будет работать. А это надо писать письмо клиенту и так далее, и так далее.

[16:27] Александр: Да, хорошо ты сказал, что инфраструктура не готова. И мне кажется, что вот, ну, я, по крайней мере, свой фокус сейчас весь смещаю на то, а какая вообще должна быть инфраструктура? Как мне ее написать, чтобы она работала именно в моих там кейсах, чтобы не ревьюить код глазами и быть спокойным в том, что ценность будет донесена, и они не будут разочарованы в продукте? Я же в этом заинтересован. Соответственно, и вот как мне построить такую? Хороший пример с тем, что если хорошую телеметрию, метрики автоматизированные сделать и настроить нормальный контролируемый процесс отката, например, если у тебя там перформанс начал проседать, это офигенный кейс, и это вот то, чем хочется, наверное, заниматься инженеру, который как бы понимает, что мир изменился, что полуреквестов будет все больше, а глаз будет все меньше, потому что глаза стареют, и как бы, ну, а новые глаза уже не читают. И здесь мне, знаешь, что приходит в голову, что это такой вот этот раскол, он еще немного напоминает, ну так, отдаленно проблему отцов и детей. Есть вот общество отцов, как бы, да, у них свой взгляд, у них свой, как бы, опыт и позиция во времени жизни, да, и есть, вот, дети, которые молодые, дерзкие, условно, жизни еще такой не видали, прот у них не падал, они там ночами его не подымали, не выгорали после этого, и ПТСР у них нет, и вот они такие, давай-давай, фигачим.

[18:04] Александр: Вот реально вот есть, как бы, вот эти два таких поколения, можно сказать, да, но это я сейчас не про возраст, а больше про психологическое какое-то поколение, что вот, условно, те, кто решил, что я на пенсию, ну, вот там ближайшие пять лет иду, они вот как бы представляют поколение, слов, в моей фантазии, да, а те, кто решил, что не, мы остаемся, мы фигачим, мы сейчас будем здесь все менять и адаптироваться, они представляют поколение детей. Не знаю, есть ли у тебя что на эту тему сказать?

[18:32] Дмитрий: Ну, не то чтобы, не знаю, я в аналогии детей не очень близка, но я понимаю, о чем ты говоришь, то есть мне, например, понятен, что, например, если у одного разработчика спросить, твой pull-request увеличивает производительность чего-то на 10%, ну, вот есть вероятность, что он уронит продакшн, и кто-то может сказать, да давай, попробуем, ну, будет же быстрее, и кто-то может сказать, что нет, ну, подожди, давай лучше еще как-то потестируем, давайте подождем. И возникает вопрос, ну, а продакшн упадет, и что? И кто-то скажет, ну, что, подымем. Ну, ценность вот этой стабильной работы вашего продакшна, ну, то есть разная, для тех, кто, наверное, давно в индустрии, у них правда есть вот это вот, что наш продакшн это что-то, ну, то есть что-то очень важное.

[19:16] Александр: Ну, это вот король вот этот, вот это вот святое.

[19:18] Дмитрий: Да, да, если он упал, это позор.

[19:22] Александр: Да, да, стыда не берешься.

[19:24] Дмитрий: Он вот как-то падал когда-то давно, то эта история еще рассказывается. А для кого-то, те, кто меньше, свежее и недавно пришел в индустрию, они, ну, упал продакшн, что мы, подымем? Ну, они падают. Ну, и что? Даже если у нас семь клиентов, ну, может, даже никто и не заметит, но вот у них нет вот этого чувства, что вот это что-то очень-очень важное. Возможно, они правы. Возможно, действительно сейчас как бы, ну, что у тебя упал продакшн? У тебя суббота. Никто не зайдет, никто не запустит даже твой этот веб-сервис или какой-то UI. Может быть, это и не проблема. Но вот чувство того, что это что-то важное, и то, что это суть, знаешь, вот разработки программного обеспечения, итог, все сводится к тому, что у тебя должно быть работать в конце приложения. Если оно не работает, это как бы очень плохо. А для некоторых это, ну, типа, ну и что?

[20:15] Дмитрий: Ну, чуть выключили. Выключили, перезапустили. Вот, никто не увидел. Ну, ничего, директор в это время уходил, там, не знаю, кофе пить. И все нормально. Прокатило. Вот, такая, знаешь, разработка. Сработало. Переписали все на раз. Заработало.

[20:30] Александр: Ну, я бы тут, знаешь, действительно замечаю, что ценность стабильного продакшн, она в головах еще сохраняется людей прошлого поколения, то есть, которое действительно упал продакшн, тебя ночью разбудили, ты в поту там прибежал, у тебя кошмар. Ну, реально прям истории, которые рассказываются потом. Потому что люди чинили. Сейчас ты прод пойдешь чинить с агентом. И ты уже не в поту подымешься, а ты просто там на вайбе такой сядешь, такой, так, что там? Анализируй ченжлок, предыдущая версия работала, это сломалось. Что поменялось? Тебе через пять минут агент скажет, блин, здесь миграцию написали, а тестировали миграцию? Да вот, я тут локально протестировал, на себя и не было. Такой, ошибку посмотрел, он такой, ну да, проблема миграции. Давай миграцию на миграцию.

[21:14] Александр: Сделал, выкатил, пошел свой латте пить дальше, прод поднял. У тебя нет вот этого психологического, что что-то произошло грандиозное. Ну, типа, упал, поднял, ошибки сделал, постмортем написал. Ну, если ты нормальный, да, инженер. Я не хочу, чтобы вот это скатывалось в дискуссии, что типа, пофигу. Да нет, не пофигу. Просто отношение к этому другое, потому что чинить проще. Это первое. А второе, что ну, действительно ли это настолько важно всегда? Мы не говорим про критические там какие-то банковские секторы, да, и все такое. И такое, опять же, только там, где деньги хранятся, наверное, хочется всегда к ним иметь доступ. И то, как бы, если у меня банковское приложение пять минут не открывается, я как клиент лоялен к этому.

[21:58] Александр: Ну, если я прямо сейчас только не плачу деньги, да.

[22:01] Дмитрий: Саша, я, ну, аналогии, как бы, мне нравятся аналогии, они всегда красивые, но просто проблема любых аналогий, что они как бы не равны. Я вот просто не работал с банковскими приложениями, ну, то есть не разрабатывал. И я, я разрабатывал, например, рекламные приложения. Я разрабатывал какие-то тулзы для измерения как-то производительности. Вот ты, например, пишешь, что там, базы данных. Давай вот про эти системы поговорим, потому что ну, вот это как бы важно. Что значит для тебя, когда продакшн вот упал? Это что вот именно в разработке баз данных? Вот какой серьезный, какой серьезный баг? Мы сейчас не говорим про банковские приложения?

[22:38] Дмитрий: Я даже не знаю, что сказать.

[22:39] Александр: Нет, нет, нет, я про банковские вообще просто, как пример сказал, что я тоже не разрабатывал большой финтек, поэтому я верю, что, ну, я уверен в том, что есть критическая часть инфраструктуры, где вот это вот изи поднялась продакшн с клодом, не работает. Ну, факт. Там другие подходы нужны. И в целом вот в мире баз данных тоже, потому что, как правило, ну, если ты не разрабатываешь, например, клауд сервис, и ты для него пишешь бд, то есть предоставляешь database as a service вот это, то у тебя как бы как такового бегущего продакшна, вот прям твоего как правило нет. У тебя есть релизный процесс и клиенты, консюмеры твоего продукта. Соответственно, у тебя, там, релизный цикл заканчивается, ты тестируешь, все там выявляешь и отдаешь клиенту новый релиз. И вот если у клиента этот релиз падает, то начинается там отдельный процесс разбирательств, поддержки и так далее. То есть в разных компаниях по-разному, но в целом плюс-минус это так. И не очень приятно, конечно, подключаться к крашам твоей базы данных, когда у тебя, у клиента там что-то на каком-то запросе на новой версии что-то упало. Они тебе полные логи, конечно, не дадут.

[23:43] Александр: Дамп базы данных они тебе тоже, скорее всего, не дадут. И ты сидишь, и вот, с клоудом, с чем угодно, вот поди догадайся, что произошло. Неприятный опыт, согласен. Это факт. Этого допускать не надо. Но применительно к базам данных у тебя есть как бы другие… У тебя есть инфраструктура для тестирования этого, и ты просто закрываешь все эти косяки, которые будут. Ну, то есть факт. Если ты будешь жестко фигачить, то будут косяки. Ты их просто должен как бы работать над ошибками делать, как и всегда. И в свою инфраструктуру тестирования, контроля качества внедрять практики такие, которые подобный класс ошибок больше не допустят. Автоматизированные, естественно.

[24:23] Александр: Там немножко другая специфика, потому что автоматизировано все тестировать жестко, как тестируются базы данных. Какой-нибудь магазин рога и копыта себе просто, ну, это дорого, и это нерентабельно. Никто не будет тестировать у себя на тесте каждый pull-request, именно на перформанс. Будут смотреть в проде. Вот как ты сказал, метрики максимум обложимся, и будем видеть деградацию. Факт. Я вот что еще хотел сказать по поводу того, что софт, вот этот кризис как бы. Давай посмотрим на тех, кто уже живет пару лет на чистом вайбе. Ну, я говорю про Клод. У нас же нет сомнений, что Claude Code CLI не ревьюет.

[25:02] Дмитрий: Нет сомнений, но они еще говорят о том, что они ревьюют, потому что они продают свой Claude Code, понимаешь? Тут такое дело, что это как IntelliJ IDEA, который продает IntelliJ IDEA и говорит, что мы весь наш код, пишем IntelliJ IDEA, и поэтому она так быстро. То есть тут есть некий нюанс. Посмотреть на каких-то клиентов, которые пользуются этим, не знаю, и агент. Вот, например, про банковскую сферу. Я думал, что какие могут быть примеры, которые есть, даже те, кто не разбирается, могут увидеть. Вот, например, один из самых больших банков в Европе недавно лежал, Револют.

[25:39] Дмитрий: И там он лежал, потому что лежали сервисы Google Клауда. И казалось бы, ну вот у тебя такая простая ошибка. У тебя там что-то происходит в одном из дата-центров, какие-то неполадки. Ну почему у тебя сервисы не распределены? Ну, оказывается, такое бывает. Оказывается, я вот снимал деньги из банкомата. Я думаю, что такое? Может, я пин-код забыл? А мне деньги не выдавались. И вечером я уже потом увидел, что, а, оказывается, он не работал. То есть мне потом пришли вот эти транзакции, что вот я снимал деньги из банкомата. То есть это интересно, что он, конечно, не работал, но шуму было много. Я уверен, что их CEO, там, Сторонский, когда он говорит, что мы скоро будем выходить на рынок US, как-то круто выходить на рынок US, когда у тебя все работает. А не когда мы выходим на рынок US, и у тебя там чуть не работало, тут чуть не работало.

[26:23] Дмитрий: Ну, то есть все вот эти вот косяки, они как бы, нельзя сказать, что мы прям хотим их повторить. И вот этот джуниор, который продолжает эту историю, который часто все ломает, ну, один раз ты дал ему все сломать. Ну, второй раз ты дал ему все сломать. Но третий, ты уже просто не скажешь, не скажешь, уходи, хватит от слопства писать. Давай ты сам будешь там все это ревьюить, и сам это все чините вообще. Давай ты сначала посидишь на дежурстве, где чинит все эти баги, а потом ты начнешь вот это вот как бы вайб-кодить. Потому что у Антропик и Claude Code, я уверен, у них есть своя инфраструктура для вот этих вот быстрых тестов, быстрых релизов и все такого. Они там свой гид переписали. Кто еще переписал свой гид из-за того, что у них как бы настолько не хватало скорости инфраструктуры?

[27:07] Дмитрий: То есть таких компаний единицы, а все еще работают, используя Git, используя нормальный Git, используя там какие-то стандартные практики. Инфры нет. Нет. Инфры нет для вот этого вайбинга. То есть вайбят только те, которые могут тебе построить свою инфраструктуру вообще полностью. То есть потому что они упираются в какие-то вещи, например, как Git. Кто еще переписывает Git? Ну, Versailles, по-моему, тоже переписали какую-то часть. Или Cursor, по-моему, тоже переписывали какую-то часть. Такие компании, у которых Cursor — это часть SpaceX, Tesla [уточнение редакции: Cursor приобретён SpaceX; Tesla — отдельная компания], то есть у которых есть небольшие, так скажем, деньги, есть небольшой интерес показывать, что их Cursor действительно, смотрите, как хорошо работает.

[27:48] Дмитрий: Все остальные, я вижу, что у других компаний, у них там посты про то, что, да смотрите, мы заметили, что вот как Uber писал, мы потратили за три месяца весь бюджет на Claude Code, и, короче, сейчас мы думаем, как бы сократить эти бюджеты. Теперь на разработчика, по-моему, в апреле или в марте была такая статья, на разработчика там было типа полторы тысячи баксов на каждого человека. Сейчас, если посмотреть посты от Uber, у них там рассказывается о том, как они построили свой AI-gateway. Вот у них есть единый gateway, куда они подключаются там своими агентами, и вот, видимо, у них есть там департамент измерений токенов, где они тщательно меряют, а каким агентам, что запускается, и вообще, нужно ли там большой, сильной моделью ревьюить код, может быть, нам нужен какой-то простой моделью ревьюить код. Там есть какие-то практики. То есть то, что я хотел сказать, что вот я из заинтересованной компании, они продолжают говорить, что как же круто, как же круто.

[28:41] Дмитрий: А те компании, которые просто покупают эти продукты, цена вот за AI-агентов, попадают в графу траты, и они, конечно же, хотят их минимизировать. Поэтому я вот такие вижу, как бы из бигтеха, такие срезы. И маленькие компании, ну, у них просто нет времени быть супер AI-native, надо делать бизнес, делать фичи.

[29:01] Александр: Слушай, ну, просто про антропик я тут к чему. Ну, мы рано или поздно все там окажемся. То есть если немного включить стратегическое мышление, то вот я смотрю на ошибки, которые у антропиков там год назад. Ну, я думаю, помнишь, было, когда прям, ну, вот, не было ни дня, чтобы Клод не пятисотил. Раз в неделю прям нормально так ложился. Клод как продукт, и именно вот даже не CLI, потому что CLI-то это в целом не сложная штука, ее можно там контролировать в одно адекватное рыло. Я имею в виду вот именно то, что там внутри происходит. Инференс, кэшинг, токен менеджмент и все такое.

[29:41] Александр: Ну, прям ложилось. И вот там были у них сложности. Сейчас, по моему опыту, то, что я вижу как пользователь продукта, проблемы эти решены. Я последние полгода, вообще говоря, не видел, чтобы Клод лежал. Хотя я за ним сижу целыми днями постоянно. Ну, смогли же.

[29:55] Дмитрий: Ну, может, у них Кодфриз? Ну, знаешь, типа… Перестали разрабатывать.

[29:59] Александр: Нет, ну, типа, смотри. Они как-то это решили.

[30:01] Дмитрий: Они недавно подали заявку на вот это IPO. Перед тем, как тебе люди покупают твой продукт, вот, платят деньги, хотелось бы, чтобы это как бы не падало. Ну, как у Амазона хотелось, чтобы в черную пятницу у нас работали сервисы. Поэтому давайте мы, конечно, деплоем все такое. Давайте какие-то важные сервисы, типа корзину, давайте не трогать на всякий случай. Там вы Олег сколько угодно трогаете, а вот корзину Амазон нет. То есть, мне кажется, что они тоже немножко замедляются. В том плане, что круто, когда ты показываешь о том, что смотрите, как мы кодим, кодим, кодим, сколько у нас там тысячи, тысячи полуреквестов, тысячи релизов в день. Но вот, мне кажется, мы просто тоже не видим всю картину, а мы видим то, что нам как бы показывают.

[30:43] Дмитрий: Как бы не антропик. Я когда вайб-кодю там свой какой-то проект дому, определенно я пользуюсь open-source-ами, тулами, и там, ну, если мне что-то ломается, мне приходится как бы идти и чинить. И нету супер-кнопки в GitHub. Найди то самое место, где сломалось, и почини. Про починку еще я хотел сказать. Бывает же такое, что, например, хочется что-то откатить. И ты это откатываешь. Но твоя инфраструктура тоже к этому не готова, и ты откатываешь не только свой коммит, но откатываешь коммит соседей, у которых была как-то там закоммичена как бы какая-то, ну, нужная фича. Они выкатывали там не твое улучшение перформанса, которое, в принципе, вкатил-выкатил, а они там перекрашивали кнопку, потому что это важно. И ты откатываешь это. Вот. И получается, что, опять же, инфраструктура не готова, потому что у тебя нет никаких таких возможностей атомарно вносить изменения вот такие в несколько коммитов в свою ветку, потом мерзать и назад откатывать эту ветку, если поверх нее есть уже эти какие-то коммиты. Потому что я видел несколько раз, когда кто-то что-то коммитил, потом был реверт этого коммита, потом оказывается, что реверт или не тот коммит, был реверт на реверт, реверт на реверт, и вот, если считать по статистике, там где-то заходишь в свой гид, GitHub, и есть, ну, такие, знаешь, пятерные реверты.

[32:03] Дмитрий: То есть ты отревертил, ой, не то, мы ревертим это назад, ревертим дальше, ой, все еще не работает. То есть просто потому что, ну, это все еще тяжело. И агент, конечно, каждый раз анализирует этот лог, он скажет, слушай, вот в этот раз, в третий раз, я тебе отвечаю, вот этот коммит почти поломал, вот точно. Ты откатываешь? Нет. Вот нет. И что с ним делать в текущий момент, когда ты уже откатил, а это оказалось не тот коммит, и ты еще больше проблем внес, чем свое улучшение производительности на 10%. Ну, вот сидишь на созвоне, и вот так говоришь, ошибки не бывают. И вот смотрите, есть репорт Клода, смотрите, как Клод тут мне эмоджи нарисовал, что точно этот коммит, а потом кодекс подтвердил. Ну, всем плевать, потому что, ну, как бы, чем ты там пользуешься, как бы, плевать.

[32:53] Дмитрий: Иди дальше, не иди дальше, а откатывай эту штуку. Смешные чувства. С одной стороны, мне нравится как бы все это вайб-кодить, и все это ну, то есть это улучшает производительность. Я год не писал код, вот с ноября 25-го года, вот скоро будет год после того, как все изменилось, и мы стали не нужны. Вот. Но с другой стороны, все-таки, я еще смотрю код. И если я не смотрю код, есть две причины. То есть, либо этот код неважный, либо это изменение легко откатывается автоматически. Я знаю, что если там что-то кликнуло не так, оно легко откатится. К сожалению, для важных проектов очень тяжело сделать атомарный роллбэк. Я не видел, как бы, компаний, где есть отличный автоматический роллбэк. И еще по перформанс-метрикам, где у них там что-то просаживается, какой-то перформанс. Ну, просто нет этого. Ну, нет. Есть какие-то, наверное, инструменты на рынке, кто-то их там, не знаю, покупает.

[33:46] Дмитрий: Но я вот такое не видел. Я не знаю. У вас вот, когда вы делаете что-то с баз данных, есть какой-то автоматический роллбэк по перформанс-метрикам? Либо вы руками открываете зеленый дашборд, и если там красный цвет, вы руками идете и смотрите, что не так.

[34:00] Александр: Слушай, большинство баз данных тоже не там. И я бы даже сказал, что, скажем так, практики инженерии и подобных систем, они еще более, консервативны, чем те, про которые ты говоришь. Потому что там в целом публика более, ну, именно разработческая, более такая матерая, ориентированная на качество, перформанс и все такое. И вот этот мир, он точно будет догоняющим. И поэтому единственное, что меня привлекает вот из того, что я вижу, это то, как развивается кликхаус. Там агенты вовсю, там уже давно.

[34:44] Александр: И продукт работает. Я, конечно, не в продакшене его у себя там где-то в бизнесе не использую. Именно вот чтобы сказать, что да, вот у меня там за последний год я не увидел чего-то с этим продуктом плохого. Но там есть вот классный перформанс тестирования на CI сделанное, которое релизы или там pull-requests может сравнивать по ключевым метрикам и говорить, деградация есть, не есть. То есть в Continuous Integration Pipeline у базы данных встроено отслеживание критических, производительности мест и недопущение pull-requests до мерджа, если какой-то процент превышается.

[35:20] Александр: То есть это как бы вот те самые метрики в продакшене и откаты, только действия наперед, потому что база данных, если вышла, то ушла клиентам, уже ты ничего не откатишь.

[35:31] Дмитрий: Саша, я пользовался кликхаусом. Пять лет назад у меня был в продакшене кликхаус, и кликхаус это необычная база данных. Это вообще говоря не база данных. Это движок, да, движок. Он изначально делался полностью с метриками перфоманса. То есть Алексей Миловидов там как выступал, показывая, как там все, как они меряют перфоманс, так они и меряют перфоманс. То есть такое ощущение, что изначально, когда ты строишь вот такое приложение, тебе нужно сначала построить инфраструктуру для измерения перфоманса, и, возможно, эту инфраструктуру будет как бы гораздо сложнее построить, чем написать свой код.

[36:08] Дмитрий: Типа написать свою кейлу базы данных тебе будет проще, чем построить инфраструктуру, чтобы померить под каждый коммит, все системы, найти какие-то регрессии на уровне функций. И поэтому я помню, что мы на стриме каком-то говорили, ты говорил, что делаешь софтверную фабрику, и что у тебя там куча строк кода. Я удивился, говорю, почему так много кода для софтверной фабрики? Ведь там должно быть много. Ты сказал, что там очень много именно замеров всяких. И тогда это понятно. Если у тебя действительно база данных, где код, много кода именно в замерах и в тестировании. Какие продукты на таком уровне тестируются как база данных?

[36:45] Дмитрий: Мне кажется, немногие. Кажется, что именно перформанс тестирования каких-то сервисов, но это до сих пор сложно. И это до сих пор не реализовано. Если я им это не сделаю, то ты не починишь уродливый, простите, некрасивый Gatling, либо чем там еще тестируют, нагрузочное тестирование делают, обычных HTTPS-ручек. Там такие инструменты.

[37:06] Александр: Там ужас, да. Это просто неудобно.

[37:11] Дмитрий: Перед агентами стыдно. Ну да, да. Там такие инструменты. Очень тяжело этим вообще просто пользоваться. JMeter какой-то, какие-то названия. Оно не глубоко не inactive. Оно прямо не то что не нативное, оно такое старое. И просто этого нет. И поэтому мы страдаем. То есть у нас тулзы для написания кода улетели в космос, а тулзы для инструмента, для написания и тестирования вот такого быстрой выкладки, тестирования производительности, как и не было, так и нет.

[37:40] Александр: Да. И вот завершая эту тему, я просто в голове держу, в голове держу этот пример с антропиком, что вот если по количеству отказов, наверное, этого сервиса сделать график, то я думаю, там было вот так вот. А потом вот так вот вниз и сейчас на каком-то плато. И я думаю, что это то, что ждет нас всех, и некоторые компании уже через это прошли, когда реально ты начинаешь вот прям трансформировать разработку на AI-нейтив, то ты видишь большое количество у себя, что здесь не заработало, там что-то откатилось, тут мы упали, или здесь за 500, или вот этот критический пик, все его пройдут, на нем сделают какой-то вывод о своей инфраструктуре, про то, что мы сейчас с тобой говорим, что у нас не готово, почему мы этого допустили, адаптируются, замедлятся, возможно, где-то там, выделят критические блоки своей инфраструктуры, как ты говоришь, вот там корзина, да, в Амазоне, в Черную Пятницу, критические сервисы, которые там, для них особые правила действуют, да, вот там есть какой-то свой релизный цикл, свой там тестирование, хоть вы там, если у вас денег дофига, ну, читайте код, пожалуйста, вот этих сервисов вычитывайте раз в неделю там, или каждый день, пожалуйста, но вот есть какая-то там большая часть инфраструктуры, скажем так, 80 на 20, да, 20 важно, 80 не важно, и вот те вот эти 80, для них там какие-то другие будут действовать, там полный вайп, например, я думаю, к этому так или иначе вот большинство компаний придет, потому что иначе ну, рынок, ну, просто сожрут, посчитать просто зарплаты программистов и value, которые приносят, как бы вот там, скажем так, команда, которая не, не AI трансформировалась, и человек, который AI трансформировался, вот просто посчитать, а бизнес-то он, ну, деньгами мыслит, и если мы достигнем уровня качества, который будет устраивать бизнес, ну, тогда как бы все, проблема решена, всегда будут выбирать дешевле, если при сохранении качества и как бы скорости, да.

[39:33] Дмитрий: Хотел добавить про приоритизацию, мне кажется, очень важную вещь сказал про вот это, то, что есть какие-то изменения, которые ты можешь вот так вот коммитить, ну, типа ты там тесты правишь, да, конечно, автоматом лей их, ну, типа, возможно, нужно человеческое ревью, ну, вот буквально, чтобы Саша открыл, и там были галочки, там, типа, lint-check, там, type-check, code coverage check, ты такой, тесты, погнали, и то есть в таком формате ты можешь ревьюить 20 pull-requests, если у тебя 18 pull-requests приходят изначально там с каким-то проверками, что этот код…

[40:01] Александр: Прерву тебя, Дим, вот я как автор подобной системы, которая AI First, как я отношусь к тестам, вот это то, что я заметил. Тесты тоже надо понимать, что ты льешь. Почему? Потому что если ты вот так вот будешь тесты фигачить, да, вот так вот go-go-go-go-go, ты через два дня обнаружишь себя в ситуации, что у тебя просто долго бегут тесты, и у тебя пайплайн разбух.

[40:27] Дмитрий: Ну, я хотел к этому подвести, да.

[40:30] Александр: Ты все равно, даже на то, что не сам код, ты должен понимать, что ты делаешь, но ты не можешь себе позволить читать этот код. Вот в такой ты ситуации находишься, что если ты хочешь быстро бежать, ты должен как-то гарантировать и контролировать систему даже в тестах, даже вот в том-то. Но по некоторым метрикам, да, мне все равно, что там за код, но мне важно, что этот тест не привносит деградации значимой по инфраструктуре, то есть он просто не замедляет пайплайн. У меня на это есть свой ревьюер. И дальше я хочу понимать, что этот тест не делает чего-то, что снижает покрытие основного кода. То есть он там переписал что-то, и теперь у меня покрытие не в строчках кода, а в функциональных блоках, что вот теперь у меня там, там критическая какая-то часть, например, установка и анбординг моего CLI, теперь вот с этим тестом не тестируется.

[41:18] Александр: И через неделю я туда багу внесу, потому что я этот тест сейчас залил не глядя. Вот эти две вещи, это перформанс и покрытие как кейсов, это то, в чем я заинтересован, и если я понимаю, что вот это есть, то есть это соблюдается, тогда я, конечно, не глядя лью. В остальных случаях я думаю, а как мне сделать пайплайн так, чтобы я эти метрики для себя важные мерил и понимал каждый раз и был в них уверен.

[41:43] Дмитрий: Но получается, знаешь, все мы стали тестировщиками, да, и перформанс-инженерами. Я хотел все-таки мысль рассказать про те самые pull-requests, 20 pull-requests. Ты такой, 18 pull-requests на какие-то неважные файлы, некритические, а вот два pull-requests ты видишь. У тебя там типа requires human attention, нужны человеческие глаза, чтобы Саша как бы внимательно проснись и посчитай этот код. Но ты вот проявил эти два изменения. Окей, хорошо, но потом вот то изменение, которое ты не про-ревьюил, оно как бы вызвало небольшой баг. И все. И как бы изменения в этом классе, в этом файлике тоже помечаются как рискованные для изменений. И в следующий раз изменения на этот файл уже придут тебе. У тебя было 20 pull-requests в день и два тех, кто нужно посмотреть глазами. У тебя пришло уже три, которые нужно посмотреть глазами.

[42:30] Дмитрий: А потом твои тесты ты вообще случайно сломал и вообще все тесты, которые ты пишешь, задеплоились куда-то не туда и тоже что-то уронили. Не в продакшене, но просто уронили что-то. И из-за этой статистики они тоже начали показываться, вот смотрите, эти тесты сломали нам стейджинг, давайте их тоже теперь ревьюить. И постепенно твоя вот эта система оценки рискованности pull-requests приходит к тому, что тебе надо опять все ревьюить. Вот опять не можешь. Даже если там есть эти зеленые чеки, галочки, тебе все равно надо, блин, это читать. И это ужасно. Ужасно, что ты начинаешь с хорошей системы, которая автоматически работает, а заканчиваешь все равно ты грустный, выгоревший, у тебя все не работает, и только вот эти агенты пишут свои дурацкие зеленые галки, хотя ты знаешь, что, блин, это нифига, это важный файл.

[43:17] Дмитрий: Ну, что он говорит, что он неважный? Это важно, я знаю, он сломал там все в прошлый раз. И это как бы опять еще один источник фрустрации, что у нас есть вроде агенты, а помогают ли они? Блин, по-моему, они вызывают еще иногда просто чувство того, что ты, не знаю, сходишь с ума.

[43:36] Александр: Такая мысль. Мы все сходим с ума в 2026 году, и у нас есть лучшие инструменты, элементы в мире для этого.

[43:43] Дмитрий: Да, лучший способ сойти с ума.

[43:45] Александр: Навайбь свой сервис и попробуй его там поддержать месяцок-второй. Ну да, через это всем надо пройти. Я думаю, это вот как раз схождение с ума, это вот этот пик, да, самое тяжелое вот это, когда все еще и падает. Ты же не просто перестаешь там понимать, что происходит, у тебя же еще и проблемы начинают увеличиваться. То есть со всех сторон все плохо. Вот, это кризис. Через этот кризис каждый из нас должен пройти, чтобы стать сильнее, сделать выводы и уже работать по-новому. Как по-новому? Вопрос хороший. Я бы вот про психологические моменты личной эффективности, личного способа не выгореть.

[44:22] Александр: Может быть, отдельно как-нибудь поговорил бы, потому что тема благодатная, тоже есть чем поделиться. Но я хотел сегодня про технологии. Вот, Дима, подведу тебя к этому все-таки. Ты как представитель подкаста самого популярного русскоязычного про язык, джава, это, ну, факт. Ты как бы…

[44:44] Дмитрий: Ничего себе. Ничего себе заявка. Ладно.

[44:47] Александр: Вот у тебя подкаст про джаву был, исторически всегда. Вот ты как человек, который делает до сих пор этот подкаст, за что тебе респект, не пересматриваешь ли некоторый пивот, потому что есть ощущение, что джава уже не та и не вызывает эта технология ни интереса, ни… Ну, новой крови нет. Даже с точки зрения подкаста, вот так порассуждать, не говоря про саму джаву. Что ты думаешь?

[45:15] Дмитрий: Ну, спасибо за самый популярный. Мне кажется, что это, ну, не знаю насчет популярности, но достижение, я считаю, лично вот свое. Я горд тем, что с 2019 года я его записывал, и он был таким… Очень приятно слушать свой старый, свой молодой, молодой, наивный голос. И что до сих пор иногда выходят выпуски. Реже, опять же, потому что мне кажется, что народ занят другими… Ну, то есть некогда делиться своими… Всегда, когда ты запишешь этот бесплатный контент, подкаст, это желание делиться. Настроение такое, что хочется приходить домой, выключать свет и смотреть в потолок лежа и пытаться как-то прийти в себя от того, что происходит.

[45:56] Дмитрий: И вот из-за этого, да, становится, конечно, выпусков меньше, но еще я писал на джаве 12 лет. И это джава, это мой самый первый язык. И на джаве я был на многих конференциях. Мой любимый Joker, JPoint. Я звал оттуда тоже очень много ребят. А потом в какой-то момент я просто перестал на них писать. И так сложилось, что я начал писать на сразу нескольких языках, потому что джавы не было туда, где я устроился работать. Я писал на Go, я писал на Python. И пока не встретил Rust и вот эти три языка, которых я на Go я пишу все меньше.

[46:32] Дмитрий: На Rust я продолжаю писать и много пишу еще тоже на TypeScript. Я не знаю, даже как-то говорить, что я пишу на TypeScript неудобно, потому что ну, то есть такой вайб-код, что на Rust я еще более-менее читаю код. На TypeScript когда там что-то генерируется, я очень мало внимания уделяю именно фичам языка. То есть как у них там работают всякие внутренности, я не знаю. В Rust более-менее знаю, в Go знаю, а вот TypeScript такой просто язык. И на Java я стал писать все меньше.

[47:08] Дмитрий: И с этой точки зрения интересно, что когда я записывал подкасты, вошел в гости и был как бы участником комьюнити в том плане, что я сам на ней писал, то потом в части выпусков была описана с точки зрения того, что я уже не пишу на Java, мне все еще интересно, что там происходит. И это совершенно тоже другой взгляд, когда ты пишешь новый выпуск про то, что появилось снова в JEP’ах, что появилось, а какие фичи. Ты смотришь уже не изнутри системы, а со стороны немножко. И что Hibernate и Spring, их нововведения мне стали, все меньше интересны, мне стали больше интересны вообще как бы, почему люди занимаются программированием, как у них развивается карьера, то есть более такое, с точки зрения развития карьеры.

[47:53] Дмитрий: И это так еще наложилось на тоже, ну вот все события, которые были, но на несколько вот этих расколов, которые мы обсуждали, что и сама Java немножко опять сузилась. То есть такое ощущение, что комьюнити Java было больше, оно сейчас сузилось, потом много людей, которые раньше с удовольствием пилили контент, выходили по подкастам, делились, их тоже как бы так вот уменьшилось, и оно вернулось к каким-то размерам такого нишего языка. Да, мы работаем на этом языке, да, мы зарабатываем деньги, но вдохновлены ли мы? Да не особо. Мы просто приходим на работу, не люблю аналогии, но есть ли вот, есть профессии, где люди не делятся своими знаниями. Не знаю, например, вот как они там, нет, наверняка есть плитуукладчики, которые записывают крутые блоги, но сфера изучена. И это мне кажется, вот много всего от этого наложилось, что выпусков стало все меньше, и я немножко начал сдвигать фокус на другие языки программирования и звать все-таки ребят, которые имеют опыт с Java, но у них есть опыт с другими языками программирования, потому что, ну опять, мне стало интереснее, вот не знаю, например, там был выпуск и про Rust, и часто я стал больше звать голлэнг-разработчиков, мне больше стало интересно, нативная разработка на Java, потому что я считаю, что это единственный шанс Java на выживание, это GraalVM, но почему-то это тоже никто, ну как бы говорят, но в разрезе вот этих кваркусов и каких-то фреймворков вот этих нативных, но вот такое мое мнение. Подкаст есть, подкаст записывается, я запишу еще несколько выпусков, мне все еще это нравится, но просто фокус сдвинулся в том плане, что, блин, ну мне уже это не так интересно, возможно, это так происходит со всеми подкастами, я помню разбор полетов, подкаст мой любимый, когда я его слушал, там было сначала тоже все очень техническое, а потом все участники подкаста нашли себе работу, менеджеры, ну типа того.

[49:54] Александр: [неразборчиво] менеджерами, да?

[49:55] Дмитрий: Ну типа того, да, а мне уже, а я все слушал и говорил, а где, где Spring Boot, простите, там вышла новая аннотация, что значит, что значит там какая-то, по-моему, в виде гамов там про какую-то кавку, там какие-то еще, там были какие-то конги, ну то есть какие-то темы, которые мне уже были, я все еще хотел делать технические, технический подкаст, и сейчас, мне кажется, я сам нахожусь в этой развилке, что мне технологии ну интересны, но очень нишевые, то есть буквально вот я готов поговорить про вот эту вот штуку, как она работает на андроиде под линуксом, вот про перформанс инженеринг вот на такой версии, вот про раст несколько фич, а все остальное мне не очень важно, как работает, это тайп-скрипт, как там работает интерпретатор в питоне, кстати, по-моему, выпиливает назад джит, ну я это смотрю, слушаю, мне интересно, но это как бы не сильно, мне интересны другие какие-то процессы, которые происходят. Такой долгий ответ, Саша.

[50:55] Александр: Я слышу, что ты подвязываешь историю, скажем так, заката, да, именно джава-стрима у тебя в подкасте, с тем, что ты просто сам вырос, и у тебя приоритеты, как у Димы, поменялись, и поэтому тебе это не интересно.

[51:14] Дмитрий: Сейчас добавлю, тут еще стоит тоже сказать, что у меня есть еще несколько проектов. Вот проект, например, FAANG Talks, мы записывали, у нас там 70 выпусков про систем дизайн. И я был год один, когда я очень увлекался систем дизайном, мы записали 48 или 49 выпусков в год. Это один выпуск в неделю, тоже этим очень увлекался. И сейчас просто вот эти все проекты, вот тоже, например, как подкаст Staff Engineer, мне тоже очень нравится все это, изучать, не знаю, вот как мы говорим, что интересно Staff инженерам, то будет интересно вам, потому что все теперь разработчики тоже стали немножко Staff’ами, только они управляют агентами.

[51:53] Дмитрий: И вот просто вот это все, оно как бы сливается в подкаст который уже не значит не значит джава, потому что это мой круг интересов, это то, чем я занимаюсь. Ну и, конечно, если мне удается вставить слово про джаву, что кто-то знает про джаву, я с удовольствием с ним поговорю, про Котлин, поговорю еще больше, но просто это, да, не сфера уже моих интересов.

[52:19] Александр: Короче, в подкасте Java Swag пропадает джава, но преобладает свэк.

[52:25] Дмитрий: Больше свэка. Больше свэка. И грува. Но не груви, грува. Вспоминал, блин. Ну, слушай, я бы на самом деле немножко все-таки поднавалил бы технического, потому что… Давай. Я готовился всю жизнь. Я писал подкаст 7 лет про джаву, чтобы ответить тебе за технологии про джаву.

[52:49] Александр: Давай. Потому что, да, супер. Понимаю тебя тоже на таком я личностном тоже как бы переходе, или, может быть, я уже перешел, когда мне там меньше интересны вот прям кишки. И я это думаю. Я не подвязываю это с каким-то там ростом меня, как специалиста, а я вот все-таки думаю, что потому что с кишками теперь разбираются агенты. Вот я для себя такое вижу видение, что ну вот зачем мне, как человеку, инвестировать свою внутреннюю энергию, свой энтузиазм в то, что агент закрывает уже. Или если не закрывает, то через год будет закрывать.

[53:31] Александр: Ну, реально вот. Просто потому что интересно. Ну, положа руку на сердце, интерес надо подкреплять более высокими потребностями. И вот просто сидеть и интересно ковыряться в песочнице, может там ребенок десятилетний, который еще свои потребности не понимает. Я-то понимаю, что мне в жизни надо. И поэтому я выбираю то, что мне интересно, и то, что меня по карьере будет продвигать. Сидеть, смотреть, как там очередная оптимизация в GT, в Java ускоряет в каких-то местах какой-то код, ну, может быть, и интересно, но уже не очень продуктивно с точки зрения карьеры.

[54:03] Дмитрий: Можно, Саш, добавлю просто, мне все еще интересно. То есть я все еще люблю ковыряться в этих кишках. Мне неинтересны конкретно кишки уже Java. То есть из-за того, что когда ты учишь несколько языков, например, вот Rust, например, либо также, ну, я не сказал C++, но я также могу писать код на C++. Больше читать предпочитаю, сам код написать, но я знаю, как он работает. И вот эти вот возможности, например, вот типа с IAM, он позволяет же не только генерировать код, он позволяет тебе генерировать понимание того, как работает система внутри.

[54:41] Дмитрий: Есть много систем, которые на Java я просто не могу написать. Например, какую-нибудь, не знаю, виртуализацию, там, аналог какого-то там докера я могу написать. Наверняка на Java есть аналог JDocker, стопудом, Jcontainer, что-то такое. Но вот другие языки просто открывают удивительный мир системного программирования. И мне вот с языком Rust очень это нравится изучать, изучать, погружаться до самых каких-то мелочей и ковыряться в кишках. Но уже просто не Java, а в кишках, не знаю, например, там, системы. Мне очень понравился, недавно был твит, который мы обсуждали вот от Митчелла Хашимото, когда кто-то на вайб-коде делал какой-то терминал и говорит, что, смотрите, он быстрее, чем гости. Митчелл написал ему большой опровергнул, то есть он посмотрел на эти бенчмарки.

[55:26] Дмитрий: Он хорошо разбирается в производительности, но все равно он с агентами теперь разбирается, и это позволяет ему не написать за три недели там репорт о перфомансе, а за два часа там, за три часа написать твит, мерить и сказать, что, слушай, в твоем перфоманс-бенчмарке там вот такая вот ошибка, там что-то с буферами намутило. Смотри, если мы поставим грамотные буфера, правильные буферы для эмуляции терминала, ну, типа ты скроллишь терминал, и у тебя буфер, ты должен сохранить историю. Раскроил вверх, ты мог ее восстановить. И если ты не восстанавливаешь историю, ну, это не терминал, это как бы у тебя одна страничка терминала.

[56:02] Дмитрий: И ему помогают агенты понимать большие кодовые базы и быть продуктивными с этими большими кодовыми базами. И вот мне вот это вот очень нравится. То есть я все еще ковыряюсь в этих кишках, просто в таких кишках джалов мне неинтересно ковыряться, потому что выглядит так, как будто уже кто-то написал язык программирования, системные программисты написали мне язык программирования, которым я должен пользоваться. Я сам хочу писать такие же, я сам хочу писать JVM, я сам хочу писать базы данных, системные тузы, я сам хочу писать языки программирования. И именно это, и я сейчас как бы это делает возможным. Я могу за вечер сесть и написать на вайб-коде какой-нибудь движок для контейнеров. У меня был какой-то видос, где я с помощью опен-кода и какой-то там подписки пытался сделать софтверную фабрику, делает виртуализацию там про простенький контейнер, который запускает какой-то код.

[56:52] Дмитрий: И это, ну, здорово, потому что раньше я не мог это сделать за вечер. Раньше я читал статью, потом читал еще статью, потом надо было книжку почитать, потом еще книжку, потом еще статью. Сейчас я сажусь за вечер и делаю этот проект, и у меня вновь радость появляется от программирования. А учитывая, учитывая текущую вообще ситуацию в индустрии, это единственный хороший вечер за многие месяцы, потому что все остальное, это ну, просто большая-большая печаль, то, как это приходится использовать агенты конкретно, не знаю, там, на работе, либо еще где-то. То есть кишки все еще важны, они будут важны все еще дальше. И также, если делать отсылку на FAANG Talks, LeetCode и бигтеки, LeetCode также все еще важен.

[57:38] Дмитрий: Это удивительно, что говорят, что раньше зачем мне нужны учить алгоритмы, ведь это на работе не пригодится. Сейчас ты даже не читаешь код, тебе еще сильнее этого кажется не нужно. Но именно поэтому LeetCode спрашивают до сих пор и будут спрашивать, потому что все еще очень важно понимание того, как это работает и как это работает изнутри. Вот эти самые кишки, те самые, блин, как я не люблю вот эти слова, база, кишки, вот это вот. Но других слов не знаю. Какие-то основы, наверное, хуже слова. Все-таки кишки и база, какие-то более яркие слова для названия всего этого.

[58:12] Александр: Ну, разделяю вот это чувство, что нафига мне теперь вообще говоря какая-то система, которая мне упрощала программировать, каково я была, Java. Давай все-таки разберем. Что давала нам Java и почему я, например, в универе выбрал ее как основной свой стрим и там моя карьера складывалась до какого-то времени только с этим языком. Что мне Java давала по сравнению с другими языками? Если мы не берем то, что просто это популярный язык, на котором всегда были вакансии и на нем большинство финтеха пишет. Это тяжело, тяжело, не тяжело, не тяжело.

[58:49] Александр: То есть ты просто открываешь как бы Headhunter, ты там студент, видишь вот эти вот 300 какосек и ты такой господи, ну естественно. Кажется, Java очень хороший язык программирования. И сразу пошел ее, там еще IntelliJ IDEA такая симпатичная по сравнению с другими. Люди там смотрят, видишь, какие-то страшные терминалы запускаются на плюсах, кто пишет. А ты тут увидел идею, там дебаггер, она еще красивая, темная. Короче, подкупала. Но вот если так посмотреть и убрать вот это вот эмоциональное, а по факту-то что? Ну, во-первых, это достаточно высокоуровневый язык был для того, чтобы человеку можно было быстро набирать на нем код и не париться о деталях, потому что вот попрограммировав там, например, на низкоуровневых языках, на растенности, плюс-плюс, я могу сказать, что голова работает, работает более активно, потому что ты думаешь про borrow-чекер, так или иначе, ты в голове держишь это, то есть у тебя вот есть какое-то пространство в голове, и ты выделяешь часть этого пространства, особенно в начале все пространство, под то, чтобы понять, а не будет ли у меня здесь ошибки с borrow-чекером. Или, например, а что у меня здесь с ресурсами в C++? А есть ли у меня здесь утечка? А вот этот указатель я передал, а я его…

[1:00:01] Александр: А указатель на указатель. У тебя как бы воображение начинает структурами данных мыслить. И это нормально, если у тебя задача написать какой-то код, который вот нужно, чтобы ты эти структуры данных в голове представлял. Это круто, но если ты пишешь REST API для какого-то очередного банковского сервиса по подсчету скидок и промокоду, ну, тебе эти структуры данных в голове мешают решать эту задачу. Java сделала так, что мы об этом не думаем. У нас garbage collector, у нас runtime, да мы даже про оптимизацию особо не думаем, положа руку на сердце, потому что у нас есть JIT, и есть довольно устоявшаяся инфраструктура.

[1:00:37] Александр: То есть ты просто навешиваешь какую-то аннотацию, ты просто подтягиваешь какую-то библиотеку, и она проверена, она в сотнях продакшенов, тысячах уже работает, и все с ней ок. Ты просто из кубиков собираешь и просто пишешь такой вот глюкод, как правило. И это нам давала Java. Что теперь? Что поменялось? Ну, может быть, есть, кстати, что ты можешь добавить, чтобы я не переходил дальше. Что еще Java давала?

[1:01:03] Дмитрий: Мне кажется, хорошо, что ты рассказал. Я тоже часто записываю интервью с Java разработчиками, и картина выглядит примерно так. Я учил язык C++ в университете, нашел Java, влюбился. Либо первая работа была на Java, либо там еще что-то, и просто начал как-то… Если убрать какой-то вот и вот эту…

[1:01:21] Александр: Романтизм такой. Романтизм,

[1:01:22] Дмитрий: рандомизировать, то чаще всего, что просто это первая какая-то работа, и сразу нужны просто Java разработчики, и у тебя первый язык, на котором что-то получается. Делаешь очень быстро что-то полезное. Потому что, ну, не знаю, наверное, у питанистов, также у Go просто позже немножко появился. Ну, в общем, у Java как-то удалось захватить мир и любовь разработчиков. Появились сразу конференции, много пришло в Java из всяких стажировок из компаний, у многих были магистратуры-стажировки, у многих, то есть, в городах целых открывались какие-то кафедры, где уже нанимал, там, не знаю, вот сейчас, если, не знаю, Яндекс, там, Мэру, и там, не знаю, ТТ-банк. Ну, то есть, какие-то кафедры целые были, я учился в Воронежском государственном сети, у нас была там какая-то в конце магистратура.

[1:02:09] Дмитрий: И то есть, там уже можно было устроиться и работать на полставки разработчикам, и это было очень круто в том плане, что ты приходил сначала в какой-то такой ушатанный немножко университет, формулы там туда-сюда переворачивали, переворачивали интегралы, дифуры, все такое, а потом ты приходил в офис компании, где вы делали реальный бизнес. Реальный бизнес и на реальной Java. И вы не думали вот в контекстах ты хорошо сказал про указатели, вы думали в контекстах сервисов, в контекстах репозитории. Вот у тебя были такие слова, как контроллер. Вы вот настолько высокоуровнево думали об этом, что вам не нужно было вообще знать, что там интегер, полное слово, либо инт. Нужно ли это было?

[1:02:54] Дмитрий: Это нужно было для интервью. А вот вы знали, что там инт примитив, он там до, ну вот этот интегер, который по ссылке, он до какого-то там числа, он там на самом деле примитив. Ну, то есть, это были какие-то такие приколы, которые ты смотрел на конференции. Опять же, были конференции, которые ты приходил, и тебе был понятен трек, тебе понятно было твое развитие, ты понимал, что вот ты middle, вот ты senior. Все было как бы понятно. Твое будущее было очевидно. У тебя были понятные фреймворки, не было какого-то понятного, красивого IDE. То есть, все было как-то очевидно. Код очень много генерировал за тебя. То есть, сейчас мы в восторге, как генерируют и я, и код. Но IntelliJ IDEA очень круто генерировал.

[1:03:39] Дмитрий: Генерировал всякие контроллеры, всякие репозитории. Я помню на конференции кто-нибудь там горячим клавишем, у него что-то на репозитории, потом он сразу в контроллер, сразу в Spring Boot, сразу там три аннотации, готово. Офигеть. То есть, это, знаешь, и я был в IntelliJ IDEA до того, как он вырвался и был приручен. Вот это, мне кажется, было очень круто. И никто не думал, как это тоже деплоит. То есть, у тебя, была возможность писать код, но деплой был другим отделом. Отдел DevOps, SysAdmin, деплоились WAR-ники, JAR-ники. Это тоже упрощало работу.

[1:04:17] Дмитрий: То есть, ты не связывался с этим, тебе не нужно было знать, он запускается где? На Linux, где-то у клиента.

[1:04:21] Александр: О, да, что нам давало? Write once, run anywhere. Вот это же оно.

[1:04:26] Дмитрий: Ты вообще не знал. Ты открывал свою классную папку с проектом, с проектом, начну на английском даже говорить, чтобы покруче выглядеть, красивую идею с темной темой, и все. Было очень легко и понятно. То есть, это большой успех, и индустрия сама как бы так как-то вокруг сформировалась, что и бизнесу это было понятно. Ты нанимаешь вот таких разработчиков. Это проект, он 30 story-поинтов. Нам нужно 3 сеньора, 2 медла, 16 жюниоров, 15 этих, не знаю, там, DevOps. То есть, им было просто об этом думать, просто измерять. То есть, не только нам с технической точки зрения, но и бизнесу было очень удобно упаковывать проект, вот собирать его, кубиков из, не люблю это слово, людей, ресурсов. Типа, вот нам такие нужны как бы инженеры. Ну, вот это все, мне кажется, конечно, ну, то есть, какой, какой индустрии развалили? Сейчас это все как-то вообще просто неважно, потому что, ну, не знаю, неважно. Во-первых, сначала стало круто быть вот этим T-shaped person, когда ты сам знаешь, деплоешь это все. То есть, Java-разработчики потом начали и в Кубернетесе разбираться, и надо было уметь, как это все деплоить. То есть, ты стал немножко съедать работу девопсов, знаешь. Ты тесты писал, и код писал, и девопс, а еще и темлидел, потому что у тебя там и менторил, вот, и в библиотеках разбирался. То есть, таким становился человеком, который решает вообще все проблемы. Вот. И сейчас, не знаю, я долго-долго говорю, Саша, что…

[1:05:56] Александр: Да, давай вот мы пока не переходим. Пока мы не перешли вот эту черту, а что сейчас, да? То есть, мы все еще пока вот находимся в до-ИИ эре, давай так, в Java, да? Ты вот описываешь такой прайм Java темлида в каком-нибудь финтехе, у которого все супер.

[1:06:12] Дмитрий: Кстати, я хотел у всех свой прайм, то есть, это мое представление. Наверняка есть кто скажет, блин, да ты еще молодой. Я вот писал из дженериков, без дженериков, там, под Tomcat, версии, там, не знаю, 5. То есть, всегда есть другой взгляд тоже вот инженеров. И напишите нам в комментариях, как по вашему мнению выглядел прайм. Это мой такой срез того, как было здорово, как вот ностальгически, как было здорово раньше.

[1:06:43] Александр: Да. Я, кстати, твою ностальгию по поводу того, как было круто раньше, вот положа руку на сердце, не разделяю. Редко у нас с тобой такое бывает, что мы в чем-то не согласны. Ты часто надеваешь маску несогласную, но сейчас я с тобой искренне не согласен. Я считаю, что мы занимались полной хренью в прошлое время. То есть, вспомнить себя, ну, я тесты что-то там, ну, то есть, я там что-то писал, запускал, весь день сидел, компилировал вот эти идеи с красными глазами, чтобы один сервис там, не знаю, одну фичу выкатить. Ну, как бы…

[1:07:16] Дмитрий: Саша, ты был счастлив. И был счастлив.

[1:07:18] Александр: Так я и сейчас счастлив. Может быть, поэтому.

[1:07:21] Дмитрий: Когда она деплоилась, ты ходил, и у тебя было чувство такого, что что-то было сделано. Знаешь, была проделана работа. Он сервис дал.

[1:07:29] Александр: Ощущение проделанной работы.

[1:07:30] Дмитрий: Да, да. Сейчас тебе, чтобы достичь ощущения проделанной работы, ты должен 30 фич зафигачить. 15-ю агенту. И еще, не знаю, отойдя от компьютера с телефона, подталкивать своего агента, что давай, давай, давай, моя софтверная фабрика что-то застопорилась.

[1:07:47] Александр: How’s going? What’s up? Do your job.

[1:07:50] Дмитрий: Да, да, да. Ну, то есть, тебе нужно делать гораздо больше, чтобы вновь почувствовать какое-то удовлетворение от работы.

[1:07:58] Александр: Ну, давай так, опять же. Про мотивацию. Вот пишите, кстати, в комментариях. Может, вам интересно будет вот именно разобрать такой вот личностный, да, такой момент, кто от чего кайфует. Вот Дима говорит, ему надо 15 фичей сделать, чтобы кайфануть. Мне не надо.

[1:08:17] Дмитрий: Интересно ты посуммировал, но ладно, я, как бы, хорошо.

[1:08:19] Александр: Но к тому, что я действительно считаю, что это все просто очень, очень хорошо, что происходит с нами, потому что мы, наконец-таки, можем думать о том, о чем важно. Я вспоминаю себя, о чем я думал 5 лет, назад. Я реально думал о том, как help в CLI написать. Dash, dash, help. Вот сидел и думал, как бы мне там так код выстроить, чтобы help работал во все… Я реально вот тратил свои мысли топлива на то, что по факту никому реально не нужно. Help работает и работает.

[1:08:54] Александр: Месседж есть и есть. Как ты там архитектуру вокруг этого выстроил, ну, это вот твое чисто вот… То есть я концентрировался не на том, фокусировал свое внимание не на том, не на том, что действительно, приносит пользу. То, что приносит мне удовольствие, да. То, что приносит мне ощущение удовлетворения и проделанной работы, как ты говоришь, да. Но по факту, положая руку на сердце, я занимался фигней, если убрать вот эти вот эмоциональные очки и просто посмотреть на результат. Вот сейчас результата по делу, который приносит ценность бизнесу, мне, автоматизации, я могу получить в сотни раз больше, и я, наконец-таки, начинаю понимать, что я занимаюсь чем-то полезным.

[1:09:34] Александр: Вот люди говорят, что, а зачем ты нужен, когда есть агенты? Я такой, так вот, как раз-таки с агентами я теперь могу делать то, что я хочу, а не то, что мог и за что мне платили. Это к тому, что есть действительно какая-то технологическая свобода. Мы сейчас в каком-то, знаешь, таком… В анархии находимся, где вот старые правила не работают, новых еще нет, и каждый может сделать все. Дикий запад такой, да. Вот если у нас раньше были вот эта вот структура, было 5 сеньоров, 15 женов, там, сделают нам вот этот сервис там за год, а за вот столько денег теперь то ли вот этот вот один с двумя агентами, то ли этот со своей фабрикой, или тот с Клодом, со скиллами. Что, кому идти, типа, как прогнозировать, ничего не понятно.

[1:10:16] Александр: Но, возвращаясь к техническому, мы вот начали, да, что там write once, run anywhere и все такое, Java. Сейчас-то это не актуально. Давай вот перейдем уже на то, что произошло сейчас. Сейчас мне не важно, насколько высокоуровневый язык, и думаю ли я о ссылках, указателях, структурах данных, потому что раньше мне это Java давала, а сейчас мне это дает агент. То есть я с агентом все еще не думаю о том, о чем я не думаю с Java, я даже больше не думаю о том, что там происходит. Поэтому мне становится все равно, что за язык. Вот по факту именно синтаксиса, по вот этому всему.

[1:10:55] Александр: То есть меня интересует результат, меня интересует перформанс, меня интересует размер бинаря, меня интересует то, как я это буду распространять, как я буду поддерживать, насколько много багов будет появляться с развитием этого, потому что с Python будет больше, потому что если вот жестко вайбить, то в какой-то момент там где-нибудь твой сервис нет да нет да стрельнет. То есть надо осознанно понимать, покрывать тестами, все такое. Если это, например, Rust, то я более уверен в том, что хотя бы не будет там какой-то фигни типа с типами. То есть меня не интересует сам язык, меня интересует его философия и его гарантия, который он мне дает. Меня как человека больше не интересует, что там var, не var, аннотации, не аннотации.

[1:11:42] Александр: Мне вообще все равно. Хоть ты заново напиши свой Spring сейчас под себя harness’ом под мой один сервис и используйте свои аннотации, если это будет быстрее и поддерживаемый мне ок. Вот, соответственно, ну, я думаю, может, у тебя тут есть что добавить, как бы, может быть, ты не разделяешь вот это у моего, что язык теперь не имеет роли какой-то.

[1:12:00] Дмитрий: Ну, нет, я считаю, что он имеет все-таки роль. Это важно. Во-первых, еще немножко про… Я и вот про разных программистов. Такое ощущение, что неплохо тоже делить людей, но есть вот у программистов люди, вот кто любит заниматься фичами, ну, часто говорят, вот мы делаем фичи, мы деливерим какой-то продукт, мы шипим. И я их называю такими мини-стартаперами. Они любят деливерить. Им все равно на качестве. Им главное фичу заделиверить, чтобы она работала. Они получают удовольствие от того, как фича сделана, что она уже в проде. А есть те, кто получают удовольствие от того, что они как бы очень точно понимают, как работает программа, ковыряются вот в этих внутренностях и любят находить какие-то интересные вещи внутри, какие-то, там, не знаю, оптимизировать все это. Вот такую работу с…

[1:12:52] Дмитрий: Не знаю, что мне хочется сказать, мелкой моторной. Как-то вот с маленькими деталями. Кто-то любит шипить большие детали, большие фичи, а кто-то любит ковыряться с маленькими детальками. Вот. И такое ощущение, что я очень хорошо помог тем, кто любит шипить, кто любит деливерить фичи, но так себе помог тем, кто любит ковыряться вот с маленькими, там, не знаю, с оптимизациями. Не сильно он им помог. Вот такое ощущение. Или пока не помог, потому что нет тулинга. И поэтому люди, кто любят очень делать быстро продукты, CLI и что-то выпускать, получают от этого удовольствие и очень сильно кайфуют. Вот. И им все равно на TypeScript, да хоть на TypeScript, на Python, да хоть на Python.

[1:13:32] Дмитрий: На любом языке. И получается, что у тебя с агентом любой язык выглядит как скриптовый язык, и он запускается какой-то командой. Буквально CLI и какой-то текст, какие-то файлы ты ему передаешь. Ты даже можешь не разбираться, это что, какие файлы? Это вообще язык программирования? То есть это файлы с языком программирования, или это файлы, не знаю, там, с какими-то картинками? То есть тебе в целом не важно. Это файлы, которые ты передаешь какой-то CLI, и она показывает тебе что-то на экране. Ты можешь эту программу запустить на экране, с помощью какого-нибудь электрона, и это фреймворк, на котором AI напишет.

[1:14:12] Дмитрий: Но также ты можешь сказать, что AI с этим, слушай, я напишу вообще все с нуля. Вообще, у меня в моем приложении три кнопки, и не знаю, и два инпута. Не надо, зачем мне полностью электрон, веб-браузер. Напиши мне на чистом канвасе, вот возьми какой-нибудь OpenGL, любую библиотеку для рендеринга, и вот там вот мне нарисуй кнопки. И в принципе это тоже будет работать. Неважно, сколько там потратишь, то есть у тебя есть эта возможность. Раньше эта возможность бы, ну у тебя просто и нет, у тебя нет полтора года на то, чтобы писать свой движок. Сейчас это будет буквально вопрос одного дня. И становится действительно все равно, на чем ты пишешь.

[1:14:52] Дмитрий: Ну вот, например, для того, чтобы сделать эту фичу, тебе все равно, на чем ты пишешь. Но вот ты говоришь, что тебе важно померить производительность, и важный размер бинаря, тебе нужно уже понимать, как это упаковывается. Вот в этот момент тебе становится важно, на чем ты пишешь, потому что Оказывается, что на питоне надо как-то, чтобы твоя программка запускалась под разные операционные системы, тебе надо как-то там паковать по-особому. То есть оказывается, что в Go, чтобы запустить под такую платформу, тебе нужно сбилдить именно на этой платформе или без какими-то там ключами. А на Java ты можешь просто сказать compile, build, и оно будет работать под любой системой.

[1:15:31] Дмитрий: То есть неважно, под какой архитектурой. Если ты какой-то сервак, не знаю, арендуешь и там у него x86, либо ARM64, то есть если он подешевле какой-то хочешь сервачок, то все равно. Просто закачай правильную Java, запускай, и оно все запустит. А вот на Go тебе надо скомпилировать правильно. Ты уже не можешь просто скомпилировать локально в своем ноутбуке и скопировать этот бинарник туда. Тебе надо как-то уже там скомпилировать. То есть получается, тебе все-таки нужно знать какие-то базовые вещи того, как это работает внутри. Шипить фичи ты можешь в вайб-кодах, но делать уже какие-то оптимизации, какие-то системные вещи, тебе нужно понимать, что там происходит.

[1:16:11] Дмитрий: И тебе становится очень важно, на каком языке написано. Потому что от этого зависят тулзы, которыми ты будешь это измерять. Грубо говоря, например, у Java есть одна возможность снять хип-дампы, в Go есть другая возможность снять хип-дампы, в Rust есть третья возможность снять хип-дампы. И они разные, и они разные метрики. То есть даже чтобы хип-дамп тебе снять, тебе нужно как-то знать, как он снимается и как это работает.

[1:16:40] Александр: Ну подожди, не могу. Ну что, ты будешь сам хип-дамп снимать? Или ты будешь сам настраивать CI, который будет собирать под разные платформы? Нет, конечно, ты же будешь делать тот же самый агент, с которым ты перед этим фичи делал. Вот зачем мне разбираться в том, что Go надо скомпилировать с разными флагами на разных платформах и все такое, если мне агент уже workflow готовый сделал, вот тут прям подвешен, под ногами он уже запускается.

[1:17:05] Дмитрий: Ну workflow, он спросит, ну то есть ты говоришь, сделай мне CI, CD. Агент спросит, а вот где? Ты ему скажешь, как где? Ну выбери лучший вариант. Он скажет, ну лучший вариант, если оно будет сразу на GitHub. Ты скажешь, блин, но у меня нет GitHub, давай какой-нибудь другой вариант. Он скажет, слушай, но есть еще разные сервисы, которые делают это вот за небольшие-небольшие деньги, CI, CD. Например, альтернатива GitHub. То есть ты хостишь свой сервис на GitHub, но вот у тебя CI, CD будет внешний, там за 5 баксов он там что-то тебе будет собирать. Ты говоришь, хорошо, давай какой-нибудь там что-то, дрон CI, депот CI. То есть какие-то есть еще CI. В какой-то момент ты начинаешь думать, блин, да что ж я плачу за этом сервису, я же вайб-кодер, давай я свой CI на вайб-коде.

[1:17:45] Дмитрий: То есть в какой-то момент ты начинаешь вайб-кодить уже свой CI, и начинаешь думать, слушай, а вот ту программку, которую я сейчас делаю, ну вот если я делаю базу данных ClickHouse, хорошо, наверное, свой CI еще можно за вайб-кодить для этого. Но вот странно, если я делаю морской бой, чтобы вот со своим, не знаю, там, друганом вечером в морской бой поиграть, странно, блин, мне вайб-кодить начинается это сначала с CI. Ну типа это как, ты дом строишь не из кирпичей, ты такой, так, сначала мы идем на каменоломню, на нормальную гору, где нужны камни, и сначала вытачиваешь кирпичи.

[1:18:27] Дмитрий: Ты начинаешь настолько издалека, что ты не дойдешь никогда до построения вот этого своего дома. Если какая-то абстракция тебе нужна, ты хочешь начать с чего-то, и ты начинаешь использовать какой-то готовый продукт, чтобы просто сэкономить время. Время вайб-кодера, оно тоже ограничено. Ты, конечно, можешь не спать, и агенты могут работать ночью, но вот иногда он взял и спросил у тебя что-нибудь неожиданно, неожиданно.

[1:18:54] Александр: Смотри, мне нравится, что ты мысль повернул в правильное русло на самом деле, что ты…

[1:19:00] Дмитрий: Как хорошо, что я не повернул не в правильное. Начинаю волноваться. Что тут есть правильные и неправильные какие-то.

[1:19:05] Александр: Ну да, вот полтора часа пришлось потратить, чтобы русло правильное начало. Я к тому, что ты вот мыслительный процесс нормально описал человека, который там фигачит что-то, что в какой-то момент он задается вопросом, а зачем я за это плачу? И вот в этот момент мы находимся в хорошей позиции, что мы начинаем мыслить деньгами, токенами, вычислительными ресурсами и временем. Вот это четыре вещи, которые на самом деле имеют значение. Все остальное, лимитов нет. В плане ты можешь реализовать все остальное сам, если ты готов этими ресурсами покрутить, пожертвовать.

[1:19:40] Александр: И ты достаточно квалифицирован, чтобы это сделать. То есть мы не говорим, что любой может построить свой CI. Нифига. Он построит CI, который будет дороже, чем платить пять баксов в месяц кому-то на стороне. Факт. Даже не просто на мейтенанс, потому что слишком много оверхеда. Сто процентов будет. Я к чему, что… Вот мы начали говорить про Джаву, потом что-то такие, что нам она ничего не дает, потом перешли на Go, Go, что, мол, вот… Но там есть о чем думать, а оказывается, не думать. И начали думать про ресурсы. И вот с точки зрения ресурсов, что очень важно, привносит ли Java стэк сейчас нам какие-то преимущества по сравнению с другими языками, или он все-таки в отстающих?

[1:20:21] Александр: Вот это мне интересно подумать, поразмышлять.

[1:20:24] Дмитрий: Ну, давай вот проект сейчас как-то с размерами проекта. Когда я хочу вайб-кодить, вот я говорил, какую-нибудь игру, чтобы играть со своим другом вечером. И вот у меня, например, последняя, что я тоже на своем YouTube-канале рассказал про такую систему, там, [название неразборчиво], где ты что-то там можешь запустить на сервере и да е, что-то по вайб-кодить. И вот с дуру я на вайб-кодил это на Java. И оказалось, что я, когда хотел показать, что я арендовал какой-то сервак на Hetzner. И как бы, ну, как ты арендуешь сервак? Ты думаешь, мне надо запустить веб-приложение, для веб-приложения мне нужен самый дешевый сервачок там, какой-то за 5 баксов.

[1:20:59] Дмитрий: Окей, ты его как бы арендовал, арендовал, туда поставил, поставил этот [название неразборчиво], вайб-код, уже с ним прикольно. PyAgent работает шикарно, то есть там 1 гигабайт оперативной памяти хватает на то, чтобы проксировать запросы в LLM. А потом я думаю, так, ну что же, давай-ка запущу свой морской бой, игрушку. Она на Java написана. И я попросил, да, давай запусти, вот репозиторий. Он говорит, хорошо, но мне нужно скачать JDK. Хорошо, качай JDK. Какую? Такую. Клади сюда. Запускай ее. Запускай, а у меня там все зависает, потому что уже оказывается, что даже просто запустить какой-то морской бой, там 10 клеток на 10 клеток.

[1:21:40] Дмитрий: У второго, напоминаю, кто может не знает, у второго игрока 10 клеток на 10 клеток. Не хватает одного гигабайта оперативки. Я не погружаюсь в то, как это работает, потому что это вечерний проект. Я хочу навайб-кодить какой-то там, не знаю, морской бой какой-то прикольный, чтобы в него поиграть. Но оказывается, что, блин, изначально мое решение, что, а давай-ка я навайб-кодил его там на Java 28, я там посмотрел на какие-то, там как бахал, что такое, Java 28, она же появляется. Я какую-то новую Java там суперновую какую-то скачал, вот. Что это решение повлияло на то, что теперь мне нужно обновить его и платить за сервер там 15 баксов. Наверняка можно было что-то там, эксперты придут, скажут, там надо просто передать ключ XX, двоеточие, make Java great again, минус-минус, потом 3, 2, 6, 5, 8, и мой номер телефона, ну, такие ключи в Java, обычно очень легко запоминающиеся, и тогда все заработает. Но я не хочу этим заниматься.

[1:22:42] Дмитрий: Я не хочу этим заниматься для проекта, который я делаю для удовольствия вечером. Я не получаю от этого удовольствия, я получаю удовольствие от другого. И вот на маленьких проектах, блин, все чаще думаешь, так, хорошо, TypeScript, потому что легко деплоить, легко запускать кучу готовой инфраструктуры. Ты говоришь Cloudflare deploy, к версии deploy, твой проект на JavaScript готов везде. Для таких проектов да. Для других проектов, которые делаю уже промышленная разработка, на работе, мне важны другие вещи. Заморочиться чуть-чуть больше, потому что это не тот проект, который я завайбкодил и выбросил. И следующий проект, если я буду такой, сделаю следующую версию морского боя, скорее всего, буду не пользоваться первым. Я просто заново завайбкодил.

[1:23:23] Дмитрий: Там я уже беру, если у меня есть такая возможность, то я беру раз, потому что мне важнее гарантии того, что мой pull-request, если он там компилируется, то он корректен, и он работает, и мне не нужно думать о том, что он использует дополнительную какую-то виртуальную машину. У меня все в нем есть. У меня есть те же самые гарантии, как у Java. У Java очень хорошие гарантии. Там крутые типы, там крутые Enum, то есть там куча крутых фич. Но просто прикол в том, что все эти крутые фичи, они тоже есть в Rust. И плюс два дополнения. Тебе не нужен garbage collector, и ты можешь запускать ее без виртуальной виртуальной машины. И вот это, ну, как бы, я все еще на Rust пишу, как на Java.

[1:24:07] Дмитрий: То есть я не… Мой код на Rust, он достаточно простой. Я не использую async await. Я клонирую везде, где что-то там мне не нравится, я клонирую. Ты такой, да на Java это клонирование на каждом вызове просто. Ну, то есть я к тому, что это не так сложно, джависту, писать на Rust или на TypeScript, но просто вот эти штуки, штука, что вот ты просто компилируешь это, и скорее всего это работает, и агенты очень хорошо тоже пишут на Rust и запускают код, им очень нравится. Если он компилируется, если все корректно, то все хорошо, а если не компилируется, он четко показывает, где и почему, и долго расписывает. Кто бы мог подумать, что вот этот вот вывод ошибок очень такой красивый и человекопонятный оказывается неожиданным и очень помогает агенту.

[1:25:00] Александр: Вообще факт. Я вот когда еще… Классно. Два года назад на Sonnet’е, на стареньком прогол на Rust’е, я воодушевлен был, потому что я смотрю у Rust’а вывод ошибок компиляции, он тут прям тыкает такой, вот здесь я ожидал вот это, получил вот это, сделай вот так. И ты такой, ну, это же тупому агенту, ну, просто масло. И я был в восторге. Дальше, например, что я видел тоже, что есть инфраструктура Clippy, у которой есть культура, культура автофиксов. Вот это меня тоже поражало, и я всегда такой, ну, агент может в целом нафигачить всякую хрень, ну, такую небрежную, да, скажем так, но потом Clippy там фикс и пару итераций, и уже не так плохо. В Java эту культуру частично закрывал IntelliJ IDEA вот этими фиксами, но для того, чтобы этим всем оперировать, нужен был человек.

[1:25:54] Александр: Инфраструктура, именно CLI-ная, терминальная и вот эта нативная для агентов, в которой агент живет, в Rust’е, самый, скажем так, благодатный, потому что она нативная там, она там всегда жила, вот. И поэтому опыт классный, согласен. Почему не Go?

[1:26:16] Дмитрий: Блин, круто, что ты сказал, потому что я хотел добавить как раз про Go, потому что Go тоже хорош, он хороший, я на нем писал, и это мне очень нравится. Блин, как хорошо, как он запускается и как он компилируется, это просто потрясающе. Да, да, ну, круто. Блин, ну, если ты пишешь какой-то большой тоже проект, CLI здорово, блин, ну, какой же там ужасный синтаксис. То есть я понимаю, что он простой, я понимаю, что он работает, но сколько раз я что-то писал, и потом оказывается, что в Go’е мне гораздо больше нужно держать просто вещей в голове.

[1:26:53] Дмитрий: Фраз тебе подсказывает что-то, что ты, может быть, забыл, что что-то было не так, Go немножко безжалостен в этом плане. Не знаю, может быть, там есть тоже вот эти Go-чекеры и все такое. Я, ну, то есть какие-то у меня были включены, там, по-моему, Go CI, что-то еще, но все равно просто было больше багов, где я совершал какие-то ошибки, которые, смотришь, блин, ну, какая-то глупая ошибка, но почему-то никто ее не поймал, почему-то на ревью ее тоже человек, который тоже не увидел, и ты просто, тебе нужно больше времени вчитываться, вчитываться в код, больше времени тратить на это. Я писал достаточно большие проекты на Go, и вот мои функции, выглядят просто гигантские.

[1:27:34] Дмитрий: Вот эти проверки все время на ERN, на ошибки тоже, ну, блин, как же это тяжело. Вот эти корутины, крутая вещь, но вот если у тебя есть файл 5000 строк кода, где запускаются корутины, и потом ты, там, не знаю, 10 типов корутины, ты в конце их ждешь, ты что-то там куда-то у тебя утек указатель не туда, у тебя там что-то куда-то не туда скопировалось, и это становится просто невыносимо тяжело. В расте ты, если что-то у тебя, ты запускаешь какой-то, это поток, и ты туда просто не можешь передать переменную. Говоришь, я не могу. Оберни ее в какой-нибудь, там, не знаю, арк, а перед тем, как арк, оберни ее в бокс, а перед тем, как в бокс, оберни все такое, и ты такой, погоди, погоди.

[1:28:14] Александр: Еще это должен быть, это, синг, там, этот, тренд. Да, да.

[1:28:17] Дмитрий: Ты такой, окей, я понял. Не запускаем поток. Оно мне не надо. Не будем. Мне не надо это. Аквариум мне этот не нужен. А в Go ты такой, о, да я тут просто горутинку запущу, ты запускаешь, у тебя все оно ломается, и никто тебе об этом не говорит. Знаешь, хейтеры скажут skill issue, и они будут правы, но у меня нет времени закрывать это skill issue. Я хочу, чтобы мне язык сам уже помогал это писать. И просто сразу там, если чувствую, он меня обучает, он говорит, вот тут ошибка, почитай, посмотри. Как бы мы общаемся с ним, как программист программистов, а не как с человеком, который такой, ну, ну, ты, ну, короче, все уже упало, все уже плохо.

[1:28:59] Александр: Подожди, дед забыл выпить таблетки. Точно. Ну, какой мне непонятно? Ну, ты же через агента все делаешь. Ну, давай вот в реальность я тебя опущу. Вот с точки зрения программирования с агентом.

[1:29:09] Дмитрий: Ну, то есть агенты я должен запускать, то есть агенты я должен запускать после включения компьютера. Знаешь, такую я кнопку называю power on, следующий там кнопка cloud on, Claude Code. Нет, есть все-таки ситуации, Саш, когда я, у меня не запущен агент. Наверное, это, знаешь, недоработка. Но иногда я все-таки делаю вещи руками. Как бы это, не звучало отвратительно в 2026 году.

[1:29:33] Александр: Ну, я просто в плане выбора языка, то есть ты все еще, ну, как бы допускаешь мыслительный процесс. Твое субъективное ощущение языка как сорцов, ты его учитываешь. Вот что мне важно знать. То есть я просто смотрю на языки программирования, как на то, как агент будет с ними работать и каково мне с этим агентом будет.

[1:29:55] Дмитрий: Ну, Саш, я понял. Я просто рассказываю про свой опыт, наверное, с языка. На Go я не писал с агентом. Я на Go писал еще вот этими руками. Поэтому это мой такой опыт. То есть я знаю, что это хороший язык, на нем можно все еще писать. Но просто мой опыт, когда я писал руками, не сравним с тем опытом, который я писал руками с Растом. То есть я не переходил, не писал с агентом на двух языках, а потом выбрал. Я сначала начал писать на Расте, потому что мне было проще. А потом, когда я попробовал с агентом, мне стало просто вообще великолепно.

[1:30:23] Александр: Да, в общем-то мой личный опыт программирования с агентами на Го и Расте, показывает, с точки зрения ресурсов, которыми я мыслю, которые были названы, это токены, компьют, время и… что еще? Там размер бинаря и вот это все. На Го какая разница по сравнению с Растом? То, что быстрее агент локально компилирует. Это факт. То есть у него вот этот цикл написания кода, именно вот этот короткий цикл написания кода и переправки там, если ревьюер сказал поправить, там он переправляет.

[1:31:01] Александр: На Го пошустрее, но все, что дальше, ничем не отличается. То есть это там цикл деплоя, развертки, то, что это там где-то должно пройти какие-то там линтеры, QA. То есть дальнейший пайплайн, он вот, к правилу, у серьезных проектов довольно масштабный. И вот этот пайплайн, где нужно скомпилировать, он очень маленький. И да, он быстрее у Го, но все остальное такое же. А что мне Го дает взамен, это то, что у него есть рантайм, у него есть garbage код, у него есть коллектор, который не всегда мне нужен. И с точки зрения конечного вот этого артефакта, который я получаю, мне все еще интереснее пробовать на расте.

[1:31:41] Александр: Это вот личный опыт. То есть я уже не мыслю там, какой там код, страшный, не страшный, Го рутины, 3D. Агент разберется и с тем, и с другим. Просто в расте будет разбираться чуть подольше, потому что компиляция долгая.

[1:31:53] Дмитрий: Когда мы тут вдвоем раст хвалим, плохо, плохо, надо было, чтобы один кто-то ругал. Но я еще один угол, как на это можно посмотреть, хотел добавить. У меня был видос, что я подавал даже доклад такой на конференцию, который называется типа раст, это следующий язык для джау-разработчиков. В 25-м году подавал этот доклад мне на Joker.

[1:32:13] Александр: Чего, тебя отмели тогда?

[1:32:16] Дмитрий: Отмели. Не знаю причин, но мне кажется, они что-то подозревали. И я потом записал видос на Ютьюбе, сходите, посмотрите. На обложке большими буквами написано раст. В общем, такая идея, что когда ты учишь второй язык, это отличается от того, когда ты учишь первый язык. И вот когда ты уже знаешь джау, то есть зачем тебе учить го, если он настолько простой? Он проще, чем джау. То есть даже просто по синтаксису. И он не дает тебе никакой какой-то дополнительной суперсилы. Если ты учишь C++, например, и раст, либо просто C, то он тебя погружает в мир как бы системного программирования.

[1:32:51] Дмитрий: И это может просто больше инструментов писать, которые работают с операционной системой. Работают типа базы данных, например. Хотя я знаю, например, InfluxDB, по-моему, написано на Go. Еще, может быть, не переписали. Но, в общем, я к тому, что ты можешь писать инструменты другого класса. Те, которые ты до этого на джаве не мог писать. И это раз тебе как бы дает эту возможность. Ты можешь писать прокси, серверы прокси какие-то. Вот, например, Cloudflare, они у них там свой прокси написаны. Ты можешь писать базы данных. Ты можешь писать системные компоненты, которые заработают на системном уровне.

[1:33:27] Дмитрий: И это суперсила, которую тебе он открывает. Ты не теряешь, в синтаксисе он все еще прикольный язык. В джаве классный синтаксис, но такой же классный синтаксис у Rust не так сложно переключиться. Но ты добавляешь к себе как бы вот эту вот системность к своему типа портфолио, не знаю, в свое резюме, что ты теперь становишься системным программистом. Ты не боишься писать вот эти компоненты, которые до этого ты просто не мог писать. Не знаю, если кто-то скажет, а что на GraalVM мы не напилим базу данных? Ну, напилите. Про GraalVM, я не сказал. Потому что я начал об этом говорить в начале выпуска. Мне очень хочется, чтобы Java стала просто вся вот компилироваться на Tino с помощью Graal VM. И мне кажется, единственное какое-то будущее, о котором почему-то никто не говорит. В том плане, что у Java есть такая возможность, есть фреймворки.

[1:34:19] Дмитрий: Там также все долго компилируется, как в Rust. Все хорошо. Но почему-то мне кажется, это вот тот путь, которому надо стремиться и принять это решение, чтобы у тебя просто виртуальная машина была возможность, виртуальную машину какую-то встроить внутрь этого бедаря. Как в Ugo хотя бы. Это бы, ну, то есть открыло кучу разных возможностей. И тогда бы Java снова стала как-то крутой. Не знаю, в версии 50. Возможно, это нельзя сделать. Возможно. Напишите, если вы знаете тоже об этом что-то большее. Да просто мои как бы такие. Знаешь, когда я думаю о будущем как языка и пытаюсь посмотреть, не языка, а куда все идет. Вот мне кажется, все как-то идет туда.

[1:35:05] Дмитрий: Именно в GraalVM и компиляцию. Ну, типа даже фреймворки. Quarkus, там, Micronaut, они пытаются построить что-то поверх именно вот GraalVM и не поверх Java.

[1:35:16] Александр: Я думаю, что это хороший момент. И вот новость была какое-то время назад, что Oracle OpenJDK забанили генеративное использование AI в контрибюциях, а GraalVM не забанили. Ты видишь как бы в этом, в этой технологии будущее, и они от него не отказываются, потому что OpenJDK от будущего отказалась. Вот для меня как бы эта новость стала как бы последней каплей надежды, что у этого стека есть какое-то будущее. Вот отказ от того, что мы не будем, ну, типа, я все, чуваки на пенсию ушли и за собой тянут других.

[1:35:55] Александр: Я не в их числе, поэтому я как бы стек сменил. По поводу Graal’а единственное, что я думаю, а чем тогда это будет отличаться от Rust? Ну, просто вот зачем мне использовать Java на Graal’е, если я программирую с агентами, фигачу и не читаю код, если я могу это делать на Rust? Таковая суть.

[1:36:13] Дмитрий: Вот зачем тебе Rust? Зачем тебе Rust? Зачем тебе Rust, если у тебя будет GraalVM?

[1:36:19] Александр: Не, ну подожди, у Rust есть инфраструктура, которая для агентов очень хороша, чего нет на Java. Мы про это, кстати, с тобой не говорили, но у Java просто ужасный aging, UX. То есть стектрейсы эти невероятные, которые засирают контекст.

[1:36:36] Дмитрий: Нет, Саш, ты сравниваешь не с тем. С CrashDump’ами C++, если сравнить, это прекрасный UX, здесь красивый стектрейс. То есть просто это было красиво просто 20 лет назад, 10 лет назад, а сейчас уровень красоты изменился. То есть фреймворки такие, как Spring тоже подпортили, потому что ты, не знаю, вот этот Spring’овый стектрейс, когда тебе присылают…

[1:36:57] Александр: Да, я вот про это имею в виду.

[1:36:59] Дмитрий: Это сейчас мы где? Так, это мы сейчас вот тут. А, это откуда вообще это все такое? Ну, то есть интересно, что просто еще мода изменилась. Вот тогда мода была другая, и это казалось как бы красивым и полезным. Иногда, знаешь, надо кому-то пошерить стектрейс. Я помню такое. Скину-ка я в Google Doc. Ну, вот в Google Doc, пошерю в Google Doc. И там копируешь этот стектрейс, нам 5 страниц. 5 страниц стектрейса кому-то прислать. Это просто ужасно.

[1:37:27] Александр: Факт, да. И в целом вот если мы уже говорим про Java и про Spring, тут ты заговорил. То есть если мы Java похоронили, да, то Spring, он первым ляжет. Вместе с Hibernate и со всеми этими штуками. Потому что это еще больше уровень абстракции для людей был. Вот. Агентам Spring не нужен. И я осознанно, если вдруг у меня есть какой-то интерес на Java что-то попрограммировать сегодня, ну, с агентом, я прям делаю все на ванильной Java, потому что минимум зависимости и минимум вот этого всего. Окей, JAR-ник, я согласен. write once, run anywhere. Зачем мне аннотации Spring? Зачем мне эти стектрейсы и этот ужас? Вообще я лично считаю, что вот до AI, вот два года назад, когда вот мы еще не начали, Java с вот этим всем стеком, своим интерпрайзным, современным, она почти, ну, она достигла пика. То есть вот когда я запускал вот эти интеграционные тесты у себя какие-то на Java, где там Spring все обмазано, я вообще не понимал.

[1:38:23] Дмитрий: В тест-контейнерах с докером.

[1:38:25] Александр: Да, в тест-контейнерах. У меня все вот это гудит, у меня идея там пыхтит, и у меня все падает, все красное. Я смотрю, где-то я бин какой-то, где-то в конфигурациях что-то прошло не так, и я два дня трачу на то, чтобы понять, где я сконфигурировал Spring неправильно. Потому что после обновления там теперь какая-то вот в тестах по другому контексту начал. Я когда на это смотрел, я думаю, не, ну это конец. Это конец стеку. Все, типа дальше ехать нельзя. И хорошо, что пришли агенты, и мы можем лишнее выкинуть. И оставить, ну, хотя бы Java, и у Java будет…

[1:39:01] Александр: Может быть, есть какой-то шанс, потому что на ней все-таки куча кода написана. Вот от этого мы пока никуда не уйдем. То есть огромное количество кода работает на Java в продакшене и приносит ценность. И вопрос будет стоять так. Либо мы переписываем этот код на Go и Rust, и мы готовы в это инвестировать время токены, и у нас есть квалифицированные разработчики, которые это могут сделать. Либо мы продолжаем жить на Java, и тогда вопрос, а что нам Java предложит, чтобы продолжить на ней жить в современном мире. И здесь вот как бы твой кейс с GraalVM возможно один из рабочих, просто потому что если Java предложит, скажет, вот вы там апдейтитесь на новый JDK, обновляете себе компилятор, правите там билд-сборки, все такое, вот инвестируете немного в инфраструктуру, код продолжает работать тот же самый, типа потихоньку выкидываете лишнее, там Spring выкидываете, это все выкидываете, и постепенно, безопасно, предсказуемо, на вот этих интерпрайзных рельсах поехать в сторону эволюции Java туда вот куда-то. То есть не переписывать, а эволюционировать вот, по привычному способу для интерпрайза. Я думаю, этот трек, это часть бизнеса, это то, куда, наверное, вот там стоит смотреть тем, у кого бизнес на Java как бы повернут.

[1:40:14] Александр: Нормальная тема. Не все мы сможем переписать, факт.

[1:40:16] Дмитрий: А я, кстати, не согласен, как ты, почему считаешь, что не все сможем переписать?

[1:40:19] Александр: А потому что риски большие.

[1:40:21] Дмитрий: Сейчас, подожди, вот есть аргумент такой, что вот мы вот весь код не перепишешь. Мне тоже часто пишут комментарии там, да кто ж перепишет Legacy там у нас на COBOL? У нас там на Fortran? Да у нас мы столько там Legacy. И вот когда начинаешь спрашивать, слушай, это твой Legacy? Нет, это моего друга. А это ты наработаешь на банковской системе? Нет, это я слышал на конференции рассказывали. И вот мне кажется, что нужно больше пообщаться с теми людьми, кто работает над этим Legacy, а не с теми, кто говорит о том, что очень много, очень много Legacy. В индустрии на Java уже не то, что не было больших таких революций, прям как и агенты, но один раз мы уже переписывали сначала монолит на микросервисы, потом микросервис назад на монолит.

[1:41:02] Дмитрий: Ну, то есть было несколько эволюций, когда сначала все деплоили в Tomcat и Wildfly, потом Spring как-то победил, потом Hibernate то впилили, то выпилили. То есть проблемы с переписыванием как бы большой нет. И просто дело в том, что если удастся, найдутся люди, которые покажут, что смотрите, вот есть от этого выгода, то перепишут. И рано или поздно, рано или поздно в любой компании найдется какой-нибудь разработчик, который скажет, слушай, я там микросервис один написал. Значит, CLI, помните, у нас была для чего-то там, для деплоя. Я, кстати, на Rust переписал, смотрите, работает быстрее. А потом, слушай, а микросервис там, ну, какой-то он ненужный для внутренней структуры, написал на Rust. И вот просто вот он так вот работает, и админ спрашивает, где там какая Java нужна, я ему говорю, никакая. А сколько ресурсов, а я ему сказал, там, не знаю, да нисколько. Оставь себе.

[1:41:54] Дмитрий: И вот потихоньку это как бы, ну, не не избежать. То есть это то, как развивается индустрия. Просто не остановить любопытство и производительность разработчиков, тем более с я-агентами. У тебя просто нету ни одного… Раньше ты мог сказать, да долго переписывать, да риски. Ну, напиши вторую версию, напиши с нуля.

[1:42:17] Александр: А еще знаешь, какой был аргумент? Где мы разработчиков найдем на этот стэк? Вот я сейчас перепишу на твой Rust, я где их буду этих ростовчан искать? А сейчас ты такой, да, как бы, любой адекватный чел с агентом на Rust будет классно пробовать.

[1:42:30] Дмитрий: Типа, все, они работают. Там не так сложно. То есть я вот не понимаю, когда люди ходят, тратят два дня на конференцию, там как они ходят, обучаются, когда Go можно за два часа не за что выучить, программировать на нем достойно. И так же самое с Rust, когда говорят, что вот мне надо как-как учить новый язык. Там документация, не знаю, на день, на два дня, и вы сносно сможете программировать, если вы писали код на Java. Так сложно. Смена стека, это не так, ну, то есть, это не так сложно, и не то, чего вы боитесь, если вы опытный разработчик.

[1:43:11] Дмитрий: Если у вас есть пять лет опыта работы, там, не знаю, на каком-то языке, то вам не будет так же тяжело стать профессионалом в другом языке программирования.

[1:43:19] Александр: Да, Дима, ну, это же совсем не имеет никакого значения. Если раньше можно было об этом говорить, сказать, что да, ты можешь там переучиться, то чего переучаться-то? У тебя агенты есть, они код пишут.

[1:43:30] Дмитрий: Ну, Саш, ну, вот есть скептики. Ну, есть скептики, все равно. Есть вот скептики, откуда им важно. Важно, чтобы понимать, как работает инструмент. Ну, то есть, я понимаю тебя.

[1:43:43] Александр: Они выучатся. Если, знаешь, как бы петух клюнет в одно место, выучат, потому что рано или поздно этим скептикам придется это выучить, и уже их никто спрашивать не будет. Рынок диктует правила. То, с чего мы начали, почему мы пришли в Java, нас рынок привел туда. Вот. И рынок приведет этих же людей туда, куда им надо. Ну, в плане, куда рынку надо, а не туда, куда этим людям надо и что они там думают. Потому что в какой-то момент тебе просто перестанут платить деньги. А кушать хочется.

[1:44:08] Дмитрий: Это твои выводы, Саш.

[1:44:12] Александр: Это мои выводы. Я с точки зрения еще инфраструктуры вот хотел бы. Ты хорошо сказал, что money talks, ну, то есть, типа, деньги говорят. Если ты придешь и объяснишь, что реально переписывание на какой-то более свежий стэк по ресурсам выгоднее, мне очень это откликается, потому что, ну, если посмотреть на то, сколько у тебя вот в стандартах, в стандартном каком-нибудь там среднего размера бизнесе инфраструктура на Java занимает по ресурсам, и сколько ты за это денег в клауде платишь, ну, глаза на лоб вылазят. Там как бы, если бизнес масштабный, если компьютер большой и памяти надо, вот эти все микросервисы на спринге под 200, 300, 400 мегабайт на инстанс, которые делают примерно ничего, которые перекладывают JSON-чики в базу данных туда-сюда, там, сериализацию, десериализацию, ты смотришь, так на расти там 10 мегабайт, 20 надо максимум.

[1:45:00] Александр: Это на порядок экономия. И вот тогда действительно можешь сказать, ну, вот вы тратите лям, например, себе, да, на клауд, вот в два раза меньше вообще в 100% можете тратить, переписав. А это в один месяц. Посчитайте за два года и подумайте, типа, на какой стэк выбирать. Вот это, мне кажется, очень хороший аргумент в сторону того, что переписывать все-таки имеет смысл большинству.

[1:45:19] Дмитрий: Да, да, ну, это просто то, что неизбежно в том плане, что, ну, ты приносишь график, на нем один столбик в пять раз больше, чем другой. Как бы что-то скажешь. Ну, те, кто разработал на Java, тебе менеджер скажет, почему? Почему так? Он скажет, ну, мы там просто не оптимизировали, просто в том-то спринте мы не выделили достаточно ресурсов на то, чтобы оптимизировать. Почему ты выделил? Какой тебе нужен спринт? У тебя есть агенты. Поставить там агента, оптимизировать это. Ну, нет, вы не понимаете, там специальный профиль нагрузки. И это просто не выдерживает никакой критики. Нет причин больше, чтобы твой сервис работал медленно.

[1:45:56] Дмитрий: Нет причин, чтобы он, если у тебя, не знаю, семь клиентов, и у них у всех, не знаю, по пять строчек в базе данных, по десять, по двадцать, по тридцать, нет причин, чтобы твой сервер жрал, не знаю, пять гигабайт оперативки. Ну, прошли те времена, когда вы как бы просто повышали, добавляли, добавляли, добавляли. Вновь приходится подужиматься, потому что траты на токены с другой стороны выросли. То есть у вас потратите на токены, но это все-таки еще траты, и надо, соответственно, ужиматься в каких-то других местах. Короче, да, мне кажется, знаешь, такое кратце, это были твои итоги. Мне кажется, Java разработчикам срочно, срочно нужно, во-первых, становиться генералистами, дженералистами, чтобы писать на любом языке. Хватит. Нет, нет, если вы пишете до сих пор в своем резюме «Я Java разработчик», перестаньте. Уберите слово «Java». Если вам предложат вакансию в каком-то крутом проекте, но там будет C-sharp, ну, чего вы скажете, что нет? Ну, все, не важен, не важен, как бы, язык. И если вы хотите еще держаться, вам нужно становиться вот таким генералистом, который пишет на любом языке и может погружаться как в бизнес и писать на каком-то бизнес-ориентированном языке, я не знаю, там, хоть на той же Java. Но если вы хотите все-таки быть системным каким-то программистом и погружаться, там, не знаю, строить системы, которые не так легко завайб-кодить, как ваш SaaS, не так легко до сих пор завайб-кодить баз данных, которые работают, просто завайб-кодить баз данных легко, которые работают, не легко. Если вы хотите туда идти, в сферу системного программирования, где все еще нужны умные люди, вам нужно системное программирование. И круто, что раз сейчас на таком большом хайпе. Это здорово.

[1:47:43] Дмитрий: Это хорошо. Блин, хреново, что я, конечно, как хост подкаста продвигал такое время, время, время подучите второй язык. Ну, такова реальность. Честно, в подкасте делится свое мнение срезом индустрии, которую я сейчас вижу.

[1:48:01] Александр: Да, Дима, спасибо тебе за честность, потому что это то, что редко вообще встречается сейчас, потому что сложно отказаться от того, во что ты много инвестировал, и где ты настоящий эксперт, и у тебя вообще подкаст называется языком программирования. Что делать, не знаю вообще. Да, это пример того, как надо мыслить в современном мире, как правильно себя позиционировать и трезво понимать вообще по сторонам, смотреть, что происходит. Прекратить держаться за скрепы, которые уже не скрипят, и начать делать что-то, что действительно имеет смысл в сегодняшнем мире. И убрать эти иллюзии, убрать эти очки, пытаться убедить себя в чем-то, в чем уже как бы убеждать нет смысла. Последний кол, как говорится. Потом уже времени не будет.

[1:48:44] Дмитрий: Я вижу это позитивом.

[1:48:48] Александр: Концовка получилась как-то более-менее негативная. Мне кажется, все это к лучшему. Дим, тебе спасибо большое, что пришел. Комментарии обязательно пишем, любые. Но напомню, что Дима банит за токсичные комментарии. Позар фильтруйте.

[1:49:05] Дмитрий: Это твой, это твой, Саш, канал. Но желательно, да, пишите комментарии, напишите просто развернуто. Просто, когда кто-то пишет такой бред и пошел дальше. Блин, ну, может быть, там было что-то полезное. И хочется как-то не раскалывать нашу индустрию, которая и так расколота, а как-то оставаться островком разумности, и обсуждать вопросы открыто. И приводите аргументы, пишите большие комментарии. Очень люблю большие комментарии читать. И некоторые скриншоты поищу в канал, потому что, ну, прям целые блокпосты иногда пишут.

[1:49:40] Александр: Выглядит очень круто. Да, это респект за большие комментарии. Больше начинаешь понимать и чувствовать человека, что он реально имеет в виду, вместо того, чтобы какой-то вот этот полевок эмоциональный. Авторам же тоже, как бы, комментарии читать интересно. Мы это делаем. Но когда ты вот эту вот фигню контекста вырованную читаешь, ты такой думаешь, чё, к чему, чё писал, кому имел в виду. В общем, да, я думаю, что на этом мы завершаем. Всем большое спасибо. Дим, тебе тоже спасибо. И до новых встреч.

[1:50:08] Дмитрий: Пока. Пока.