<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Developer Experience | The .NET Blog</title><link>https://thedotnetblog.com/ru/tags/developer-experience/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ru</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Sun, 21 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ru/tags/developer-experience/index.xml" rel="self" type="application/rss+xml"/><item><title>Ревью pull request прямо внутри Visual Studio — это именно тот тип снижения трения, который мне нравится</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/visual-studio-pull-request-review-inside-the-ide/</link><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/visual-studio-pull-request-review-inside-the-ide/</guid><description>Visual Studio теперь может ревьюить pull request от начала до конца, не покидая IDE. Это может звучать как небольшой шаг, но для команд, которые живут в Visual Studio целый день, он убирает много лишнего переключения контекста.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Эта статья переведена автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/visual-studio-pull-request-review-inside-the-ide/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Браузер слишком долго забирал на себя слишком большую часть workflow code review.&lt;/p&gt;
&lt;p&gt;Поэтому я очень рад видеть, что Visual Studio двигается дальше в сторону &lt;strong&gt;end-to-end review pull request прямо внутри IDE&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Это одна из тех функций, которые, возможно, не попадут в большие заголовки, но при этом могут заметно улучшить ежедневную разработку.&lt;/p&gt;
&lt;h2 id="главная-ценность-проста-меньше-переключения-контекста"&gt;Главная ценность проста: меньше переключения контекста&lt;/h2&gt;
&lt;p&gt;Когда ваш review loop живёт частично в IDE, а частично в браузере, трение накапливается:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;открыть PR в другом месте&lt;/li&gt;
&lt;li&gt;посмотреть изменения в одном инструменте&lt;/li&gt;
&lt;li&gt;вернуться к solution для более глубокого изучения&lt;/li&gt;
&lt;li&gt;снова переключиться, чтобы оставить комментарий или одобрить&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это не катастрофа. Это просто неэффективно.&lt;/p&gt;
&lt;p&gt;Если Visual Studio позволит открывать, изучать, комментировать, одобрять и merge делать из той же рабочей среды, это будет реальный выигрыш в продуктивности.&lt;/p&gt;
&lt;h2 id="опция-review-без-checkout-особенно-хороша"&gt;Опция &amp;ldquo;review без checkout&amp;rdquo; особенно хороша&lt;/h2&gt;
&lt;p&gt;Одна вещь, которая мне особенно нравится, — возможность делать review без checkout ветки PR.&lt;/p&gt;
&lt;p&gt;Это может звучать мелко, но отлично подходит для:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;быстрых проходов review&lt;/li&gt;
&lt;li&gt;feedback-запросов, возникающих во время прерываний&lt;/li&gt;
&lt;li&gt;сохранения текущей ветки и локального состояния без изменений&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это именно тот тип гибкости, который нужен хорошим code review tools.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Это не революционная функция.&lt;/p&gt;
&lt;p&gt;Это лучше: это практичная функция.&lt;/p&gt;
&lt;p&gt;Для команд, которые проводят большую часть дня в Visual Studio, более тесная поддержка PR review означает меньше разрывов workflow и более плавный путь от инспекции к действию.&lt;/p&gt;
&lt;p&gt;На мой взгляд, это достойное улучшение.&lt;/p&gt;
&lt;p&gt;Оригинальная публикация: &lt;a href="https://devblogs.microsoft.com/visualstudio/review-pull-requests-without-leaving-visual-studio/"&gt;Ревью pull request без выхода из Visual Studio&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Оболочки агентов важны, потому что промптов недостаточно</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/agent-harness-claw-why-the-runtime-shell-matters/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/agent-harness-claw-why-the-runtime-shell-matters/</guid><description>Новый обзор claw и harness от Microsoft Agent Framework — полезное напоминание о том, что реальным агентам нужна runtime-оболочка вокруг модели: инструменты, планирование, память, сессии и рабочий цикл исполнения.</description><content:encoded>&lt;p&gt;Одна из самых простых ошибок в разработке агентов — считать, что промпт и есть продукт.&lt;/p&gt;
&lt;p&gt;Это не так.&lt;/p&gt;
&lt;p&gt;Новый обзор &lt;strong&gt;agent harness и claw&lt;/strong&gt; от команды Microsoft Agent Framework ценен тем, что удерживает фокус именно на той части, которая действительно определяет, ощущается ли агент пригодным к использованию: на runtime-оболочке вокруг модели.&lt;/p&gt;
&lt;p&gt;Сюда входят:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;инструменты&lt;/li&gt;
&lt;li&gt;планирование&lt;/li&gt;
&lt;li&gt;состояние сессии&lt;/li&gt;
&lt;li&gt;память&lt;/li&gt;
&lt;li&gt;режимы исполнения&lt;/li&gt;
&lt;li&gt;удобная консоль или интерфейс для итераций&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Именно здесь агенты перестают быть эффектными демо и начинают ощущаться как программное обеспечение.&lt;/p&gt;
&lt;h2 id="паттерн-harness--практичный"&gt;Паттерн harness — практичный&lt;/h2&gt;
&lt;p&gt;Что мне здесь нравится — насколько доступна эта идея.&lt;/p&gt;
&lt;p&gt;Вы начинаете с chat-клиента.&lt;/p&gt;
&lt;p&gt;Затем оборачиваете его в harness с инструкциями и инструментами.&lt;/p&gt;
&lt;p&gt;Затем запускаете через оболочку, которая поддерживает планирование, списки задач, сессии и потоковое взаимодействие.&lt;/p&gt;
&lt;p&gt;Это здоровый паттерн, потому что он чётко разделяет ответственности:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;модель отвечает за рассуждение&lt;/li&gt;
&lt;li&gt;harness отвечает за поведение времени выполнения&lt;/li&gt;
&lt;li&gt;приложение решает, какие инструменты и сценарии важны&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="это-очень-хорошо-согласуется-с-тем-как-net-разработчики-строят-системы"&gt;Это очень хорошо согласуется с тем, как .NET-разработчики строят системы&lt;/h2&gt;
&lt;p&gt;Идея harness также хорошо ложится на мышление .NET.&lt;/p&gt;
&lt;p&gt;Обычно у нас лучше получается, когда поведение времени выполнения явно и композируемо. Middleware, пайплайны, опции, провайдеры и адаптеры — всё это ощущается естественным в этом мире.&lt;/p&gt;
&lt;p&gt;Именно поэтому я думаю, что у Agent Framework хорошие шансы прижиться у .NET-разработчиков. Он не загоняет всех в одну магическую абстракцию. Он даёт вам структурированные компоненты времени выполнения, которые вы можете собрать вместе сами.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Самая полезная часть этого поста — напоминание о том, что агентам нужно нечто большее, чем хорошая модель и удачная строка инструкции.&lt;/p&gt;
&lt;p&gt;Им нужна runtime-оболочка, которая даёт структуру, память, доступ к инструментам, планирование и рабочий цикл разработки.&lt;/p&gt;
&lt;p&gt;Именно это и даёт harness.&lt;/p&gt;
&lt;p&gt;И, честно говоря, именно поэтому этот паттерн заслуживает внимания.&lt;/p&gt;
&lt;p&gt;Оригинальный пост: &lt;a href="https://devblogs.microsoft.com/agent-framework/meet-your-agent-harness-and-claw/"&gt;Meet your agent harness and claw&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Aspire в VS Code 13.4 правильно подтягивает цикл разработки</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-vscode-13-4-developer-loop/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-vscode-13-4-developer-loop/</guid><description>Aspire в VS Code 13.4 — это не просто обновление функций. Это реальное улучшение ежедневного цикла разработки: лучшая отладка, видимость ресурсов, интеграция панелей и поддержка TypeScript AppHost.</description><content:encoded>&lt;p&gt;Лучшие обновления инструментов — те, которые вы ощущаете спустя несколько дней, а не те, что просто хорошо выглядят в release notes.&lt;/p&gt;
&lt;p&gt;Именно так я воспринимаю &lt;strong&gt;Aspire в VS Code 13.4&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Это обновление целиком о подтягивании внутреннего цикла: более быстром создании проектов, более естественной отладке ресурсов на разных языках, отображении здоровья и команд прямо в редакторе, а также о том, чтобы держать дашборд рядом, не делая его единственным местом, где можно работать.&lt;/p&gt;
&lt;p&gt;Это очень хорошее направление.&lt;/p&gt;
&lt;h2 id="главная-победа--меньше-переключений-контекста"&gt;Главная победа — меньше переключений контекста&lt;/h2&gt;
&lt;p&gt;Если вы серьёзно используете Aspire, вы обычно перемещаетесь между несколькими поверхностями:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;код AppHost&lt;/li&gt;
&lt;li&gt;терминал&lt;/li&gt;
&lt;li&gt;дашборд&lt;/li&gt;
&lt;li&gt;логи&lt;/li&gt;
&lt;li&gt;сессии отладки&lt;/li&gt;
&lt;li&gt;эндпоинты сервисов&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;13.4 хорошо справляется со снижением трения между этими поверхностями.&lt;/p&gt;
&lt;p&gt;Новый опыт в VS Code делает больше состояния приложения видимым именно там, где вы уже работаете:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;здоровье ресурсов в редакторе&lt;/li&gt;
&lt;li&gt;команды рядом с декларациями ресурсов&lt;/li&gt;
&lt;li&gt;более лёгкий доступ к дашборду&lt;/li&gt;
&lt;li&gt;доступ к логам из контекста AppHost&lt;/li&gt;
&lt;li&gt;панель, полезная ещё до начала полноценной отладки&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это звучит незначительно, пока вы не начинаете делать так каждый день.&lt;/p&gt;
&lt;h2 id="отладка-смешанных-стеков-важнее-чем-кажется"&gt;Отладка смешанных стеков важнее, чем кажется&lt;/h2&gt;
&lt;p&gt;Одна из самых сильных частей этого обновления — более естественная история отладки &lt;strong&gt;C#, TypeScript, Python, Go, браузерных приложений и Azure Functions&lt;/strong&gt; в едином процессе на базе Aspire.&lt;/p&gt;
&lt;p&gt;Это гораздо точнее отражает реальную форму современных приложений, чем притворяться, что всё живёт в одном рантайме.&lt;/p&gt;
&lt;p&gt;Особенно для .NET-разработчиков это ценно, потому что многие из нас сейчас строят системы, смешивающие API-проекты, фронтенды, воркеры и сервисы, связанные с ИИ, на разных языках.&lt;/p&gt;
&lt;p&gt;Тот факт, что Aspire делает это более единым внутри VS Code, — очень практичное улучшение.&lt;/p&gt;
&lt;h2 id="достижение-ga-у-поддержки-typescript-apphost-также-значимо"&gt;Достижение GA у поддержки TypeScript AppHost также значимо&lt;/h2&gt;
&lt;p&gt;Я бы не стал игнорировать сторону TypeScript AppHost в этом релизе.&lt;/p&gt;
&lt;p&gt;То, что Aspire становится более естественным и для C#, и для TypeScript, расширяет круг тех, кто может работать в одной и той же модели системы без странных процессов второго сорта. Это важно для команд, где платформенный код, фронтенд-код и оркестрация сервисов живут рядом друг с другом.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Aspire 13.4 в VS Code — не про одну убийственную функцию. Это про сглаживание шероховатостей в ежедневном цикле:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;быстрее стартовать&lt;/li&gt;
&lt;li&gt;видеть больше состояния там, где вы пишете код&lt;/li&gt;
&lt;li&gt;отлаживать более естественно&lt;/li&gt;
&lt;li&gt;переходить к логам и дашборду только тогда, когда нужно&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Именно так и должны развиваться хорошие инструменты.&lt;/p&gt;
&lt;p&gt;Если вы уже используете Aspire, это обновление выглядит достойным установки. Если вы всё ещё сомневаетесь, серьёзное ли VS Code место для разработки на Aspire, ответ становится всё очевиднее.&lt;/p&gt;
&lt;p&gt;Оригинальный пост: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-vscode-extension-13-4/"&gt;Aspire in VS Code: the 13.4 developer loop&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Новый Plan agent в Visual Studio решает очень реальную проблему AI-workflow</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/visual-studio-plan-agent-build-before-code/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/visual-studio-plan-agent-build-before-code/</guid><description>Новый Plan agent в Visual Studio важен потому, что он создаёт структурированную фазу планирования до реализации, а именно это часто нужно большим функциям и рефакторингам.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Эта статья переведена автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/visual-studio-plan-agent-build-before-code/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Один из самых раздражающих AI coding workflow — это когда реализация начинается слишком быстро.&lt;/p&gt;
&lt;p&gt;Код может даже быть технически нормальным, но он решает не ту версию проблемы, которую вы имели в виду.&lt;/p&gt;
&lt;p&gt;Вы хотели рефакторинг. Начался rewrite.
Вы хотели scoped improvement. Он затронул половину проекта.
Вы хотели обсудить варианты. Он сразу перешёл к изменениям файлов.&lt;/p&gt;
&lt;p&gt;Вот почему новый &lt;strong&gt;Plan agent&lt;/strong&gt; в Visual Studio — настолько полезное дополнение.&lt;/p&gt;
&lt;h2 id="это-решает-реальную-проблему-workflow-а-не-просто-косметическую"&gt;Это решает реальную проблему workflow, а не просто косметическую&lt;/h2&gt;
&lt;p&gt;В оригинальном посте описана очень знакомая ситуация: &amp;ldquo;&lt;strong&gt;Код не неправильный&amp;hellip; он просто не такой, как вы хотели.&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Эта фраза отличная.&lt;/p&gt;
&lt;p&gt;Потому что слабое место многих AI-assisted development не в том, может ли модель генерировать код. Вопрос в том, создаёт ли workflow достаточно пространства, чтобы договориться о нужной форме работы до начала реализации.&lt;/p&gt;
&lt;p&gt;Это особенно важно для:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;больших функций&lt;/li&gt;
&lt;li&gt;незнакомых codebase&lt;/li&gt;
&lt;li&gt;нетривиальных рефакторингов&lt;/li&gt;
&lt;li&gt;архитектурно чувствительных изменений&lt;/li&gt;
&lt;li&gt;работы, которой нужен team review до начала правок&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В таких ситуациях сразу прыгать в implementation часто означает сделать неверный ход.&lt;/p&gt;
&lt;h2 id="планирование-не-является-overhead-когда-задача-настоящая"&gt;Планирование не является overhead, когда задача настоящая&lt;/h2&gt;
&lt;p&gt;Мне кажется, команды иногда недооценивают, сколько времени они теряют, начиная реализацию слишком рано.&lt;/p&gt;
&lt;p&gt;Если agent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;трогает не те файлы&lt;/li&gt;
&lt;li&gt;выбирает не тот подход&lt;/li&gt;
&lt;li&gt;пропускает важное ограничение&lt;/li&gt;
&lt;li&gt;игнорирует нужный edge case&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;то &amp;ldquo;быстрый&amp;rdquo; старт в итоге превращается в более медленный workflow в целом.&lt;/p&gt;
&lt;p&gt;Именно поэтому мне нравится эта функция.&lt;/p&gt;
&lt;p&gt;Она создаёт пространство для:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;уточняющие вопросы&lt;/li&gt;
&lt;li&gt;составление черновика плана&lt;/li&gt;
&lt;li&gt;прямого редактирования плана&lt;/li&gt;
&lt;li&gt;обмена планом до того, как начнутся изменения кода&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это не бюрократия. Чаще всего это просто хорошая инженерия.&lt;/p&gt;
&lt;h2 id="markdown-файл-плана--это-разумный-выбор"&gt;Markdown-файл плана — это разумный выбор&lt;/h2&gt;
&lt;p&gt;Особенно мне нравится то, что каждый plan сохраняется в &lt;code&gt;.copilot/plans/plan-{title}.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Это делает этап планирования осязаемым.&lt;/p&gt;
&lt;p&gt;План не заперт внутри chat transcript. Он становится чем-то, что вы можете:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;просматривать&lt;/li&gt;
&lt;li&gt;редактировать&lt;/li&gt;
&lt;li&gt;мысленно отслеживать версии&lt;/li&gt;
&lt;li&gt;обсуждать с командой&lt;/li&gt;
&lt;li&gt;более осознанно передавать в реализацию&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Благодаря этому функция выглядит гораздо серьёзнее, чем просто временное вступление перед генерацией кода.&lt;/p&gt;
&lt;h2 id="здесь-ai-workflows-начинают-уважать-процесс-команды"&gt;Здесь AI workflows начинают уважать процесс команды&lt;/h2&gt;
&lt;p&gt;Мне кажется, это один из сильных признаков того, что эти tools взрослеют.&lt;/p&gt;
&lt;p&gt;Лучшие AI developer workflow — это не те, что убирают все промежуточные шаги. Это те, что улучшают правильные промежуточные шаги.&lt;/p&gt;
&lt;p&gt;И планирование — один из таких шагов.&lt;/p&gt;
&lt;p&gt;Если plan сильный, implementation становится проще.
Если plan слабый, implementation становится шумной.&lt;/p&gt;
&lt;p&gt;Эта функция признаёт это напрямую.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Это не просто AI nicety.&lt;/p&gt;
&lt;p&gt;Это улучшение workflow.&lt;/p&gt;
&lt;p&gt;И для настоящих функций и настоящих рефакторингов это именно тот тип улучшения, который может сэкономить много лишнего churn, review noise и rework в духе &amp;ldquo;я имел в виду не это&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Думаю, всё больше agent experiences в итоге будут нуждаться в чём-то подобном.&lt;/p&gt;
&lt;p&gt;Visual Studio пришёл к этому раньше и сделал это полезным образом.&lt;/p&gt;
&lt;p&gt;Оригинальная публикация: &lt;a href="https://devblogs.microsoft.com/visualstudio/plan-before-you-build-introducing-the-plan-agent-in-visual-studio/"&gt;Планируйте перед сборкой: представляем Plan agent в Visual Studio&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Ваш dev loop полон неявных знаний, и у Aspire есть правильный ответ</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/tribal-knowledge-dev-loop-aspire/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/tribal-knowledge-dev-loop-aspire/</guid><description>Новый пост про Aspire делает очень сильный вывод: многим командам не не хватает инструментов, им не хватает согласованной модели приложения, которая превращает скрытые операционные знания в нечто, чем действительно могут пользоваться люди, скрипты и агенты.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Эта статья переведена автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/tribal-knowledge-dev-loop-aspire/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Это, возможно, один из самых важных постов про Aspire для понимания того, &lt;em&gt;почему&lt;/em&gt; продукт важен.&lt;/p&gt;
&lt;p&gt;Не потому, что он анонсирует огромную новую функцию.&lt;/p&gt;
&lt;p&gt;А потому, что он называет проблему, которую почувствовала почти каждая инженерная команда, но не каждая сумела хорошо описать:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;dev loop полон неявных знаний.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Эта фраза цепляет, потому что она правдива.&lt;/p&gt;
&lt;h2 id="проблема-не-в-нехватке-инструментов"&gt;Проблема не в нехватке инструментов&lt;/h2&gt;
&lt;p&gt;Основной тезис оригинальной статьи отличный: командам часто не не хватает инфраструктуры, скриптов, дашбордов или команд.&lt;/p&gt;
&lt;p&gt;Им не хватает согласованной модели, которая превращает все скрытые операционные знания вокруг приложения в нечто видимое и воспроизводимое.&lt;/p&gt;
&lt;p&gt;Настоящая архитектура многих приложений живёт в:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;shell history&lt;/li&gt;
&lt;li&gt;разбросанных скриптах&lt;/li&gt;
&lt;li&gt;фрагментах README&lt;/li&gt;
&lt;li&gt;Slack-threads&lt;/li&gt;
&lt;li&gt;одном senior engineer, который знает порядок операций&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это неустойчивый dev loop для людей.&lt;/p&gt;
&lt;p&gt;И уж точно не для агентов.&lt;/p&gt;
&lt;h2 id="цитата-которая-как-мне-кажется-подытоживает-весь-пост"&gt;Цитата, которая, как мне кажется, подытоживает весь пост&lt;/h2&gt;
&lt;p&gt;В оригинальной статье есть одна фраза, которая очень хорошо передаёт главную мысль:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;&lt;strong&gt;Приложения уже существуют как системы. Aspire делает эти системы явными, потому что явные системы масштабируются лучше, чем неявные знания.&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Это и есть вся аргументация в одной строке.&lt;/p&gt;
&lt;p&gt;И, честно говоря, это одно из самых сильных однофразовых объяснений Aspire, которые я видел.&lt;/p&gt;
&lt;h2 id="почему-это-важнее-сейчас-чем-год-назад"&gt;Почему это важнее сейчас, чем год назад&lt;/h2&gt;
&lt;p&gt;Я думаю, эта статья особенно хорошо попадает в текущий момент, потому что AI-assisted development меняет цену неоднозначности.&lt;/p&gt;
&lt;p&gt;Люди удивительно хорошо компенсируют неполные системы.&lt;/p&gt;
&lt;p&gt;Мы помним:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;какой script запускать первым&lt;/li&gt;
&lt;li&gt;какая переменная окружения тайно нужна&lt;/li&gt;
&lt;li&gt;какой terminal обычно показывает полезные логи&lt;/li&gt;
&lt;li&gt;какой service нужно перезапустить дважды по причинам, которые никто не документировал&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Агенты намного хуже справляются с таким скрытым operational folklore.&lt;/p&gt;
&lt;p&gt;Поэтому, если мы хотим, чтобы агенты действительно были полезны в реальных репозиториях, нам нужно делать систему более явной, а не менее.&lt;/p&gt;
&lt;p&gt;Вот почему такой framing Aspire важен.&lt;/p&gt;
&lt;h2 id="настоящая-ценность-aspire--не-только-orchestration"&gt;Настоящая ценность Aspire — не только orchestration&lt;/h2&gt;
&lt;p&gt;Распространённая ошибка с Aspire — воспринимать его только как distributed app launcher или локальный orchestration-helper.&lt;/p&gt;
&lt;p&gt;Это слишком узко.&lt;/p&gt;
&lt;p&gt;Более сильная value proposition в том, что Aspire даёт приложению:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;model&lt;/li&gt;
&lt;li&gt;shape&lt;/li&gt;
&lt;li&gt;именованные resources&lt;/li&gt;
&lt;li&gt;explicit dependencies&lt;/li&gt;
&lt;li&gt;health и operations surface&lt;/li&gt;
&lt;li&gt;commands, которые могут понять и люди, и automation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это меняет dev loop сильнее, чем иногда кажется.&lt;/p&gt;
&lt;p&gt;Потому что, когда app перестаёт быть кучей implicit conventions и становится system с реальной моделью, несколько вещей сразу становятся проще:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;onboarding&lt;/li&gt;
&lt;li&gt;debugging&lt;/li&gt;
&lt;li&gt;repeatable setup&lt;/li&gt;
&lt;li&gt;consistency CI&lt;/li&gt;
&lt;li&gt;AI-assisted workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это очень большая отдача от одного design choice.&lt;/p&gt;
&lt;h2 id="особенно-мне-нравится-угол-про-commands-как-first-class-operations"&gt;Особенно мне нравится угол про &amp;ldquo;commands как first-class operations&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;Ещё один момент из оригинальной статьи, который, на мой взгляд, заслуживает больше внимания, — переход от README instructions к commands, привязанным к resources.&lt;/p&gt;
&lt;p&gt;Это обманчиво большое изменение.&lt;/p&gt;
&lt;p&gt;Вместо:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;запусти этот script, потом тот, а если первый сломается, возможно, ещё и этот другой&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;можно моделировать operations прямо в контексте приложения.&lt;/p&gt;
&lt;p&gt;Это означает, что люди могут находить их проще.&lt;/p&gt;
&lt;p&gt;И это означает, что агентам не нужно гадать об intent по prose.&lt;/p&gt;
&lt;p&gt;Это то, что превращает приложение из &amp;ldquo;operable, если ты уже его знаешь&amp;rdquo; в &amp;ldquo;operable by design&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="что-бы-я-вынес-из-этого-как-team-lead"&gt;Что бы я вынес из этого как team lead&lt;/h2&gt;
&lt;p&gt;Если бы я посмотрел на dev loop своей команды через эту линзу, я бы задал несколько прямых вопросов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;насколько наша настройка зависит от памяти?&lt;/li&gt;
&lt;li&gt;сколько критических dev actions существует только в docs или chat threads?&lt;/li&gt;
&lt;li&gt;как часто новые contributors застревают из-за невидимого system behavior?&lt;/li&gt;
&lt;li&gt;сможет ли automation tool или coding agent понять нашу app topology только по repo?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Если ответ на последний вопрос — &amp;ldquo;даже близко нет&amp;rdquo;, то этот пост должен задеть полезную струну.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Это очень сильный framing реальной ценности Aspire.&lt;/p&gt;
&lt;p&gt;Это не просто orchestration.&lt;/p&gt;
&lt;p&gt;Речь о том, чтобы сделать application model достаточно явной, чтобы system было проще эксплуатировать, понимать и автоматизировать.&lt;/p&gt;
&lt;p&gt;Это важно для людей.
Это важно для команд.
И это ещё важнее сейчас, когда большая часть современного development движется к agent-assisted workflows.&lt;/p&gt;
&lt;p&gt;Это именно тот тип статьи, который помогает объяснить, почему Aspire кажется всё более значимым за пределами просто .NET marketing label.&lt;/p&gt;
&lt;p&gt;Оригинальная публикация: &lt;a href="https://devblogs.microsoft.com/aspire/dev-loop-tribal-knowledge/"&gt;Ваш dev loop полон неявных знаний&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Герметичные end-to-end тесты Aspire — это паттерн, который стоило бы перенять большему числу команд</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/hermetic-aspire-tests-why-this-pattern-matters/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/hermetic-aspire-tests-why-this-pattern-matters/</guid><description>Статья Azure Chaos Studio о тестах показывает очень практичный паттерн: герметичные, эфемерные end-to-end окружения на базе Aspire, которые повышают надежность и для людей, и для разработки с поддержкой ИИ.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинальная версия доступна &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/hermetic-aspire-tests-why-this-pattern-matters/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Нестабильные end-to-end тесты обходятся дорого, и не всегда это видно на дашборде.&lt;/p&gt;
&lt;p&gt;Они не просто падают. Они постепенно учат команду перестать доверять циклу обратной связи.&lt;/p&gt;
&lt;p&gt;Именно поэтому статья про &lt;strong&gt;Azure Chaos Studio + Aspire&lt;/strong&gt; сразу привлекла моё внимание. Это не яркий продуктовый анонс. Это приземлённая инженерная история о том, как сделать так, чтобы end-to-end тесты перестали ощущаться как переговоры с удачей.&lt;/p&gt;
&lt;p&gt;И, честно говоря, я думаю, что большему числу команд стоит перенять этот паттерн.&lt;/p&gt;
&lt;h2 id="основная-идея-проста-но-выигрыш-огромен"&gt;Основная идея проста, но выигрыш огромен&lt;/h2&gt;
&lt;p&gt;Ключевой ход — дать каждому тесту собственное &lt;strong&gt;герметичное, эфемерное окружение&lt;/strong&gt; с реальными сервисами, реальными зависимостями и явным запуском, основанным на health.&lt;/p&gt;
&lt;p&gt;В одной фразе это звучит очевидно. В реальных системах всё гораздо сложнее, особенно когда в дело вступают облачные зависимости, общие окружения и распределённые сервисы.&lt;/p&gt;
&lt;p&gt;В оригинальной статье проблема описана очень ясно: общие тестовые окружения приносят &amp;ldquo;&lt;strong&gt;cross-talk, flaky behavior и сообщения в групповом чате в стиле &amp;lsquo;кто сломал staging?&amp;rsquo;&lt;/strong&gt;&amp;rdquo; как часть операционных затрат.&lt;/p&gt;
&lt;p&gt;Эта фраза смешная, потому что она болезненно правдива.&lt;/p&gt;
&lt;p&gt;Слишком многие команды принимают такой обмен как норму. Я не думаю, что так должно быть.&lt;/p&gt;
&lt;h2 id="почему-этот-паттерн-важен-не-только-для-тестов"&gt;Почему этот паттерн важен не только для тестов&lt;/h2&gt;
&lt;p&gt;Больше всего мне нравится здесь то, что статья не просто говорит: &amp;ldquo;мы сделали наши тесты надёжнее&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Она говорит нечто большее:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;если вашу распределённую систему трудно воспроизвести, трудно изолировать и трудно проверить, весь ваш инженерный цикл замедляется.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Это влияет не только на CI.&lt;/p&gt;
&lt;p&gt;Это влияет на то:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;насколько уверенно разработчики делают рефакторинг&lt;/li&gt;
&lt;li&gt;как быстро диагностируются регрессии&lt;/li&gt;
&lt;li&gt;насколько безопасно можно пробовать более крупные архитектурные изменения&lt;/li&gt;
&lt;li&gt;насколько команда доверяет автоматической валидации&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;И в 2026 году это также влияет на то, насколько полезной может стать разработка с поддержкой ИИ.&lt;/p&gt;
&lt;h2 id="самая-важная-цитата-в-статье"&gt;Самая важная цитата в статье&lt;/h2&gt;
&lt;p&gt;В статье есть одна фраза, которую, на мой взгляд, стоит повторить:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;&lt;strong&gt;Agents не обязаны быть идеальными. Они должны быть проверяемыми.&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Это отличная формулировка.&lt;/p&gt;
&lt;p&gt;Люди много времени тратят на вопрос, достаточно ли надёжны AI coding agents, чтобы помогать в нетривиальной работе. Я думаю, лучший вопрос звучит так: &lt;strong&gt;достаточно ли тестируемы наши системы, чтобы правильно оценивать эту работу&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Если agent предлагает осмысленный refactor, а единственный сигнал безопасности — это куча хрупких, полурандомных end-to-end проверок, запускаемых в общем окружении, то проблема не только в agent.&lt;/p&gt;
&lt;p&gt;Проблема в модели валидации.&lt;/p&gt;
&lt;p&gt;Этот Aspire-паттерн радикально улучшает ситуацию.&lt;/p&gt;
&lt;h2 id="что-делает-эту-реализацию-особенно-хорошей"&gt;Что делает эту реализацию особенно хорошей&lt;/h2&gt;
&lt;p&gt;Несколько деталей исходной истории делают её гораздо больше, чем просто очередной пост в духе &amp;ldquo;мы улучшили тесты&amp;rdquo;.&lt;/p&gt;
&lt;h3 id="1-настоящий-граф-сервисов-а-не-театр-фальшивых-mockов"&gt;1. Настоящий граф сервисов, а не театр фальшивых mock&amp;rsquo;ов&lt;/h3&gt;
&lt;p&gt;Тесты не строятся на куче разрозненных mock&amp;rsquo;ов, которые делают вид, что это end-to-end валидация.&lt;/p&gt;
&lt;p&gt;Они запускают &lt;strong&gt;реальные бинарники&lt;/strong&gt;, подключают emulators там, где это возможно, и используют ту же application model, что и в локальной разработке.&lt;/p&gt;
&lt;p&gt;Это важно.&lt;/p&gt;
&lt;p&gt;Потому что как только end-to-end тесты превращаются в театр mock против mock, они перестают давать что-либо надёжное о реальной композиции.&lt;/p&gt;
&lt;h3 id="2-запуск-на-основе-health-вместо-магических-sleep"&gt;2. Запуск на основе health вместо магических sleep&lt;/h3&gt;
&lt;p&gt;Этот момент важнее, чем кажется.&lt;/p&gt;
&lt;p&gt;Статья прямо говорит, что тесты ждут реальный health с помощью &lt;code&gt;WaitForResourceHealthyAsync&lt;/code&gt;, а не полагаются на произвольные догадки по времени.&lt;/p&gt;
&lt;p&gt;Разница огромная.&lt;/p&gt;
&lt;p&gt;Test suite, который говорит: &amp;ldquo;спи 30 секунд и надейся на лучшее&amp;rdquo;, по сути документирует неопределённость. Suite, который ждёт реальную readiness, документирует намерение системы.&lt;/p&gt;
&lt;h3 id="3-одна-и-та-же-модель-управляет-локальной-разработкой-и-тестами"&gt;3. Одна и та же модель управляет локальной разработкой и тестами&lt;/h3&gt;
&lt;p&gt;Мне это особенно нравится, потому что это хорошо совпадает с самыми сильными историями про Aspire в целом.&lt;/p&gt;
&lt;p&gt;Одна и та же application model управляет:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;локальной разработкой&lt;/li&gt;
&lt;li&gt;wiring сервисов&lt;/li&gt;
&lt;li&gt;эмулированными зависимостями&lt;/li&gt;
&lt;li&gt;health checks&lt;/li&gt;
&lt;li&gt;hermetic orchestration тестов&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Это уменьшает drift, а drift — один из самых тихих убийц доверия.&lt;/p&gt;
&lt;h2 id="такой-тип-инвестиций-в-devex-часто-недооценивают"&gt;Такой тип инвестиций в devex часто недооценивают&lt;/h2&gt;
&lt;p&gt;Одна из причин, почему я хотел сделать этот пост длиннее простой быстрой реакции, в том, что подобные инженерные улучшения часто недооценивают.&lt;/p&gt;
&lt;p&gt;Они не бросаются в глаза.&lt;/p&gt;
&lt;p&gt;Их не продемонстрируешь как новую AI-функцию.&lt;/p&gt;
&lt;p&gt;И не всегда они дают один слайд, который сразу зажигает руководство.&lt;/p&gt;
&lt;p&gt;Но со временем они создают нечто куда более ценное: &lt;strong&gt;команду, которая может двигаться быстрее, не обманывая себя насчёт качества&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Это очень важно.&lt;/p&gt;
&lt;p&gt;В статье сказано, что теперь они запускают около &lt;strong&gt;90 hermetic тестов&lt;/strong&gt;, включая сценарии вроде zone outage, DNS failure и geo-replication failure. Это не просто лучшая test hygiene. Это гораздо более сильная модель доверия для распределённой платформы.&lt;/p&gt;
&lt;h2 id="что-бы-я-вынес-из-этого-если-бы-управлял-распределённой-net-системой"&gt;Что бы я вынес из этого, если бы управлял распределённой .NET-системой&lt;/h2&gt;
&lt;p&gt;Если вы сегодня работаете с распределёнными сервисами, Aspire и CI/CD-пайплайнами, я бы сразу вынес следующее:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;перестаньте нормализовать flaky behavior в общих окружениях&lt;/li&gt;
&lt;li&gt;переходите на health-based startup gates, где это возможно&lt;/li&gt;
&lt;li&gt;относитесь к AppHost как к настоящему production-grade orchestration code&lt;/li&gt;
&lt;li&gt;стройте end-to-end checks, которые валидируют композицию сервисов, а не только корректность отдельных сервисов&lt;/li&gt;
&lt;li&gt;если вы внедряете разработку с поддержкой ИИ, сначала инвестируйте в &lt;strong&gt;checkability&lt;/strong&gt;, а уже потом гонитесь за более широкой автоматизацией&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Именно последний пункт, по моему мнению, должны услышать больше команд.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Это один из самых сильных материалов про Aspire в этом наборе, потому что он решает очень практичную проблему.&lt;/p&gt;
&lt;p&gt;Он не пытается впечатлить абстракцией. Он показывает, как сделать end-to-end тесты более детерминированными, более полезными и более надёжными в реальной распределённой системе.&lt;/p&gt;
&lt;p&gt;И как только видна связь с development, поддержанным agent&amp;rsquo;ами, паттерн становится ещё убедительнее.&lt;/p&gt;
&lt;p&gt;Если ваша история end-to-end тестов всё ещё зависит от общих окружений, скрытых знаний о настройке и немного молитвы, это действительно стоит изучить.&lt;/p&gt;
&lt;p&gt;Оригинальный пост: &lt;a href="https://devblogs.microsoft.com/aspire/hermetic-aspire-tests-chaos-studio/"&gt;How Azure Chaos Studio ships with hermetic Aspire end-to-end tests&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>