<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Организация разработки</title>
    <description/>
    <link>https://tproger.ru/tag/dev-organising</link>
    <atom:link href="https://tproger.ru/tag/dev-organising/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 03 Oct 2026 15:35:23 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Организация разработки</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Стратегии деплоя, которые не роняют прод</title>
      <link>https://tproger.ru/articles/strategii-deploya-kotorye-ne-ronyayut-prod</link>
      <comments>https://tproger.ru/articles/strategii-deploya-kotorye-ne-ronyayut-prod?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/strategii-deploya-kotorye-ne-ronyayut-prod</guid>
      <description><![CDATA[<p>Безопасный деплой в прод: единый артефакт, канареечные выкладки, feature flags, контроль метрик, совместимые миграции данных и отрепетированный откат.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/strategii-deploya-kotorye-ne-ronyayut-prod">Стратегии деплоя, которые не роняют прод</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[CI/CD]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 15 Sep 2026 05:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Любое изменение в рабочей среде может повлиять на пользователей: новая версия сервиса, миграция базы данных, обновление мобильного клиента или переключение конфигурации. Выкатывая изменения для пользователей на прод, вы рискуете столкнуться с чем угодно: от битой кнопки до недоступности сервиса.Тесты снижают вероятность ошибки, но не воспроизводят весь набор данных, нагрузку и сочетания запросов в работающей системе.</p><p>Чтобы деплой прошёл без проблем, нужно подготовить воспроизводимый артефакт, проверить совместимость версий и заранее определить условия остановки или отката релиза. Подробнее об этих процессах и опыте работы с высоконагруженными системами рассказала команда RWB.</p><h2>Сначала разделим деплой и релиз</h2><p>Деплой отвечает за доставку кода или собранного артефакта в проде. Релиз начинается тогда, когда новое поведение становится доступно пользователям. Эти события могут происходить одновременно, но если будете разделять — получите больше контроля.</p><p>Если вы выкатываете новую версию сервиса с дополнительными функциями, сначала функцию можно открыть сотрудникам, затем небольшой группе пользователей или отдельному региону. При этом вы можете отдельно управлять версией приложения и доступностью конкретной функции. Например, если проблема связана с функцией, её можно быстро выключить через флаг, а если сбой затрагивает весь сервис, вы возвращаете предыдущую версию приложения.</p><p>Держите в фокусе четыре параметра:</p><ol><li>какой именно артефакт попадает в среду;</li><li>какая доля запросов или пользователей видит изменение;</li><li>по каким сигналам выкладка продолжается или останавливается;</li><li>сколько времени занимает возврат к рабочей версии.</li></ol><p>Время восстановления тоже нужно определить заранее. Например, отключение функции через флаг должно занимать не более 1–5 минут, возврат к предыдущей стабильной версии — до 15 минут. Для сбоев, затрагивающих базу данных или требующих ручного вмешательства, устанавливают отдельное целевое время восстановления — например, 30–60 минут. Эти значения служат отправной точкой: уточняйте их с учётом критичности сервиса, архитектуры и требований бизнеса.</p><h2>Один артефакт для всех сред</h2><p>Одна из причин релизных сбоев скрывается между тестовой средой (стейджингом) и продом. Вы проверяете один контейнерный образ, а перед выходом в прод собираете его заново. Результат второй сборки может отличаться: обновилась незакреплённая зависимость, изменился базовый образ, очистился кеш или иначе отработал сборочный скрипт.</p><p>С подобной проблемой столкнулись и мы в <a href="https://habr.com/ru/companies/rwb/articles/948330/">RWB</a>. При непрерывной интеграции и доставке (CI/CD) пайплайны для разных сред запускались независимо. Из-за повторной сборки в прод мог попасть образ, который не проходил проверку на стейджинге.</p><p>Мы перешли к переиспользованию одного артефакта. Во время первой сборки система вычисляет хеш содержимого репозитория и записывает его в метаданные контейнерного образа. На следующих этапах пайплайн ищет в реестре контейнерных образов артефакт с тем же хешем. Если содержимое исходников не изменилось, образ не собирается заново: система назначает ему тег нужной среды и разворачивает уже проверенную версию.</p><p>Для прода в RWB добавили отдельное правило. Если пайплайн не находит ранее собранный образ, выкладка завершается ошибкой. Правило находится непосредственно в коде пайплайна.</p><p>После внедрения этого подхода RWB еженедельно пропускает около 700 сборок. Это 30% сборок с включённой фичей и 5% общего числа сборок через CI/CD. Главное — между тестированием и продом сохраняется один и тот же исполняемый код.</p><h2>Поэтапная выкладка ограничивает радиус сбоя</h2><p>Даже проверенный артефакт может повести себя иначе на реальном трафике. Помогает поэтапная доставка изменений — новая версия постепенно охватывает всё больше пользователей.</p><p>При <a href="https://argo-rollouts.readthedocs.io/en/stable/features/canary/">канареечной выкладке</a> новую версию сначала получает небольшая группа пользователей, а остальные продолжают работать со старой. Отсюда и название: когда-то шахтёры брали под землю канареек, которые раньше людей реагировали на ядовитый газ и предупреждали об опасности.</p><p>Вот как это работает: вы следите за ошибками и другими показателями новой версии и, если всё в порядке, постепенно увеличиваете долю трафика. Размер каждого шага зависит от нагрузки и характера изменения. Для сервиса с несколькими запросами в минуту нужна одна схема наблюдения, а для компонента с постоянным потоком запросов — другая.</p><p>Решите заранее, как пользователи будут распределяться между версиями. Для сервиса без сохранения состояния можно направлять отдельные запросы случайным образом. Если сервис хранит данные пользовательской сессии — например, авторизацию, содержимое корзины или черновик заказа, то пользователей лучше распределять по идентификатору, аккаунту, устройству или региону. Так, начав работу с одной версией, клиент продолжит работать с ней до конца сессии.</p><p>Когда распределение настроено, остаётся понять, сколько за новой версией наблюдать. Пять минут при паре запросов ничего не покажут, а на стабильных показателях каждый следующий день наблюдения всё менее информативен. Определите заранее оба порога: сколько операций нужно для доверия метрикам и когда наблюдение пора прекращать.</p><p>Дальше процесс можно автоматизировать:<a href="https://argo-rollouts.readthedocs.io/en/stable/features/analysis/"> контроллер поэтапной доставки</a> получает метрики, сравнивает их с заданными условиями и выбирает следующий шаг — увеличить трафик, остановить выкладку или выполнить откат. При этом все условия хранятся рядом с конфигурацией релиза.</p><h2>Метрики, которые останавливают релиз</h2><p>Статус контейнера Running подтверждает только запуск процесса. Для решения о продолжении выкладки нужны сигналы нескольких уровней.</p><figure><img src="https://media.tproger.ru/user-uploads/99633/2026-09-07/d958dbb4-708e-4415-813e-159b15944882.webp" alt="" /></figure><p>Порог лучше сравнивать с базовой версией в тот же момент времени. Одновременное наблюдение за стабильной и канареечной версиями помогает отделить дефект релиза от фонового инцидента.</p><p>Для критичных операций одной агрегированной метрики недостаточно. Общая доля ошибок может выглядеть нормально, хотя конкретный регион, тип клиента или способ оплаты уже сломан. Поэтому перед выкладкой определите разрезы, в которых будете анализировать результат.</p><h2>Feature flags управляют доступностью функции</h2><p><a href="https://martinfowler.com/articles/feature-toggles.html">Feature flag</a> позволяет изменить поведение приложения без новой выкладки кода. С его помощью вы можете открыть функцию внутренним пользователям, заданному сегменту или небольшой доле аудитории. При проблеме флаг работает как kill switch — оперативный выключатель функции.</p><p>Флаг не заменяет канареечную выкладку контейнера. Эти механизмы контролируют разные уровни:</p><ul><li>канареечная выкладка проверяет новую версию приложения и её взаимодействие с инфраструктурой;</li><li>feature flag управляет отдельным пользовательским сценарием внутри уже развёрнутой версии.</li></ul><p>Вместе они позволяют сначала проверить техническую стабильность сборки, а затем постепенно открыть новое поведение.</p><p>Флаги тоже требуют контроля: для временного переключателя заранее определите владельца, назначение и дату удаления. Доступ к прод-флагам лучше ограничить, а изменения записывать в журнал с указанием пользователя, времени и причины.</p><p>Ещё один важный момент: приложение должно предсказуемо работать при недоступности сервиса флагов. Для критичных функций вы заранее задаёте безопасное значение по умолчанию и срок, в течение которого клиент может использовать закешированную конфигурацию.</p><h2>Миграции данных требуют собственного плана отката</h2><p>Откат контейнерного образа возможен, пока старая и новая версии совместимы с одной схемой данных. После удаления колонки, изменения формата события или необратимого преобразования записей старый код может перестать работать.</p><p>Для изменений, затрагивающих схему данных, применяют подход expand–migrate–contract:</p><ol><li>Сначала вы расширяете модель данных: добавляете новую колонку, таблицу или поле события, сохраняя старую структуру.</li><li>Затем выкатываете код, который понимает оба формата. При необходимости сервис некоторое время пишет данные одновременно в старое и новое представление.</li><li>После миграции чтение переключается на новый формат, а вы проверяете результат на прод-нагрузке.</li><li>Старую структуру удаляют отдельным релизом, когда предыдущая версия приложения больше не понадобится для отката.</li></ol><p>Да, эта последовательность увеличивает число этапов, зато сохраняет совместимость между версиями. Для API и очередей действует тот же принцип: потребители должны уметь обрабатывать новые поля, а производитель — учитывать время обновления зависимых сервисов.</p><p>В распределённой системе разные версии компонентов некоторое время работают одновременно, поэтому совместимость становится частью самого релизного процесса.</p><p>У RWB похожая задача решена через правила совместимости — рассказали об этом в<a href="https://habr.com/ru/companies/rwb/articles/1036296/"> кейсе о переходе к микрофронтендам</a>. Основное приложение выбирает подходящую версию независимо развёртываемого фронтенд-модуля. Благодаря этому вы можете выпускать изменения постепенно и при необходимости откатывать отдельный микрофронтенд.</p><h2>Откат нужно репетировать</h2><p>В рабочий сценарий нужно включить:</p><ul><li>где хранится последний проверенный артефакт;</li><li>кто или какая автоматика запускает возврат;</li><li>сохраняет ли старая версия совместимость с текущими данными и конфигурацией;</li><li>сколько времени проходит от сигнала до восстановления пользовательского сценария;</li><li>как вы убеждаетесь, что откат действительно завершился успешно.</li></ul><p>Проверьте эту процедуру заранее на тестовой среде. При этом сценарий должен совпадать с прод-процессом. Если вы впервые выполняете откат во время реального инцидента, часть времени уйдёт на выяснение того, как именно он должен работать.</p><p>Проблему можно исправлять новой версией, если миграция уже изменила большой объём данных и предыдущий код больше не поддерживает новый формат. Поэтому сценарий отката нужно учитывать ещё до начала миграции: определить условия, при которых возврат к старой версии уже невозможен, назначить ответственных и описать последовательность восстановления в runbook — пошаговой инструкции для дежурных инженеров.</p><h2>Минимальный набор перед первой управляемой выкладкой</h2><p>Для первой управляемой выкладки не обязательно сразу строить сложную платформу поэтапной доставки. Базовый процесс можно собрать из нескольких понятных правил:</p><ul><li>прод получает тот же артефакт, который прошёл проверки;</li><li>релиз начинается с ограниченного трафика или аудитории;</li><li>метрики имеют заранее определённые условия остановки.</li></ul><p>Когда вам уже понятен процесс, можно автоматизировать продвижение между этапами, сравнение метрик и откат. Автоматизация в этом случае ускоряет готовый процесс и снижает количество ручных действий.</p><h2>Вместо вывода</h2><p>Безопасность релиза определяется возможностью остановиться. Технически её обеспечивают четыре рычага: какой артефакт вы разворачиваете, какая доля пользователей его видит, по каким сигналам останавливаете выкладку и сколько времени занимает откат. Для старта достаточно минимума: единый артефакт, ограниченный первый этап, измеримые критерии остановки и отрепетированный откат.</p>]]></content:encoded>
    </item>
    <item>
      <title>86% крупных компаний России пробуют LLM, автономные агенты в проде у 8%</title>
      <link>https://tproger.ru/news/86-krupnyh-rossijskih-kompanij-ispolzuyut-ili-testiruyut-llm-no</link>
      <comments>https://tproger.ru/news/86-krupnyh-rossijskih-kompanij-ispolzuyut-ili-testiruyut-llm-no?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/86-krupnyh-rossijskih-kompanij-ispolzuyut-ili-testiruyut-llm-no</guid>
      <description><![CDATA[<p>«Инфосистемы Джет» и Smart Ranking опросили 52 крупные российские компании: 86% используют или тестируют LLM, 53% довели генеративный ИИ до промышленной эксплуатации, автономные агенты в проде у 8%. Барьеры, ниши применения, оговорки о выборке и что это значит для разработчиков.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/86-krupnyh-rossijskih-kompanij-ispolzuyut-ili-testiruyut-llm-no">86% крупных компаний России пробуют LLM, автономные агенты в проде у 8%</a>»</p>]]></description>
      <category><![CDATA[Статистика]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:31:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Интегратор «Инфосистемы Джет» и аналитическое агентство Smart Ranking 1 сентября <a href="https://www.vedomosti.ru/technologies/special/2026/09/01/dostich-ii-zrelosti-86-krupnih-kompanii-vnedrili-bolshie-yazikovie-modeli-erid-2Vfnxw5TLgt">опубликовали</a> в «Ведомостях» выжимку исследования ИИ-зрелости крупного российского бизнеса. Опрошены 52 компании, в которых работает около 450 тыс. человек, плюс проведены семь глубинных интервью. Главная цифра: <b>86%</b> компаний используют или тестируют большие языковые модели. Вторая, менее громкая: до промышленной эксплуатации генеративный ИИ довели <b>53%</b>, а полностью автономные агенты работают в проде лишь у <b>8%</b>.</p><p>Для разработчика это карта спроса. Если пилоты есть почти у всех, а в прод доходит половина, то основная работа сейчас не в том, чтобы «прикрутить модель», а в том, чтобы довести её до надёжной эксплуатации: данные, интеграции, контроль качества и стоимость. Именно там исследование и находит барьеры. Оговорка о выборке: 52 компании — это крупный бизнес, и выводы не переносятся на средние и малые компании; публикация в «Ведомостях» помечена как партнёрский материал, а полную версию исследования на сайте «Инфосистем Джет» можно только запросить.</p><ul><li>86% крупных компаний используют или тестируют LLM; 53% перевели решения на генеративном ИИ в промышленную эксплуатацию.</li><li>Агенты: полуавтономные (с контролем человека) осваивают 59%, полностью автономные 25%, мультиагентные 23%; в проде соответственно 15%, 8% и 8%.</li><li>44% крупных компаний отказываются от внедрения ИИ-агентов; барьеры: стоимость серверов (58%), юридические риски (56%), отсутствие устойчивого экономического эффекта (46%).</li><li>Где ИИ уже применяют: контакт-центры и поддержка (75%), аналитика и BI (63%), внутренние ИТ-службы и сервис-деск (60%).</li><li>Выборка: 52 крупные компании, около 450 тыс. сотрудников, семь глубинных интервью; полная версия исследования по запросу.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-02/86e70a43-e789-4322-aa9b-dde3da265928.webp" alt="Диаграмма: доля компаний, осваивающих и промышленно использующих полуавтономных, автономных и мультиагентных ИИ-агентов" /><figcaption>Освоение против промышленной эксплуатации ИИ-агентов в крупных российских компаниях, % респондентов. График: Tproger по данным «Инфосистем Джет» и Smart Ranking, 2026.</figcaption></figure><h2>Разрыв между пилотом и продом</h2><p>Самая показательная пара цифр относится к агентам. Полуавтономных агентов, где человек проверяет результат, осваивают 59% компаний, но в промышленной эксплуатации они лишь у 15%. Для полностью автономных систем разрыв ещё резче: 25% против 8%. Авторы формулируют это прямо: «настоящего бума ИИ-агентов пока не случилось». Пилот сделать легко, а отвечать за агента, который сам совершает действия в учётной системе, компании не спешат.</p><p>По словам Максима Андрианова из «Инфосистем Джет», которого цитируют «Ведомости», без данных искусственный интеллект не приносит ожидаемого экономического эффекта.</p><h2>Три барьера</h2><p>Первый — деньги на железо: 58% называют стоимость серверов главным препятствием. Второй — юридические риски, 56%: персональные данные, ответственность за решения модели, требования регуляторов. Третий — экономика: 46% не видят устойчивого эффекта уже на стадии пилота. Отдельная цифра того же опроса: 44% крупных компаний отказываются от внедрения агентов; связывать её с предыдущей причинно исследование не берётся, и мы тоже.</p><h2>Где ИИ уже работает</h2><p>Ниши предсказуемые, но полезно видеть их в цифрах: контакт-центры и поддержка клиентов у 75% респондентов, аналитика и BI у 63%, внутренние ИТ-службы и сервис-деск у 60%. Это задачи с большим потоком однотипных текстов, где ошибку модели легко поймать и дёшево исправить. Разработка ПО как отдельная ниша в опубликованной выжимке не выделена.</p><h2>Что это значит для разработчика</h2><ul><li>Спрос смещается от «умею вызвать API модели» к «умею довести до прода»: оценка качества, наблюдаемость, ограничение стоимости, откат при деградации.</li><li>Работа с данными снова главный навык: интеграция с учётными системами, очистка и разметка, права доступа к корпоративным источникам.</li><li>Локальный инференс и оптимизация под ограниченное железо востребованы: стоимость серверов назвали главным барьером 58% компаний.</li><li>Комплаенс становится частью задачи: где хранятся данные, что уходит в модель, как это объяснить юристам.</li><li>Агенты с полной автономией пока редкость; полезнее уметь строить полуавтономные сценарии с проверкой человеком, которые реально доходят до прода.</li></ul><h2>Контекст</h2><p>Для сравнения авторы приводят глобальный опрос McKinsey State of AI 2025: 88% компаний в мире применяют ИИ хотя бы в одной функции, а влияние на прибыль до вычета процентов и налогов фиксируют 39%. Российские 86% по проникновению выглядят сопоставимо, но по доле компаний с измеримым эффектом сравнить нельзя: методики разные. Полную версию исследования «Инфосистемы Джет» отдают по запросу на своём сайте; редакция запросила её и дополнит материал, если в полном тексте окажутся данные по разработке ПО.</p><p>Источники: <a href="https://www.vedomosti.ru/technologies/special/2026/09/01/dostich-ii-zrelosti-86-krupnih-kompanii-vnedrili-bolshie-yazikovie-modeli-erid-2Vfnxw5TLgt">Достичь ИИ-зрелости: 86% крупных компаний внедрили большие языковые модели («Ведомости», партнёрский материал)</a>, <a href="https://jet.su/jet-ai-lab/research-ai/">Страница исследования на сайте «Инфосистем Джет»</a></p><p>Изображение на обложке: скриншот jet.su</p>]]></content:encoded>
    </item>
    <item>
      <title>Цифровой рубль вышел в массовое использование: что менять в интеграциях</title>
      <link>https://tproger.ru/news/cifrovoj-rubl-vywel-v-massovoe-ispolzovanie-s-1-sentyabrya-perv</link>
      <comments>https://tproger.ru/news/cifrovoj-rubl-vywel-v-massovoe-ispolzovanie-s-1-sentyabrya-perv?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/cifrovoj-rubl-vywel-v-massovoe-ispolzovanie-s-1-sentyabrya-perv</guid>
      <description><![CDATA[<p>С 1 сентября 2026 года крупнейшие банки и ритейлеры открыли инфраструктуру цифрового рубля. Как устроен третий вид денег, какие лимиты, сроки и комиссии установил Банк России, кто обязан принимать цифровые рубли и что менять в платёжных интеграциях магазинов и сервисов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/cifrovoj-rubl-vywel-v-massovoe-ispolzovanie-s-1-sentyabrya-perv">Цифровой рубль вышел в массовое использование: что менять в интеграциях</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:29:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>С 1 сентября 2026 года крупнейшие банки и торговые компании открыли инфраструктуру <b>цифрового рубля</b>, <a href="https://www.cbr.ru/press/event/?id=32802">сообщил</a> Банк России 31 августа. Совершеннолетний гражданин с подтверждённой учётной записью Госуслуг может завести цифровой счёт в приложении подключённого банка, а крупнейшие магазины обязаны принимать оплату в новой форме. Для разработчиков это означает появление третьего платёжного канала рядом с картами и СБП, со своими правилами, лимитами и сроками подключения.</p><p>Цифровой рубль — не криптовалюта и не «безнал на карте». Счёт открывается на платформе Банка России, а банк выступает посредником, через приложение которого клиент этим счётом управляет. Один человек или компания может иметь только один такой счёт; у ИП их два: личный и для бизнеса. Если вы делаете интернет-магазин, кассу, биллинг или сервис подписок для компании из первой волны, приём цифрового рубля становится обязательным сценарием, а не опцией.</p><ul><li>Счёт цифрового рубля открывается на платформе Банка России через раздел «Цифровой рубль» в приложении подключённого банка; один счёт на физлицо или компанию, у ИП два.</li><li>Лимит пополнения для физлиц — 300 тыс. рублей в месяц, для бизнеса лимита нет; тратить накопленное можно без ограничений.</li><li>Для граждан операции бесплатны; для бизнеса комиссии не взимаются до конца 2026 года, тарифы с 2027 года установлены отдельным решением Банка России от 28 августа.</li><li>Принимать цифровые рубли обязаны с 1 сентября 2026 года торговые компании с выручкой свыше 120 млн рублей, у которых на 1 января 2026 года был договор с крупнейшим банком-участником; торговые точки с выручкой до 5 млн рублей освобождены.</li><li>Все банки с универсальной лицензией подключаются к 1 сентября 2027 года, с базовой — к 1 сентября 2028 года; сроки закреплены законом 248-ФЗ.</li></ul><h2>Как это устроено</h2><p>Платформа цифрового рубля принадлежит Банку России, и все счета живут на ней, а не в отдельных банках. Банк лишь даёт интерфейс: открыть счёт, пополнить его с обычного счёта, заплатить, вернуть деньги обратно. Отсюда две особенности, которых нет у безнала: счёт один на всю страну, и, сменив банк, клиент сохраняет тот же счёт; лимиты и комиссии задаёт регулятор, а не банк. Регулятор допускает и банки, которые не обязаны открывать инфраструктуру этой осенью, но хотят предоставлять сервис уже сейчас.</p><blockquote>Граждане смогут пополнять счёт цифрового рубля со своих банковских счетов на сумму до 300 тыс. рублей в месяц. Для бизнеса лимита на пополнение нет. Всеми накоплениями на своём цифровом кошельке и граждане, и компании смогут распоряжаться без ограничений.</blockquote><p>Доступные операции: переводы между гражданами и компаниями, платежи в бюджет и из бюджета, оплата покупок, возвраты. Открытие и закрытие счёта бесплатны, для граждан бесплатны все платежи и переводы. Для бизнеса действует льготный период до конца 2026 года; тарифы для индивидуальных предпринимателей и компаний с 2027 года установлены <a href="https://www.cbr.ru/rbr/dir_decisions/rsd_2026-08-28_45_01/">отдельным решением Совета директоров Банка России от 28 августа 2026 года</a>. По вопросам работы с цифровыми рублями регулятор советует обращаться сначала в свой банк, затем на горячую линию Банка России по цифровому рублю: 8 800 301 30 00, короткий номер 301 с мобильного или +7 499 300 3 301.</p><h2>Сроки для банков и магазинов</h2><p>Внедрение идёт волнами. С 1 сентября 2026 года инфраструктуру открывают крупнейшие банки, а торговые компании с выручкой свыше 120 млн рублей в год, у которых на 1 января 2026 года был договор с таким банком, обязаны принимать цифровые рубли. С 1 сентября 2027 года такую возможность должны обеспечить все банки с универсальной лицензией, с 1 сентября 2028 года — банки с базовой лицензией. Торговые точки с выручкой меньше 5 млн рублей от обязанности освобождены, как и торговые точки там, где нет интернета. Обязательные сроки для банков и продавцов закреплены федеральным законом 248-ФЗ, а решение Банка России определяет лимиты, перечень операций и порядок добровольного раннего подключения остальных банков.</p><h2>Что это значит для разработчика платёжной интеграции</h2><p>Технически приём идёт через банк-участник, поэтому прямой интеграции с платформой Банка России у магазина нет: интерфейс и документацию даёт ваш банк. Возвраты уходят обратно на цифровой счёт покупателя, а не на карту, и это отдельная ветка в логике рефандов и чеков. Лимит 300 тыс. рублей в месяц касается пополнения счёта физлицом; расход ограничен только остатком на счёте.</p><ul><li>Узнайте у своего банка, как он подключает приём цифровых рублей и какие интерфейсы даёт; для крупнейших банков это уже сентябрь 2026 года.</li><li>Заложите в модель данных третий тип платежа рядом с картой и СБП: у него свои статусы, свой возврат и своя сверка.</li><li>Возвраты: средства уходят обратно на цифровой счёт покупателя; учитывайте это в логике рефандов и в чеках.</li><li>Комиссии для бизнеса появятся с 2027 года по тарифам решения от 28 августа; не зашивайте «бесплатно» в расчёт стоимости платежей.</li><li>Торговые точки с выручкой до 5 млн рублей, точки без интернета и, до сентября 2027 года, клиенты банков вне списка крупнейших могут не спешить: для них цифровой рубль пока добровольный.</li></ul><h2>Контекст</h2><p>Пилот цифрового рубля стартовал в августе 2023 года на ограниченном круге клиентов и банков. К концу сентября 2025 года в нём было открыто больше 2,5 тыс. кошельков и проведено больше 90 тыс. операций. Массовый запуск дважды переносили. Следующая проверка — сентябрь 2027 года, когда к платформе должны подключиться все банки с универсальной лицензией, и тарифы для бизнеса, которые начнут действовать с января.</p><p>Источники: <a href="https://www.cbr.ru/press/event/?id=32802">Сообщение Банка России о старте с 1 сентября</a>, <a href="https://www.cbr.ru/rbr/dir_decisions/rsd_2026-08-28_45_02/">Решение Совета директоров Банка России от 28.08.2026</a>, <a href="https://www.cbr.ru/fintech/dr/">Страница проекта «Цифровой рубль»</a></p><p>Изображение на обложке: Банк России</p>]]></content:encoded>
    </item>
    <item>
      <title>Вступил в силу закон об идентификации владельцев доменов .ru через Госуслуги</title>
      <link>https://tproger.ru/news/vstupil-v-silu-zakon-ob-identifikacii-vladelcev-domenov-ru-r</link>
      <comments>https://tproger.ru/news/vstupil-v-silu-zakon-ob-identifikacii-vladelcev-domenov-ru-r?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vstupil-v-silu-zakon-ob-identifikacii-vladelcev-domenov-ru-r</guid>
      <description><![CDATA[<p>Закон 569-ФЗ ввёл с 1 сентября 2026 года идентификацию администраторов доменов .ru, .рф и .su через Госуслуги, но ограничения включат позже. Что это значит для владельцев доменов, какие данные о готовности публикуют регистраторы, что проверить в компании.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vstupil-v-silu-zakon-ob-identifikacii-vladelcev-domenov-ru-r">Вступил в силу закон об идентификации владельцев доменов .ru через Госуслуги</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Роскомнадзор]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:27:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>С 1 сентября 2026 года действует <a href="https://government.ru/docs/all/162760/">федеральный закон № 569-ФЗ</a> от 29 декабря 2025 года: администраторы доменов в зонах <b>.ru</b>, <b>.рф</b> и <b>.su</b> должны быть идентифицированы через ЕСИА, то есть через учётную запись на Госуслугах. Закон закрепляет идентификацию при регистрации; распространение требования на продление и изменение данных по существующим доменам регистраторы описывают как ожидаемую практику, а правила, по данным CNews, ещё не приняты. Ограничения для тех, кто проверку не прошёл, пока не применяются: по данным <a href="https://www.cnews.ru/news/line/2026-09-01_rutsentr_gotovnost_administratorov">CNews</a>, действует переходный режим до включения регистратора в специальный перечень либо до 18 января 2027 года.</p><p>Насколько рынок к этому готов, показал Руцентр в данных, опубликованных 1 сентября: идентификацию прошли 42,2% его администраторов и 25,7% пользователей Рег.ру (данные на конец августа). Вместе эти два регистратора контролируют около 68% российского доменного рынка. Для команды разработки это значит одно: домены продукта, записанные на бывших сотрудников или незнакомых людей, при следующем продлении могут зависнуть.</p><ul><li>Закон 569-ФЗ действует с 1 сентября 2026 года и распространяется на зоны .ru, .рф и .su; идентификация через ЕСИА при регистрации, продлении и изменении данных.</li><li>Готовность по данным Руцентра на 1 сентября: 42,2% его администраторов, 25,7% у Рег.ру; ещё в начале июня через ЕСИА прошли администраторы 256 тыс. доменов в Руцентре и 456 тыс. в Рег.ру.</li><li>Санкции для неидентифицированных пока не применяются: переходный режим до включения регистратора в специальный перечень либо до 18 января 2027 года.</li><li>Для нерезидентов с 2 июня работает trustee-сервис Рунити; для юрлиц на момент публикации CNews идентификацию проводил Руцентр.</li><li>По данным Руцентра, 38,5% компаний сталкивались с сайтами-имитаторами бренда, а двухфакторную аутентификацию в аккаунте регистратора используют 15–16% владельцев.</li></ul><h2>Что именно требует закон</h2><p>Раньше администратор указывал свои данные в анкете регистратора, и подтверждение через государственную систему не требовалось. Теперь личность подтверждается через ЕСИА: физлица и ИП делают это в личном кабинете регистратора через вход на Госуслуги, юрлица — через подтверждённую учётную запись организации. Без идентификации нельзя будет зарегистрировать новый домен, продлить существующий или сменить его данные. Сама регистрация при этом остаётся открытой для любого.</p><blockquote>Зарегистрировать домен сможет любой, как и раньше, добавляется обязательная идентификация через ЕСИА.</blockquote><p>Важная деталь: ограничения для тех, кто не прошёл идентификацию, 1 сентября не включаются. Действует переходный период: до включения конкретного регистратора в специальный перечень либо до 18 января 2027 года. Точный порядок последствий для каждого неидентифицированного домена в открытых источниках не раскрыт; это главный вопрос, который стоит задать своему регистратору. Времени меньше, чем кажется: домены продлеваются раз в год, и у части владельцев дата продления попадёт уже внутрь жёсткого режима.</p><h2>Почему это касается разработчиков</h2><p>Домен — корень всего: DNS, TLS-сертификаты, почта, OAuth-редиректы, вебхуки. В той же публикации Руцентр приводит цифры, которые объясняют, зачем регулятор это делает: 38,5% компаний сталкивались с сайтами-имитаторами бренда, 35,9% — со сканированием инфраструктуры и попытками перехвата управления, а двухфакторную аутентификацию в аккаунтах регистраторов используют лишь 15–16%; опрос охватывал преимущественно крупный бизнес, а не всех владельцев доменов. С июня по август было отозвано 6 997 SSL-сертификатов, из них 4 677 GlobalSign. Физлица владеют 72,7% доменов в зоне .ru и 82,9% в зоне .рф.</p><p>Типичная проблема продуктовой команды выглядит так: домен когда-то зарегистрировал сотрудник на своё имя, потом уволился, доступ к аккаунту регистратора лежит в старом чате, а сам домен продлевается по автоплатежу. Раньше это работало. После окончания переходного режима регистратор при продлении попросит этого человека подтвердить личность через Госуслуги, и если его не найти, домен может зависнуть; точный порядок последствий пока не утверждён.</p><h2>Что проверить сегодня</h2><ul><li>Составьте список доменов продукта с датами продления и посмотрите в WHOIS или личном кабинете, кто указан администратором: физлицо, ИП или юрлицо.</li><li>Домены на сотрудников переоформите на юрлицо через процедуру передачи у регистратора; сделать это сейчас проще, чем после блокировки.</li><li>Убедитесь, что у администратора-юрлица есть подтверждённая учётная запись организации на Госуслугах и доступ к ней не у одного человека.</li><li>Включите двухфакторную аутентификацию в аккаунте регистратора и переведите вход на корпоративную почту.</li><li>Если домены записаны на иностранное лицо или компанию, уточните у регистратора условия trustee-сервиса: с 2 июня такой есть у Рунити.</li><li>Домены в .com, .io, .dev и других международных зонах закон не затрагивает, но защиты от «увольнения владельца» они тоже не дают, так что инвентаризация полезна всем.</li></ul><h2>Что дальше</h2><p>Ключевая дата — 18 января 2027 года, конец переходного периода для регистраторов, не попавших в перечень раньше. До этого момента регистраторы будут догонять показатели готовности рассылками и напоминаниями. Порядок последствий для неидентифицированного домена в открытых источниках пока не раскрыт; редакция будет следить за разъяснениями Координационного центра доменов .RU/.РФ.</p><p>Источники: <a href="https://www.cnews.ru/news/line/2026-09-01_rutsentr_gotovnost_administratorov">Руцентр: готовность администраторов к идентификации (CNews, 1 сентября 2026)</a>, <a href="https://www.cnews.ru/news/line/2026-06-02_runiti_zapustila_servis">Рунити запустила сервис для нерезидентов (CNews, 2 июня 2026)</a>, <a href="https://government.ru/docs/all/162760/">Федеральный закон от 29.12.2025 № 569-ФЗ</a></p><p>Изображение на обложке: скриншот esia.gosuslugi.ru</p>]]></content:encoded>
    </item>
    <item>
      <title>Ваши open source-контрибьюторы теперь ИИ-first. Как не утонуть в потоке агентских пулреквестов</title>
      <link>https://tproger.ru/articles/vawi-kontribyutory-teper-ai-first-kak-ne-utonut-v-potoke-agen</link>
      <comments>https://tproger.ru/articles/vawi-kontribyutory-teper-ai-first-kak-ne-utonut-v-potoke-agen?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/vawi-kontribyutory-teper-ai-first-kak-ne-utonut-v-potoke-agen</guid>
      <description><![CDATA[<p>Агенты генерируют пулреквесты в open source. Разбираем опыт AutoGPT: как ставить ворота, писать AGENTS.md и не тратить команду на ревью слабых PR.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/vawi-kontribyutory-teper-ai-first-kak-ne-utonut-v-potoke-agen">Ваши open source-контрибьюторы теперь ИИ-first. Как не утонуть в потоке агентских пулреквестов</a>»</p>]]></description>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 19 Aug 2026 07:01:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если в очереди на ревью вашего open source-проекта всё чаще оказываются пулреквесты, написанные не человеком, а агентом, — вы не одни. Чтобы не утонуть в этом потоке, мейнтенеру нужно перенести правила рядом с кодом и настроить автоматические ворота: шаблон PR, CI, требования к тестам и лицензионное соглашение участника.</p><p>В AutoGPT, где на момент интервью у репозитория было свыше 180 тысяч звёзд и 150 открытых PR, большая часть этих PR создана агентами: Copilot, OpenClaw, собственными инструментами команды и сторонними ботами. Большинство мейнтенеров реагируют просто: закрыть дверь, отключить пулреквесты, не тратить силы на чужой LLM-вывод. Но у Николаса Тиндла, одного из основателей ИИ-инженерии в AutoGPT, другой взгляд: «По сути, кто-то другой платит за ваши вычислительные ресурсы. Если контрибьютор хочет потратить свои токены на улучшение вашего проекта — пусть тратит. Главное, сделать так, чтобы единственный путь внутрь проходил через ваши правила.»</p><p>ИИ-first контрибьютор — это разработчик, который отдаёт написание кода, тестов или документации генеративной модели, либо самоходный агент, который клонирует репозиторий, ищет issue, пишет код и открывает PR. Для мейнтенера результат одинаков: в репозиторий приходит поток кода, который часто не учитывает контекст проекта и требует ревью.</p><p>Агенты не ищут документацию сами — они читают то, что лежит рядом с кодом. AGENTS.md и CLAUDE.md в нужных директориях работают лучше, чем вики.</p><p>Пропускные ворота должны быть автоматическими и однозначными: шаблон PR, тест-план, CI как стена, CLA как детектор человека.</p><p>Не все ворота стоит оставлять включёнными: автоматические комментарии об ошибках CI быстро превращаются в шум.</p><p>Плохой AGENTS.md хуже, чем его отсутствие: избыточные инструкции засоряют контекст и ломают поведение агентов.</p><p>Мейнтенер всё ещё решает, что принимать: закрыть PR и переписать самому — тоже валидный выбор.</p><h2>Проблема не в документации, а в её обнаружении</h2><p>Первое, что пробовала сделать AutoGPT, — улучшить CONTRIBUTING.md, написать подробную вики и обновить гайды. Это не сработало. Дело в том, что агенты не ходят по ссылкам и не ищут документацию в разделах репозитория. Они смотрят на то, что находится в текущей директории и на один-два уровня выше. Если инструкция не лежит там, где агент работает, для него её не существует.</p><p>Сначала команда добавила файлы CLAUDE.md, потому что Claude открывал пулреквесты без достаточного контекста о репозитории. Потом выяснилось, что Copilot и Codex эти файлы игнорируют — они не Claude. Решением стал централизованный AGENTS.md, на который указывают все специфичные для модели файлы.</p><p>Важный нюанс: AGENTS.md действует внутри директории. Если агент работает в backend/, он видит правила для бэкенда. Если динамически загружается навык, связанный с фронтендом, агент может не знать, в какой директории искать инструкции — и навык сам должен ему подсказать путь. Поэтому в AutoGPT файл AGENTS.md лежит рядом с кодом, который он регулирует.</p><p><b>Навык — что это?</b><br />В терминологии агентских инструкций навык — это файл с описанием, по которому агент решает, когда загружать полный набор правил. Агент сканирует описания заранее и подключает нужный навык, когда задача совпадает. Например: «напиши Storybook-тест, если компонент лежит в этих папках».</p><p>Фронтенд-инженер AutoGPT устал от одного и того же класса сломанных PR в open source-проекте и оформил гайд как навык. Теперь каждый агент, который касается репозитория, видит триггер и выполняет правило. Бэкенд делает то же самое: не набрал 80% покрытия — PR не пройдёт.</p><h2>Ворота для ИИ-контрибьюторов в open source</h2><p>AutoGPT выстроила несколько механизмов, которые сдерживают поток низкокачественных пулреквестов и заставляют агентов вести себя предсказуемо.</p><h3>Шаблон пулреквеста как пропускной пункт</h3><p>В шаблоне PR прямо написано: PR, не соответствующий шаблону, закрывается автоматически и без колебаний. Команда даже построила бота, который это делает. Но запускать его не понадобилось — само правило изменило поведение агентов. Агенты стали заполнять шаблон. А вот люди иногда его игнорировали, и это Тиндл считает полезным сигналом: «Если вы не следуете шаблону, вы, скорее всего, человек, и я отнесусь к вам мягче.»</p><h3>Тест-план, который запускает код</h3><p>В шаблоне есть раздел тест-плана, и его формулировка незаметно подсказывает агенту протестировать пулреквест. Эта фраза активирует навык test PR: агент устанавливает браузер, разворачивает приложение и проверяет изменение. Агент пришёл поставить галочку, а в итоге запустил код. После этого сломанные PR стали редкостью. Осталась другая проблема — PR, которые работают, но не вписываются в дорожную карту.</p><h3>CI — стена, а не рекомендация</h3><p>Codecov и другие проверки настроены как required checks. Агент открывает PR, через несколько минут видит, что мёрж заблокирован, загружает навык с тестами и добивается покрытия. Никто не просил — инфраструктура сама направила агента.</p><h3>CLA (Contributor License Agreement) как детектор человека</h3><p>AutoGPT использует двойную лицензию, но Тиндл советует лицензионное соглашение участника (Contributor License Agreement, CLA) любому проекту, даже MIT. Подписание требует браузера и OAuth-потока GitHub на отдельном домене. Сегодня агенты с этим справляются плохо — и это хорошо, потому что большинство мейнтенеров не хотят, чтобы агент ходил в GitHub от их имени. Если CLA не подписан в течение недели, PR закрывается с комментарием «подпишите CLA и переоткройте».</p><h3>SHA коммита перед закрытием замечания</h3><p>Часть агентов закрывает все треды ревью, не исправляя код. В AutoGPT есть навык pr-address, который описывает допустимую последовательность: исправить, закоммитить, запушить, ответить, потом разрешить тред. Ответ должен содержать полный SHA коммита, полученный через git rev-parse HEAD, чтобы агент не подсунул старый хеш. Навык явно называет антипаттерны: «Acknowledged» — не исправление, и ссылка на коммит, который не трогает указанную строку, тоже не считается.</p><h2>Ворота, от которых пришлось отказаться</h2><p>Когда CI падает, AutoGPT изначально запускала агента, который читал лог и писал комментарий, что сломалось. Первая версия использовала Claude Code внутри GitHub Actions с аутентификацией в CI — лишняя широкая учётная запись. Потом перешли на Copilot внутри рабочего процесса: тот же результат, но без лишних кредов.</p><p>А потом выключили именно автоматические комментарии об ошибках CI. Прогоны в AutoGPT падают часто, и бот, который целыми днями описывает каждый падший прогон, создаёт не меньше шума, сколько и сами ошибки. Урок: оставляйте то, что снижает нагрузку на мейнтенера, и выключайте то, что превращается в фоновый шум.</p><h2>Четыре ловушки, которые стоит записать</h2><ul><li><b>Плохой AGENTS.md хуже, чем его отсутствие.</b> В AutoGPT сначала разбросали файлы повсюду и засорили контекст. Если поведение агентов ухудшилось — перечитайте, что вы написали.</li><li><b>GraphQL API GitHub быстро исчерпывает лимит запросов.</b> Если каждый инструмент в команде ходит в CLI как отдельный пользователь, лимит закончится. Создайте GitHub App и аутентифицируйте CLI через неё.</li><li><b>Сложное ревью стоит реальных денег.</b> У AutoGPT PR проходит через клон ветки, восемь агентов с разными ролями, запуск стека и скриншоты. Круто, но дорого. Сейчас эту процедуру запускают только для совсем маленьких или крупных PR.</li><li><b>Проверяйте авторизованные приложения.</b> Каждый протестированный инструмент оставляет OAuth-разрешение. Если перестали использовать приложение — удалите его из настроек GitHub.</li></ul><h2>Не всё в open source решается воротами</h2><p>Тиндл подчёркивает два тезиса, которые не связаны с инструментами. Первый: вы не обязаны принимать каждый пулреквест. Мёржить чужой LLM-вывод — асимметричная сделка: вы будете поддерживать этот код вечно. Закрыть PR и переписать решение самому — валидный выбор.</p><p>GitHub даёт мейнтенерам ручки: можно отключить пулреквесты целиком, ограничить создание issue только участникам с правами collaborator или требовать предварительного обсуждения. Если хотите — вообще закройте приём внешнего кода, как это сделали в SQLite: они принимают только баг-репорты. У вашего проекта тоже может быть своя граница.</p><p>Второй тезис: когда вы закрываете PR, но переписываете его идею сами, добавьте автора как соавтора, если это уместно. В AutoGPT 800 контрибьюторов, и один дополнительный соавтор ничего не стоит. Для большинства людей важно, что их проблему заметили и исправили.</p><h2>Выводы</h2><p>Open source развивался, делая сотрудничество явным: лицензии формализовали разрешения, issue сделали работу видимой, пулреквесты превратили ревью в общую практику. Инструкции для агентов в репозитории — следующий шаг в этом направлении. Правильная форма ещё не устоялась: у AutoGPT уже третья версия AGENTS.md, и она появилась потому, что команда сначала развёртывала плохие версии и смотрела, что с ними делают агенты.</p><p>Тиндл советует мейнтенерам записываться в программу обратной связи GitHub — maintainers.github.com:</p><blockquote>You've got to go there. You've got to sign up. It gets you all the connections you want at GitHub. That's where I learned about all this stuff, and where I share it.</blockquote><p>Мейнтенер всё ещё решает, что принимать, и задаёт планку. Разница лишь в том, что всё больше этого решения можно вынести рядом с кодом — туда, где уже находятся ваши контрибьюторы и их агенты.</p><p>Если тема интересна, загляните в разделы tproger: <a href="https://tproger.ru/tag/open-source">open source</a>, <a href="https://tproger.ru/tag/github">GitHub</a> и <a href="https://tproger.ru/tag/ai">искусственный интеллект</a>.</p><p><b>Источник:</b> <a href="https://github.blog/open-source/maintainers/your-contributors-are-ai-first-now-is-your-project/">GitHub Blog — Your contributors are AI-first now. Is your project?</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Claude Code научился работать в циклах: разбираем официальный гайд Anthropic</title>
      <link>https://tproger.ru/articles/claude-code-nauchilsya-rabotat-v-ciklah-razbiraem-oficialnyj-ga</link>
      <comments>https://tproger.ru/articles/claude-code-nauchilsya-rabotat-v-ciklah-razbiraem-oficialnyj-ga?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/claude-code-nauchilsya-rabotat-v-ciklah-razbiraem-oficialnyj-ga</guid>
      <description><![CDATA[<p>Anthropic опубликовала официальный гайд по loops в Claude Code. Разбираем turn-based, goal-based, time-based и proactive циклы, примеры команд и советы по экономии токенов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/claude-code-nauchilsya-rabotat-v-ciklah-razbiraem-oficialnyj-ga">Claude Code научился работать в циклах: разбираем официальный гайд Anthropic</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Практика]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 07 Jul 2026 11:41:33 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пока одни разработчики всё ещё соревнуются в длине промптов, в Anthropic считают, что главный навык будущего — не prompt-инжиниринг, а проектирование циклов. В начале июля 2026 года официальный аккаунт <b>ClaudeDevs</b> опубликовал гайд <a href="https://claude.com/blog/getting-started-with-loops">Getting started with loops</a>, в котором команда Claude Code наконец дала общую терминологию тому, что последние недели обсуждали в X Борис Черни, Питер Штайнбергер и Эдди Османи.</p><p>В статье loops определяются просто: <b>агент повторяет циклы работы до тех пор, пока не выполнится условие остановки</b>. Разница между типами циклов Anthropic выводит из четырёх вещей: что запускает цикл, что его останавливает, какая примитивная команда Claude Code используется и для каких задач это подходит.</p><h2>Что такое loop в Claude Code</h2><p>Если коротко, loop — это способ переложить на агента не отдельную команду, а <b>повторяющийся процесс</b>. Сначала агент получает или собирает контекст, потом действует, проверяет результат и либо останавливается, либо начинает следующую итерацию. Человек при этом отвечает не за каждый шаг, а за то, чтобы правильно описать условие остановки, проверку качества и триггер запуска.</p><p>Для российских разработчиков, которые часто запускают Claude Code на удалённом сервере по SSH, это особенно удобно: можно настроить цикл, который работает, пока вы спите, и присылает отчёт утром в Telegram или Slack. Главное — не забыть про лимиты токенов, потому что неограниченный цикл способен съесть месячный бюджет за одну ночь.</p><p>Claude Code предлагает четыре типа loops: turn-based, goal-based, time-based и proactive.</p><p>Каждый цикл характеризуется триггером, условием остановки и подходящей командой: ручной prompt, /goal, /loop//schedule или автоматическая рутина.</p><p>Качество результата зависит от проверочных навыков (SKILL.md) и чистоты кодовой базы, а не только от самого цикла.</p><p>Чтобы не переплачивать за токены, важны чёткие критерии завершения, ограничение по числу итераций и правильный выбор модели.</p><p>Начинать стоит с простейшего цикла и добавлять сложность только там, где ручная работа реально становится узким местом.</p><h2>Четыре типа циклов</h2><h3>Turn-based: ручной цикл</h3><p>Самый простой и самый знакомый вид. Пользователь отправляет prompt, Claude собирает контекст, вносит правки, запускает тесты и возвращает результат. После этого человек проверяет работу и пишет следующий prompt. Каждый такой оборот — это один turn.</p><p>По мнению команды Claude Code, здесь ключевой рычаг — не более длинный prompt, а <b>проверочный SKILL.md</b>. Если вы обычно вручную открываете dev-сервер, кликаете по новой кнопке, проверяете консоль и запускаете Lighthouse, эти шаги стоит записать в skill. Чем более количественные проверки вы зададите, тем чаще Claude сможет сам понять, что задача выполнена.</p><h3>Goal-based: цикл с целью через /goal</h3><p>Когда задача сложная и одного оборота недостаточно, помогает команда /goal. Вы явно описываете критерий успеха и максимальное число попыток. Каждый раз, когда Claude хочет остановиться, оценочная модель проверяет условие: если цель не достигнута — агент возвращается к работе.</p><p>Чем более детерминирован критерий, тем лучше. «Сделай хорошо» — плохая цель. «Добейся Lighthouse Performance ≥ 90, не более 5 попыток» — хорошая. То же самое работает для числа пройденных тестов, покрытия кода или отсутствия ошибок линтера.</p><h3>Time-based: цикл по расписанию /loop и /schedule</h3><p>Некоторые задачи не требуют вашего присутствия: утренняя сводка по Slack, проверка PR на ревью, мониторинг CI. Для таких случаев есть /loop: команда повторяет prompt через заданный интервал, пока вы её не отмените или пока работа не закончится.</p><p>/loop работает на вашем компьютере, поэтому при выключении терминала цикл остановится. Если нужно, чтобы агент работал в облаке даже с закрытым ноутбуком, используется /schedule — эта команда создаёт рутину, которая запускается по расписанию на серверах Anthropic (research preview).</p><h3>Proactive: проактивные рутины</h3><p>Проактивные циклы объединяют всё вышеперечисленное: /schedule для запуска по событию или расписанию, /goal для критерия готовности, skills для проверки, dynamic workflows для параллельной обработки и auto mode, чтобы цикл не останавливался на каждом разрешении.</p><p>Типичный сценарий: обработка входящих баг-репортов. Рутина каждый час проверяет канал обратной связи, триажирует каждую заявку, чинит баг, прогоняет тесты и отвечает пользователю. Для сложных случаев можно параллельно исследовать несколько решений в разных worktrees и поручить «судейскому» агенту выбрать лучшее.</p><h2>Как не потерять качество кода</h2><p>Автономность без контроля качества быстро превращается в генерацию мусора. В гайде Anthropic выделяет четыре опоры, на которых держится качество loop:</p><ul><li><b>Чистая кодовая база.</b> Claude копирует паттерны, которые уже есть в проекте. Если в репозитории хаос, агент будет его множить.</li><li><b>Проверочные skills.</b> SKILL.md должен содержать конкретные шаги, инструменты и критерии, по которым Claude сам оценивает результат.</li><li><b>Актуальная документация.</b> Фреймворки и библиотеки меняются, и агенту нужны свежие best practices.</li><li><b>Второй агент для ревью.</b> Проверяющий со свежим контекстом менее предвзят, чем основной агент. Можно использовать встроенный /code-review или Code Review for GitHub.</li></ul><p>Важный совет: когда отдельный результат не дотягивает до стандарта, не исправляйте только конкретный случай — закодируйте правило в skill или CLAUDE.md, чтобы все будущие итерации работали лучше.</p><h2>Как не сжечь бюджет на токенах</h2><p>Loops — это не бесплатная автоматизация. Каждый оборот стоит денег, а неосторожная proactive-рутина может породить сотни параллельных подагентов. В гайде перечислены шесть способов держать расходы под контролем:</p><ul><li>Выбирайте подходящий примитив и модель: мелкие задачи не нуждаются в сложных оркестрациях.</li><li>Формулируйте чёткие критерии завершения: конкретнее цель — меньше лишних итераций.</li><li>Запускайте пилот на малой выборке перед массовым прогоном.</li><li>Используйте скрипты для детерминированной работы: запуск готового скрипта дешевле, чем рассуждение модели.</li><li>Не запускайте рутины чаще, чем меняется объект мониторинга.</li><li>Регулярно смотрите /usage, /goal без аргументов и /workflows, чтобы видеть, куда уходят токены.</li></ul><h2>С чего начать</h2><p>Авторы гайда предлагают не начинать с proactive-рутин, а посмотреть на свою повседневную работу и найти одно место, где вы сами являетесь узким звеном. Задайте три вопроса:</p><ul><li>Могу ли я описать проверку результата так, чтобы Claude мог сам её выполнить?</li><li>Достаточно ли чётко я понимаю, что значит «готово»?</li><li>Эта работа приходит по расписанию или в ответ на внешние события?</li></ul><p>Если ответ на первый вопрос «да» — начните с turn-based цикла и проверочного skill. Если на второй — попробуйте /goal. Если на третий — /loop или /schedule. Запустите цикл, понаблюдайте, где он застревает или перегибает палку, и дорабатывайте harness, а не только prompt.</p><h2>Сводка: какой цикл когда использовать</h2><h2>FAQ</h2><h2>Выводы</h2><p>Гайд Anthropic — не просто описание четырёх команд. Это попытка дать разработчикам общий язык для обсуждения того, как ИИ-агенты переходят из разряда «помощников в чате» в разряд «автономных рабочих процессов». Turn-based, goal-based, time-based и proactive loops — это не конкуренты, а ступени одной эволюции: от ручного управления каждым шагом к проектированию систем, которые управляют сами собой.</p><p>Главная метафора, которую стоит уносить с собой: ваш вклад перестаёт измеряться качеством очередного prompt, а начинает измеряться качеством <b>harness</b> — системы проверок, остановок и триггеров. Если вы ещё не пробовали /goal или /loop, начните с одной повторяющейся задачи на этой неделе. Скорее всего, вы удивитесь, как много ручной работы можно отдать циклу.</p><blockquote>I don't prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. My job is to write loops.</blockquote><p><b>Источники:</b></p><ul><li><a href="https://claude.com/blog/getting-started-with-loops">Getting started with loops — официальный гайд Anthropic</a></li><li><a href="https://x.com/ClaudeDevs/status/2074208949205881033">@ClaudeDevs on X</a></li><li><a href="https://addyosmani.com/blog/loop-engineering/">Loop Engineering — Addy Osmani</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Почему классический CI/CD не справляется с LLM (и какие release gates мы построили, чтобы это исправить)</title>
      <link>https://tproger.ru/translations/pochemu-klassicheskij-ci-cd-ne-spravlyaetsya-s-llm-i-kakie-release</link>
      <comments>https://tproger.ru/translations/pochemu-klassicheskij-ci-cd-ne-spravlyaetsya-s-llm-i-kakie-release?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/pochemu-klassicheskij-ci-cd-ne-spravlyaetsya-s-llm-i-kakie-release</guid>
      <description><![CDATA[<p>Перевод статьи о том, почему классические CI/CD-ворота не ловят тихие регрессии в LLM и как baseline-оценки, детектирование дрейфа, shadow-проверки и бюджеты предотвращают инциденты.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/pochemu-klassicheskij-ci-cd-ne-spravlyaetsya-s-llm-i-kakie-release">Почему классический CI/CD не справляется с LLM (и какие release gates мы построили, чтобы это исправить)</a>»</p>]]></description>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 04 Jul 2026 13:30:40 GMT</pubDate>
      <content:encoded><![CDATA[<p>Перевод статьи Freddy Daniel Alvarez Pinto из The New Stack, оригинал: <a href="https://thenewstack.io/why-cicd-fails-llms/" rel="noopener noreferrer">https://thenewstack.io/why-cicd-fails-llms/</a>.</p><p>Эта статья объясняет, почему классических CI/CD-ворот недостаточно для production-систем на базе ИИ. Автор делится практическим подходом к release gates для LLM-пайплайнов с помощью baseline-оценок, детектирования дрейфа, shadow-проверок и ограничений по стоимости и латентности. Акцент — на профилактике: отлов тихих AI-регрессий до того, как они достигнут пользователей, на основе реальных уроков платформенной инженерии из production-инфраструктуры.</p><p>В пятницу днём я задеплоил обновлённый RAG-пайплайн. Все оценки прошли, оценки сходства выглядели отлично, а к утру понедельника система уверенно рекомендовала устаревшие цены, потому что embedding-модель дрейфовала настолько, что предпочитала старые чанки свежим. Ни один алерт не сработал, ни один тест не упал, дашборд был зелёным, а выходные данные — мусором.</p><p>В тот момент я перестал доверять зелёному цвету как сигналу к релизу. У нас не было проблемы с деплоем. У нас была проблема с release gates. Классический CI/CD создавался для детерминированного ПО. LLM — вероятностны. Наши ворота тоже должны быть вероятностными.</p><p>Классические CI/CD-ворота работают по принципу pass/fail, но LLM поставляют поведение, а не только код, поэтому нужны ворота, отслеживающие дрейф поведения.</p><p>Три режима отказа: eval drift (постепенная деградация оценок), distribution shift (реальные запросы отличаются от тестовых) и context poisoning (изменились извлечённые документы, а тесты спрашивают вчерашнее).</p><p>Четыре release gates: baseline eval suite, eval drift detection, shadow traffic validation, cost/latency guardrails.</p><p>Ворота должны быть простыми и понятными команде, иначе инженеры начнут их обходить.</p><p>Eval-датасеты нужно версионировать так же тщательно, как Terraform state: с бэкапами и параноей.</p><h2>Почему классический CI/CD не справляется с LLM-пайплайнами</h2><p>В обычной доставке ПО ворота достаточно просты: unit-тесты прошли, интеграционные тесты прошли, проверки безопасности прошли — деплой. Это бинарно. Сборка зелёная или красная. Эта модель ломается, когда вы поставляете не код, а поведение.</p><blockquote>Классический CI/CD создавался для детерминированного ПО. LLM — вероятностны. Наши ворота тоже должны быть вероятностными.</blockquote><p>Production-система на базе ИИ может сегодня показывать relevance 0,82, завтра 0,79, а на следующей неделе 0,74. Поскольку ни один запуск не пересекает порог отказа, никого не пейджат, хотя пользователи уже получают худшие ответы.</p><p>Я больше 20 лет управлял production-инфраструктурой: приватными облаками OpenStack, миграциями баз данных, CI/CD-пайплайнами и mission-critical системами. В классическом DevOps мы усвоили: сервер, который сообщает о 99,9% аптайма при потере 0,1% финансовых транзакций, — не здоров. Он скрывает баг. Оценки LLM работают так же. Агрегированные метрики маскируют локальные отказы.</p><p>Первый режим отказа — eval drift: оценки деградируют постепенно, но недостаточно, чтобы упасть по жёсткому порогу. Второй — distribution shift: реальные пользователи задают короткие, беспорядочные, странные вопросы, о которых ваш чистый eval-датасет и не думал. Третий — context poisoning: ваши извлечённые документы изменились, а тесты всё ещё спрашивают вчерашние вопросы.</p><p>Традиционный CI/CD gate спрашивает: «Тест прошёл?» LLM release gate спрашивает: «Поведение осталось в допустимом диапазоне?» Обычный gate сравнивает ожидаемый вывод с фактическим. AI CI/CD gate сравнивает кандидатное поведение с историческим и production-поведением, а также со стоимостью, латентностью и риском. Традиционные ворота быстро отсеивают исключения. LLM release gates внимательно отсекают дрейф.</p><blockquote>Традиционные ворота быстро отсеивают исключения. LLM release gates внимательно отсекают дрейф.</blockquote><p>Это различие важно, потому что production AI-системы гниют, а не взрываются. Я создал llm-eval-drift-release-gates-AGENT, потому что хотел ворота, которые относятся к AI-релизам как к инфраструктурным релизам: измеримым, повторяемым и, по возможности, скучным. Скука недооценена. Она позволяет инженерам спать.</p><h2>Анатомия LLM release gate</h2><p>Первое ворото — baseline eval suite. Он прогоняет фиксированный датасет по кандидатному пайплайну и оценивает relevance, faithfulness, safety, groundedness и любые доменные проверки, которые вам важны. Цель не в том, чтобы доказать, что модель идеальна. Цель — поймать регрессии до того, как они станут историями от клиентов.</p><p>Вот упрощённая Python-структура из паттерна, который я использую:</p><p>Использование StrEnum сохраняет enum в виде строк без множественного наследования. Это важно в релизном инструментарии, потому что значения статусов часто логируются, сериализуются, сравниваются в CI или передаются в дашборды.</p><p>Это ловит очевидные отказы: коллапс relevance, падение faithfulness, небезопасные выходы или искажённые результаты оценщика. Если отказ жёсткий, пайплайн блокируется немедленно; если срабатывает предупреждение, требуется ручное одобрение. Мне не нравятся тихие предупреждения: это будущие инциденты в хорошей рубашке.</p><h3>Второе ворото: детектирование дрейфа оценок</h3><p>Второе ворото — детектирование дрейфа оценок. Фиксированного порога недостаточно. Если relevance падает с 0,91 до 0,86, ваш порог 0,80 говорит, что всё в порядке. Ваши пользователи могут не согласиться.</p><p>Поэтому я сравниваю текущие оценки с rolling baseline из недавних деплоев:</p><p>Eval suite обнаружил 6% падение relevance в 23:00 в четверг. Без него это падение достигло бы 200 пользователей к понедельнику. Ворото не знало бизнес-контекста. Ему это и не нужно. Оно знало, что кандидат хуже последнего известного хорошего релиза.</p><h3>Третье ворото: shadow traffic validation</h3><p>Третье ворото — shadow traffic validation. Перед полным раскатом я направляю небольшой процент реального трафика на кандидатный пайплайн. Пользователи всё ещё получают production-ответ, но система записывает кандидатный вывод для сравнения.</p><p>Это canary-deployment, применённый к ИИ. Я использовал тот же паттерн в инфраструктурных раскатах, включая идеи из моего репозитория eks-canary-deployment-pipeline. Разница в том, что для LLM вы сравниваете не только HTTP 200. Вы сравниваете качество ответа, извлечённый контекст, латентность и причины, по которым кандидат расходится с production подозрительным образом.</p><p>Judge-модель может быть полезна, но я не даю ей быть единственным авторитетом. Она даёт сигнал. Release policy принимает решение.</p><h3>Четвёртое ворото: стоимость и латентность</h3><p>Четвёртое ворото — стоимость и латентность. Модель, которая идеально оценивается, но стоит в 3 раза дороже, — не валидный релиз. RAG-пайплайн, который добавляет две секунды латентности, тоже не готов. Эта же логика легла в основу моей работы enterprise-rag-guardrails-costops.</p><p>Когда это ворото не проходит, система блокирует релиз или направляет его на ручное одобрение. Я научился не торговаться о латентности во время деплоя. Она всегда побеждает позже.</p><p>Эти четыре ворота не делают деплой LLM идеальным. Они делают сложнее поставку бессмыслицы под зелёным бейджем.</p><h2>Как встроить это в существующий CI/CD</h2><p>Release gate не должен быть отдельным научным проектом. Если ваша платформенная команда уже использует GitHub Actions или GitLab CI, LLM-пайплайн деплоя должен вписаться в этот workflow.</p><p>Паттерн намеренно скучный:</p><p>Такую форму я расширил из своей работы devsecops-pipeline-github-actions. Соберите приложение. Запустите детерминированные тесты. Запустите baseline eval suite. Сравните с rolling baselines. Провалидируйте на shadow-трафике. Проверьте бюджеты стоимости и латентности. Деплойте, только когда все ворота согласны.</p><p>Здесь guardrails MLOps становятся полезны платформенным инженерам. Вам не нужна отдельная религия деплоя. Вам нужен один дополнительный набор проверок внутри пайплайна, которому команда уже доверяет.</p><p>Вот небольшая Python-точка входа, которую можно вызывать из CI. Важная деталь: она падает аккуратно, когда нужные отчёты отсутствуют или искажены, потому что сырые stack trace — не стратегия релиза.</p><p>Лучший release gate — тот, которым команда реально пользуется. Если для настройки нужна PhD по ML, это не ворота. Это стена. Я сейчас получаю степень PhD в области безопасности облачных вычислений, и даже я не хочу процесс деплоя, которому каждую пятницу нужна диссертация. Ворота должны быть достаточно простыми, чтобы запускаться в CI, достаточно строгими, чтобы блокировать плохие релизы, и достаточно гибкими, чтобы не стать офисным украшением.</p><p>Последняя часть далась мне дольше, чем хотелось бы признать.</p><h2>Ошибки, которые я совершил, и что бы сделал иначе</h2><p>Моя первая версия была болезненно строгой. Каждый деплой блокировался. Eval suite жаловался на мелкие изменения формулировок, безобидные различия форматирования и пограничные падения оценок. Команда начала обходить ворота полностью. Это была моя вина.</p><p>Ворота, которые блокируют всё, хуже, чем никаких ворот. По крайней мере, без ворот люди знают, что рискуют. С плохими воротами они учатся игнорировать систему.</p><blockquote>Ворота, которые блокируют всё, хуже, чем никаких ворот. С плохими воротами люди учатся игнорировать систему.</blockquote><p>Моя вторая ошибка — оценивать только на синтетических запросах. Они были чистыми, полными и вежливыми. Реальные пользователи такими не бывают. Реальные пользователи печатают три слова, ошибаются в названиях продуктов, вставляют фрагменты и ожидают, что система поймёт контекст, который они не дали.</p><p>Оценки выглядели отлично. Production — нет.</p><p>Моя третья ошибка — не версионировал eval-датасет. Когда я добавлял новые крайние случаи, я терял возможность сравнивать старые релизы с новыми baselines. Теперь я версионирую eval-наборы так же, как версионирую Terraform state: внимательно, с бэкапами и с лёгкой паранойей.</p><p>Строить это из Кочабамбы, Боливия, тоже повлияло на дизайн. У меня не было неограниченных облачных кредитов на огромные eval-прогоны. Это заставило оптимизировать сэмплирование, кешировать вызовы judge-модели и разделять быстрые PR-проверки от более тяжёлых ночных.</p><p>Ограничения рождают лучшую инженерию. Раздражает, но правда.</p><h2>Отправляйте уверенность, а не только код</h2><p>В классическом ПО мы поставляем код и проверяем поведение. В ИИ мы поставляем поведение и проверяем соответствие. Release gates — это то, как мы закрываем этот разрыв.</p><p>LLM release gates не уберут неопределённость из production AI-систем. Ничто не уберёт. Но они дают платформенным командам практический способ поймать eval drift, distribution shift, context poisoning, скачки стоимости и регрессии латентности до пользователей.</p><p>Это важно для надёжности агентных workflow. Это важно для AI CI/CD. Это важно, потому что «все тесты прошли» больше не достаточно.</p><p>Я создал llm-eval-drift-release-gates-AGENT, потому что устал от зелёных пайплайнов, которые мне лгали. Репозиторий — open-source, offline-first референсная реализация этого паттерна release gates. Он намеренно достаточно мал, чтобы изучить, запустить, сломать и ужесточить в своём CI/CD.</p><p>Репозиторий: <a href="https://github.com/fdaniel-alvarez-dev/llm-eval-drift-release-gates-AGENT" rel="noopener noreferrer">https://github.com/fdaniel-alvarez-dev/llm-eval-drift-release-gates-AGENT</a>. Форкайте, ломайте, улучшайте. Худший release gate — тот, который вы никогда не построили.</p><h2>Выводы</h2><p>Классический CI/CD создавался для детерминированного ПО, а LLM — вероятностны. Поэтому release gates для ИИ должны отслеживать не только прохождение тестов, но и дрейф поведения: baseline-оценки, детектирование дрейфа, shadow-трафик, стоимость и латентность.</p><p>Ворота должны быть простыми, понятными и настраиваемыми. Их задача — не идеальная модель, а предотвращение тихих регрессий, которые иначе достигнут пользователей. Версионируйте eval-датасеты, проверяйте на реальном трафике и не забывайте про бюджеты. Так вы сможете доверять зелёному цвету пайплайна снова.</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему сеньоры не могут донести свою экспертизу</title>
      <link>https://tproger.ru/articles/pochemu-senory-ne-mogut-donesti-svoyu-ekspertizu</link>
      <comments>https://tproger.ru/articles/pochemu-senory-ne-mogut-donesti-svoyu-ekspertizu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лесных Анна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pochemu-senory-ne-mogut-donesti-svoyu-ekspertizu</guid>
      <description><![CDATA[<p>Быстрый выпуск фичей против обеспечения стабильности продукта — вечный конфликт на стыке бизнеса и разработки. В статье — о том, как senior-разработчику вести коммуникацию с коллегами и применять свой опыт в таких условиях.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pochemu-senory-ne-mogut-donesti-svoyu-ekspertizu">Почему сеньоры не могут донести свою экспертизу</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Product Development]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 03 Jul 2026 05:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p><i>От переводчика: перед вами — перевод статьи Тухина Наира <a href="https://www.nair.sh/guides-and-opinions/communicating-your-expertise/why-senior-developers-fail-to-communicate-their-expertise">«Why Senior Developers Fail to Communicate Their Expertise»</a>. Автор раскрывает кажущееся противоречие двух главных задач бизнеса — быстро выводить новые фичи на рынок и обеспечивать бесперебойную работу ИТ-продукта. Он описывает вызовы, с которыми в такой системе сталкивается senior-разработчик, и определяет стратегию, с помощью которой разработчик может одновременно решать обе этих задачи. Передаём слово автору.</i></p><p>Что вы скажете о следующем утверждении?</p><blockquote>«Будущее разработки ПО — за ИИ-агентами. Нам больше не нужны разработчики, которые тормозят развитие бизнеса»</blockquote><p>Если вы сеньор и согласны с этим, я начинаю сомневаться в вашей компетентности (потом объясню почему; тут нет никакой враждебности). Но если вы не сеньор и согласны с этим, то, думаю, вы, скорее всего, правы. Что? Как так? Суть копирайтинга в том, чтобы донести идею до конкретной аудитории. Поэтому для меня, как копирайтера, происходящее очевидно: одно и то же послание всеми воспринимается по-разному.</p><p>Вы сеньор и уже наигрались с агентами, моделями и другими умопомрачительными новинками, но интуиция вам подсказывает, что в разговорах об устаревании вашей работы есть какой-то подвох? В этой статье я постараюсь выразить ваше предчувствие словами (что и должен делать хороший копирайтер).</p><p>Но минуточку! Многие заслуженные и знаменитые разработчики тоже провозглашают смерть своей профессии. Как же так? Чья интуиция тут права? И в чём причина такого противоречия?</p><h2>Задача сеньора — избегать проблем</h2><p>Когда я прихожу в команду, то встречаю два типа сеньоров. Первый обычно говорит что-то в духе:</p><ul><li>«Я тут новый прикольный инструмент нашёл…»</li><li>«А вот в компании &lt;название компании, не имеющей с нашей ничего общего&gt; делают вот так, так что…»</li><li>«Гляньте пост, там пишут, что это — лучшая практика, нам бы тоже стоило…»</li></ul><p>Мне такой тип сеньоров не близок. Склонны к самозащите, давно в индустрии, скорее всего, приятны в общении. Но просто не мой тип людей.</p><p>А есть и другой тип сеньора:</p><ul><li>«Нам это правда нужно?»</li><li>«А что, если этого не делать?»</li><li>«Может, пока так оставим? Вернёмся к этому позже, когда прижмёт?»</li></ul><p>О, а вот это мой человек! Эксперт по избеганию, сокращению и повторному использованию. Он хочет как можно меньше заниматься разработкой.</p><p>Почему? Потому что в профессиональной разработке они ведут охоту на главного монстра — <b>сложность</b>. Особые случаи, if-условия, новые таблицы в БД, новые компоненты — всё это ужасно. Сеньор стремится к минимуму всего этого, кучу времени думая о том, действительно ли новый код так нужен. Ведь добавлять что-то в систему — значит усложнять её.</p><p>Разумеется, это упрощённый взгляд. Есть сеньоры, которые берутся за нерешённые задачи и находят новые творческие решения. И у них это выходит замечательно. Но в итоге, если на тебе лежит ответственность за работающую систему, ты начинаешь бояться сложности. Почему? Чем плоха сложность? И почему остальные этого не понимают?</p><h2>Бизнес боится неопределённости</h2><p>Давайте для простоты представим бизнес в виде двух циклов.</p><p>Вот первый цикл; здесь живут маркетологи, продажники, продакт-менеджеры, гендиректор:</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/608e8083-fb17-4f53-bfda-b5ea2f0558a0.webp" alt="" /><figcaption>Первый цикл бизнеса: маркетологи, отдел продаж, продакт-менеджеры и CEO выводят идеи на рынок, а затем учитывают полученные уроки в следующей итерации</figcaption></figure><p>Главная цель этого цикла — пробовать и учиться. Бизнес стремится выводить продукты на рынок, чтобы получить фидбэк и понять, представляют ли они какую-либо ценность.</p><p>Для людей в этом цикле главный монстр — неопределённость. Неопределённость жестока, ведь ни одна стратегия не даёт гарантий. Если добавить сюда фактор времени (зарплаты маркетологов/продажников, фонд оплаты труда основателей или данные для продактов), начинает казаться, что единственный способ победить неопределённость до дедлайна — это выкатывать всё на рынок как можно быстрее. Чем больше ты выводишь на рынок, тем больше получаешь обратной связи, тем сильнее (в теории) снижаешь неопределённость.</p><p>Этот цикл (все компании с него начинают) — это про скорость в чистом виде.</p><p>Но что происходит, когда у бизнеса появляются клиенты?</p><h2>Сеньорам крайне важна стабильность</h2><p>Обратите внимание на второй цикл. Клиенты платят за сервис.</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/d6b5b006-77a2-4d38-a2b6-ee5c864d4190.webp" alt="" /><figcaption>Второй цикл бизнеса: клиенты платят и пользуются сервисом, а команда в это время поддерживает его работу</figcaption></figure><p>Именно в этом цикле и вращаются многие сеньоры. Главная цель здесь — обеспечить непрерывную работу сервиса. Чтобы всё крутилось, всё было понятно, всё можно было отладить, всё можно было починить, всему можно было научить, чтобы всё было стабильно.</p><p>Сеньоры переживают за стабильность, потому что на них лежит ответственность за то, чтобы бизнес продолжал обслуживать клиентов.</p><p>А что ставит всё это под угрозу? Сложность. Из-за неё система становится менее понятной, её тяжелее отлаживать, чинить и объяснять, и в итоге она становится менее стабильной. Растёт сложность = падает стабильность = сеньор не справляется со своими обязанностями = всем плохо, платежи не проходят, все грустят.</p><p>Итак, если цель первого цикла — уменьшить неопределённость, то цель второго — совладать со сложностью.</p><p>Но почему это ведёт к провалу в коммуникации? Потому что когда у вас появляются клиенты, то оба цикла работают одновременно. Бизнесу нужно одновременно и искать новые возможности, и обслуживать клиентов.</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/b4a3a33c-a3d1-4cc5-a7a9-7273d250759e.webp" alt="" /><figcaption>Два цикла бизнеса работают одновременно: один гонится за фидбэком с рынка, другой поддерживает сервис для платящих клиентов</figcaption></figure><p>Окей, теперь вы, наверное, догадываетесь, к какому ответу на заглавный вопрос я веду.</p><p>В зависимости от того, в каком цикле вы работаете, ваша проблема видится под разными углами (вот почему, на мой взгляд, разработчики так по-разному смотрят на ИИ: одни больше задействованы в первом цикле, другие — во втором).</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/ee156f85-597d-4592-99aa-8084b9a0e93d.webp" alt="" /><figcaption>Иллюстрация того, как одна и та же задача по разработке выглядит по-разному для людей из разных циклов — неопределённость против сложности</figcaption></figure><p>Вот как выглядит история для людей из первого цикла:</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/ff426d63-d5de-43eb-9d73-c18a69d9d2b3.webp" alt="" /><figcaption>Запросы сыплются один за другим, команда наперегонки выкатывает решения на их основе, чтобы бизнес быстрее учился на реакции рынка</figcaption></figure><p>А вот как выглядит история для сеньора из второго цикла:</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/72b58c3a-b212-43c0-b910-a472c41ba4f8.webp" alt="" /><figcaption>Каждый новый запрос увеличивает сложность, что угрожает стабильности системы, за которую отвечает сеньор</figcaption></figure><p>И они не совпадают! Чем больше сеньору прилетает задач по доработке системы, тем чаще ему хочется возразить: «Ну нет… Это же сложность, затраты на поддержку, читаемость кода, скорость будущей разработки, общая продуктивность…» Но это совершенно не помогает бизнесу справиться с его главной задачей — уменьшить неопределённость.</p><p><b>Диагноз копирайтера:</b> нельзя отмахнуться от чужой проблемы, прикрываясь своими.</p><p><b>И его рецепт:</b> преподносите своё решение так, чтобы оно решало <i>и их проблему тоже</i>.</p><p>Проблема в общении у сеньоров возникает потому, что они говорят о своих трудностях на языке управления сложностью, а должны были бы предлагать решения на языке снижения неопределённости. Как только сеньор поймёт, что остальная часть компании ищет способы снизить неопределённость, он сможет по-настоящему раскрыть свой опыт.</p><p>А в чём главный скилл сеньор-разработчика? В умении не делать лишнего и вовремя замечать, где можно переиспользовать то, что уже готово.</p><ul><li>Нужно провести опрос? Для этого есть Google Forms.</li><li>Нужно запилить новую фичу, чтобы проверить гипотезу? А что, если просто добавить кнопку в существующий интерфейс и посмотреть, кликают ли на неё?</li><li>Нужен новый сервис аналитики? А для какого такого важного решения эта аналитика нам нужна? Может, начнём с одного решения, одного графика и одной метрики?</li><li>Зачем печь огромный торт? Просто воткни свечку в мой бутерброд!</li></ul><p>Именно это и есть искусство сеньора: научиться давать людям желаемое, проявляя изобретательность с уже имеющимся софтом.</p><p>Но как объяснить это, не расписывая целые поэмы? Копирайтеры — мастера упаковывать сложные идеи в лаконичные формы. И вот та самая волшебная фраза, которую стоит выучить каждому сеньору:</p><blockquote>Может, попробуем какой-нибудь способ побыстрее?</blockquote><p>Слово «побыстрее» показывает, что вы понимаете их главный запрос; «какой-нибудь» намекает, что есть другой путь; «попробуем» предполагает, что решение может быть неидеальным, но вполне рабочим. Эта фраза идеально попадает в потребность бизнеса (скорость для снижения неопределённости) и в то же время оставляет сеньору пространство для манёвра: сократить, переиспользовать, а в лучшем случае — вообще ничего не делать.</p><p>Вот и всё. Это и есть мой ответ на вопрос в заголовке: сеньоры мыслят категориями сложности, когда всех вокруг волнует неопределённость.</p><p>Но! Есть огромное «но»! Кажется, что с приходом ИИ всё это теряет смысл, верно? Зачем что-то урезать? Зачем переиспользовать? Зачем избегать? Ведь ИИ может написать кучу всего за минимальное время. Однако он пока не умеет делать то, что по-прежнему делают сеньоры. <b>Нести ответственность.</b></p><h2>Почему сеньоры — это редакторы, а не писатели</h2><p>Для сеньора очень важно глубоко понимать систему. Такое понимание даёт возможность чинить её, когда что-то идёт не так, и продуманно расширять по мере роста. Но самое главное — это позволяет стабильно и без сбоев обслуживать клиентов, которые платят за продукт.</p><p>ИИ угрожает этой прозрачности. Он ускоряет выпуск фич на рынок, но бьёт по второму контуру — зоне ответственности сеньоров. Когда у вас код пишут ИИ-агенты, джуны, не-разработчики, инвесторы и их дальние знакомые, вы получаете систему, которая чрезмерно сфокусирована на скорости в ущерб стабильности.</p><p>Так изначально выглядят два бизнес-контура:</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/b3b70187-6e9e-496b-83b1-3f8345a878f7.webp" alt="" /><figcaption>Два цикла бизнеса работают одновременно: один гонится за фидбэком с рынка, другой поддерживает сервис для платящих клиентов</figcaption></figure><p>А вот как ИИ на них влияет:</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/09121f00-be04-42e2-9570-323ea00b662b.webp" alt="" /><figcaption>ИИ ускоряет первый контур, одновременно дестабилизируя второй, — дополнительная скорость достигается ценой понятности и стабильности</figcaption></figure><p>О какой стабильности может идти речь? ИИ — дестабилизатор. Он ухудшает понятность, возможность починки, отладки, обучения, предоставления гарантий. При этом ИИ <i>ни за что не отвечает</i>. Так себе история. И это главная боль сеньора, от которой все просто отмахиваются.</p><p>К счастью, у сеньоров есть пара козырей в рукаве. Один из них — decoupling (разделение). Долгое время только разработчики могли создавать софт. И они отвечали сразу за оба контура.</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/86b44789-aea3-41e8-ad9f-a34a9ad76456.webp" alt="" /><figcaption>Единая программная система, которая исторически поддерживала оба контура, при этом разработчики отвечали одновременно и за скорость, и за стабильность</figcaption></figure><p>Одна система на две цели.</p><p>А что, если у нас будут две системы, каждая для своей цели?</p><p>Аналогия: писатель торопится закончить первый черновик (его ещё называют «черновик потока сознания» — vomit draft), а потом выбирает из него то, что работает, и выбрасывает остальное. После быстрого набрасывания текста идёт редактура. Работа редактора — взять удачные куски и собрать из них что-то цельное.</p><p>Что, если сделать одну систему чисто для скорости? В ней бы работали все, кто отвечает за быстрый запуск идей: ИИ-агенты, наш собственный сгенерированный код без ревью, джуны, маркетинг и так далее. Назовём её Speed-версией системы. Она не должна быть прозрачной, её задача — сделать «достаточно хорошо», чтобы выкатить на рынок и собрать фидбэк.</p><p>И что, если бы у нас была вторая система, нацеленная на стабильность? Назовём её Scale-версией. Её проектируют сеньоры, и она должна быть стабильной, понятной и масштабируемой.</p><p>Speed-версия позволяет бизнесу быстро учиться на реакции рынка, пока сеньоры не спеша строят «чистовую» версию системы — выверенную и понятную. К тому же дизайн Scale-версии напрямую зависит от того, какие решения из Speed-версии оказались удачными, а какие — нет.</p><figure><img src="https://media.tproger.ru/user-uploads/115839/2026-06-24/c44cc531-4e55-4fcd-ac51-3b34157ab2c4.webp" alt="" /><figcaption>Предлагаемое разделение: Speed для быстрого изучения рынка и Scale, стабилизируемая сеньорами, работающими «за ней»</figcaption></figure><p>Фичи создаются в Speed-версии, а затем доводятся до стабильного состояния в Scale-версии.</p><p>Как это будет выглядеть на практике, может быть, не до конца ясно, но основная идея состоит в том, чтобы добиться чётко оговорённого разделения (decoupling), которое покажет: одно дело — гнаться за скоростью, и совсем другое — обеспечивать стабильность.</p><p>Представьте, что вас просят запилить нечто амбициозное, и вы отвечаете: «Без проблем, Speed-версия будет готова через 3 дня, Scale-версия — недель через 6». Они получают желаемое — скорость и движение вперёд. Вы получаете желаемое — время на изучение и проектирование. Как вам? Что скажете, сеньор-разработчики? Или мне стоит называть вас сеньор-редакторами?</p>]]></content:encoded>
    </item>
    <item>
      <title>GitLab представила концепцию agentic infrastructure</title>
      <link>https://tproger.ru/news/gitlab-predstavila-koncepciyu-agentic-infrastructure</link>
      <comments>https://tproger.ru/news/gitlab-predstavila-koncepciyu-agentic-infrastructure?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/gitlab-predstavila-koncepciyu-agentic-infrastructure</guid>
      <description><![CDATA[<p>GitLab опросила 1500 разработчиков: 78% пишут код быстрее с ИИ, но продуктивность растёт только в редакторе. Разбираем, почему нужна agentic infrastructure.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/gitlab-predstavila-koncepciyu-agentic-infrastructure">GitLab представила концепцию agentic infrastructure</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[Новости]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[GitLab]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 25 Jun 2026 07:55:10 GMT</pubDate>
      <content:encoded><![CDATA[<p>Скорость генерации кода ИИ-агентами уже не впечатляет: 78% команд в опросе GitLab пишут и коммитят быстрее, но продуктивность растёт только внутри редактора. За пределами генерации кода выигрыш чувствуют лишь 21% респондентов. Следующий фронт — управление этим кодом.</p><p>GitLab опубликовала отчёт на основе опроса более чем 1500 разработчиков и технологических лидеров. 60% заявили, что ROI инструментов ИИ-кодирования уже превзошёл ожидания. Однако 80% организаций внедрили ИИ быстрее, чем выработали политики управления, а 82% опасаются, что ИИ-код порождает новый технический долг.</p><ul><li>60% считают ROI ИИ-кодирования выше ожиданий.</li><li>78% команд пишут и коммитят код быстрее.</li><li>Только 21% видят продуктивность за пределами генерации кода.</li><li>85% считают, что следующий этап — управление ИИ-кодом, а не его генерация.</li><li>Agentic infrastructure состоит из четырёх слоёв: исполнение, контекст, управление и оркестрация.</li></ul><p>Проблема в том, что современная инфраструктура создана под человеческую скорость и подотчётность. Git-бекенды, CI/CD, системы деплоя и governance-фреймворки не рассчитаны на миллионы сессий агентов. Это ведёт к деградации надёжности платформ, росту уязвимостей и перерасходу токенов.</p><h2>Четыре слоя agentic infrastructure</h2><h3>1. Исполнение в машинном масштабе</h3><p>Git-бекенды, пайплайны CI/CD и системы деплоя проектировались под темпы человеческой работы. В эпоху агентов они должны выдерживать миллионы сессий без сбоев. Когда инцидент случается в продакшене, путь от симптома к причине должен занимать минуты, а не дни.</p><h3>2. Контекст, который путешествует с кодом</h3><p>Агент полезен ровно настолько, насколько полный контекст ему доступен. Контекстный граф, связывающий код, задачи, пайплайны, security-фидбек и продакшен-сигналы, позволяет агентам действовать осмысленно и снижает риск «искусственной уверенности».</p><blockquote>Агент может быть только таким хорошим, какой контекст и семантика ему предоставлены.</blockquote><h3>3. Управление, встроенное в процесс</h3><p>Действия агентов должны быть привязаны к идентичности, зафиксированы в логах и проверяемы. Низкорисковые изменения проходят быстро, высокорисковые — попадают на ревью. Для компаний вроде Mercedes-Benz, работающих под автомобильными стандартами, это не опция, а требование регуляторов.</p><h3>4. Оркестрация</h3><p>Исполнение, контекст и управление работают только в том случае, если ими координирует единый слой. Оркестратор определяет, какие агенты запускаются, в каком порядке, и как обрабатываются ошибки и передачи между этапами. Без него agentic infrastructure остаётся набором разрозненных возможностей.</p><h2>Часто задаваемые вопросы</h2><h2>Выводы</h2><p>Скорость и контроль перестают быть компромиссом, если управление встроено в платформу. Тогда трассируемость становится преимуществом, а контекст — институциональной памятью. Кодовая база перестаёт накапливать невидимый риск и начинает работать надёжнее с ростом нагрузки.</p><p>Источник: <a href="https://thenewstack.io/agentic-infrastructure-ai-governance/">The New Stack — Agentic Infrastructure &amp; AI Governance</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>70% разработчиков считают ИИ-код дырявым, при этом 30% всех опрошенных деплоят его в прод</title>
      <link>https://tproger.ru/articles/70-razrabotchikov-uvereny-ii-kod-dyryavyj-no-30-vsyo-ravno-depl</link>
      <comments>https://tproger.ru/articles/70-razrabotchikov-uvereny-ii-kod-dyryavyj-no-30-vsyo-ravno-depl?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/70-razrabotchikov-uvereny-ii-kod-dyryavyj-no-30-vsyo-ravno-depl</guid>
      <description><![CDATA[<p>93% компаний взламывали из-за уязвимого ИИ-кода. Разбираем исследование Checkmarx и объясняем, почему разработчики деплоят баги в прод. Читайте выводы</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/70-razrabotchikov-uvereny-ii-kod-dyryavyj-no-30-vsyo-ravno-depl">70% разработчиков считают ИИ-код дырявым, при этом 30% всех опрошенных деплоят его в прод</a>»</p>]]></description>
      <category><![CDATA[Безопасный код]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 10 Jun 2026 10:06:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы думаете, что ИИ пишет код лучше вас — пересмотрите свои ожидания. 70% разработчиков убеждены: код, сгенерированный нейросетями, содержит <b>больше уязвимостей</b>, чем человеческий. Ещё более шокирующая цифра — <b>30% всех опрошенных</b> признаются, что <b>сознательно деплоят</b> этот дырявый код в продакшен.</p><p>Таковы результаты ежегодного исследования компании <a href="https://checkmarx.com/">Checkmarx</a> — вендора инструментов для анализа безопасности приложений. В опросе участвовали 2350 разработчиков, CISO (Chief Information Security Officer) и AppSec-менеджеров (application security) по всему миру. Выборка выросла на 54% по сравнению с прошлым годом, что делает данные ещё более репрезентативными.</p><p>70% разработчиков считают ИИ-код более уязвимым, чем человеческий.</p><p>30% всех опрошенных сознательно деплоят уязвимый код в продакшен.</p><p>93% компаний пережили хотя бы один инцидент безопасности из-за уязвимых приложений.</p><p>Организации, где 81–100% кода генерируется ИИ, деплоят уязвимости в 3,4 раза чаще, чем те, где ИИ-генерация составляет 1–20%.</p><p>59% кода в продакшене — open source, который тоже не идеален с точки зрения безопасности.</p><h2>ИИ пишет половину кода — и это проблема</h2><p>По данным Checkmarx, сегодня примерно <b>49% кода</b> в продакшене создаётся с помощью ИИ. Это немного меньше, чем 54% в прошлом году, но всё ещё колоссальная цифра. Почти каждая вторая строка в вашем приложении может быть рождена нейросетью, которая обучалась на публичных репозиториях — со всеми их багами, устаревшими паттернами и скрытыми уязвимостями.</p><p>Причина проста: языковые модели обучаются на огромных массивах существующего кода, включая устаревшие практики и известные CVE (Common Vulnerabilities and Exposures). Исследователи из <a href="https://www.ucf.edu/">University of Central Florida</a> и <a href="https://www.birzeit.edu/">Birzeit University</a> в 2025 году провели сравнительный анализ безопасности кода, сгенерированного разными LLM для Java, Python, C и C++. <b>C-код оказался самым дырявым</b>, Python — относительно чистым. Но ключевой вывод исследования шире: модели «недоиспользуют современные языковые и компиляторные возможности, предпочитая устаревшие практики более безопасным альтернативам». Сами исследователи оговаривают: LLM эволюционируют быстро, и их выводы — это «снимок во времени» (time-stamped view), а не вечная истина.</p><h2>Почему разработчики деплоят то, что не доверяют</h2><p>Вот в чём парадокс: разработчики <b>видят</b> проблему, но <b>не чувствуют</b> ответственности за её решение. Основные причины, по которым уязвимый код попадает в прод, выглядят так:</p><ul><li>Давление сроков и необходимость быстро деплоить фичи.</li><li>Уязвимости слишком сложно или дорого исправлять постфактум.</li><li>Надежда на то, что «другие инструменты безопасности подхватят» на поздних этапах.</li><li>Нормализация риска: когда все вокруг деплоят с багами, это перестаёт восприниматься как катастрофа.</li></ul><p>Checkmarx прямо констатирует: <b>«Risk is normalized»</b> — риск стал нормой. 93% респондентов сообщили о как минимум одной бреши в безопасности, связанном с уязвимыми приложениями. В прошлом году это было 98% — статистика чуть улучшилась, но не кардинально. Когда девять из десяти компаний регулярно взламывают, инцидент перестаёт быть новостью и становится рутиной.</p><blockquote>Объём ИИ-кода напрямую коррелирует с частотой деплоя уязвимого кода, которая, в свою очередь, коррелирует с частотой инцидентов безопасности.</blockquote><p>Самая тревожная цифра: организации, где <b>81–100% кода</b> генерируется ИИ, деплоят уязвимый код в <b>3,4 раза чаще</b>, чем компании с умеренным использованием ИИ (1–20%). Это прямая корреляция: чем выше доля ИИ-генерации, тем чаще в прод попадают уязвимости. Причина не только в самом коде, но и в том, что высокая скорость разработки часто сопровождается слабыми процессами безопасности.</p><h2>Open source как фундамент — и фундамент трещит</h2><p>Ещё один слой проблемы — open source. По оценкам респондентов, <b>59% кода</b> в продакшене приходится на открытые библиотеки. Это самооценки, но они отражают реальность: современный проект без node_modules, requirements.txt или Cargo.toml немыслим. Проблема в том, что мейнтейнеры этих библиотек часто не успевают закрывать уязвимости, а злоумышленники активно внедряют вредоносные пакеты в npm, PyPI и другие репозитории.</p><p>ИИ-инструменты ускоряют разработку, но не ускоряют аудит безопасности. Veracode в своём отчёте предупреждает: <b>скорость ИИ-разработки делает безопасность недостижимой</b>, если процессы не перестраиваются соответствующим образом. Инструменты статического анализа и сканеры на базе ИИ уязвимостей существуют, но организации не умеют встраивать их в процесс. «Инструменты делают работу, но компании не умеют переводить это в процесс» — констатируют в Checkmarx.</p><p>Например, вот типичная разница между ИИ-сгенерированным кодом и безопасной альтернативой. Copilot или аналогичные инструменты часто предлагают устаревший pickle.load для десериализации данных:</p><p>pickle.load выполняет произвольный Python-код при десериализации — классическая уязвимость из списка <a href="https://owasp.org/">OWASP Top 10</a>. Аналогичные проблемы часто встречаются в SQL-запросах без параметризации, использовании eval() и устаревших криптографических функциях. Проверяйте каждый snippet перед мержем.</p><h2>Как не превратить ИИ-ускорение в ИИ-катастрофу</h2><p>Отказываться от ИИ в разработке бессмысленно — это уже не инструмент будущего, а повседневная реальность. Но можно и нужно менять подход:</p><ol><li>Проверяйте ИИ-код так же тщательно, как человеческий. Не предполагайте, что нейросеть знает лучше.</li><li>Автоматизируйте сканирование уязвимостей в CI/CD. SAST (Static Application Security Testing) и DAST (Dynamic Application Security Testing) должны быть обязательным шагом пайплайна, а не опцией.</li><li>Аудитируйте зависимости. Используйте инструменты вроде npm audit, Snyk или OWASP Dependency-Check.</li><li>Обучайте команду безопасности. Разработчики должны понимать, какие уязвимости чаще всего генерирует ИИ для вашего стека.</li><li>Не жертвуйте безопасностью ради скорости. Если уязвимость критична — отложите релиз. Технический долг в безопасности обходится в разы дороже, чем в производительности.</li></ol><h2>Выводы</h2><p>ИИ — это не замена разработчику, а ускоритель. Как любой ускоритель, он требует тормозов. Когда 30% всех опрошенных сознательно деплоят код, в котором сами признают уязвимости, проблема не в технологиях — а в отсутствии дисциплины. Не верьте нейросети на слово: проверяйте зависимости, сканируйте код, требуйте ревью. Ускорение без контроля — это не оптимизация, а авария в замедленной съёмке.</p><p><b>Источник:</b> <a href="https://www.theregister.com/devops/2026/06/09/devs-know-ai-code-is-riddled-with-holes-but-ship-it-anyway/5252824">The Register — Devs know AI code is riddled with holes, but ship it anyway</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Agentic SRE: как ИИ-агенты меняют практику надёжности</title>
      <link>https://tproger.ru/articles/agentic-sre-kak-ii-agenty-menyayut-praktiku-nadyozhnosti</link>
      <comments>https://tproger.ru/articles/agentic-sre-kak-ii-agenty-menyayut-praktiku-nadyozhnosti?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/agentic-sre-kak-ii-agenty-menyayut-praktiku-nadyozhnosti</guid>
      <description><![CDATA[<p>Разбираем, как агентный подход к SRE ускоряет диагностику инцидентов и сокращает рутину. Пять рабочих сценариев, стек инструментов и правила безопасности. Читайте и внедряйте.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/agentic-sre-kak-ii-agenty-menyayut-praktiku-nadyozhnosti">Agentic SRE: как ИИ-агенты меняют практику надёжности</a>»</p>]]></description>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Архитектура ПО]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 31 May 2026 07:22:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы дежурите по ночам и проводите значительное время инцидента в поисках контекста — есть способ существенно сократить этот этап. <b>Agentic SRE</b> (агентный подход к Site Reliability Engineering) — это эволюция практики надёжности, где ИИ-агенты берут на себя рутину наблюдения, диагностики и безопасного реагирования. Цель не в том, чтобы заменить инженера, а в том, чтобы дать ему сверхспособности в моменты, когда каждая секунда дорога.</p><h2>Что такое Agentic SRE</h2><p>Agentic SRE — это практика, в которой автономные ИИ-агенты помогают наблюдать за системами, анализировать телеметрию (метрики, логи, трейсы) и выполнять ограниченные операционные действия при заданных человеком guardrails (правил безопасности). Агент не заменяет SRE-инженера, а работает как цифровой напарник: собирает контекст, предлагает гипотезы и выполняет только те действия, которые одобрены политикой.</p><p>Ключевое отличие от классической автоматизации — способность к <b>рассуждению</b>. Традиционные скрипты реагируют на жёсткие триггеры («если CPU &gt; 90%, то перезапустить»). Агент же может связать всплеск ошибок с недавним развёртыванием, проверить корреляцию по трейсам и предложить конкретный план действий — всё до того, как инженер откроет ноутбук.</p><p>Agentic SRE — это ИИ-агенты, которые помогают инженерам наблюдать, диагностировать и реагировать на инциденты.</p><p>Основная цель — сократить рутину и ускорить принятие решений, а не заменить человека.</p><p>Ключевые сценарии: триаж алертов, инцидент-копилот, автоматический RCA, безопасное исправление, обучение на инцидентах.</p><p>Безопасность превыше всего: агенты работают с allowlists, approval gates и полным аудитом.</p><p>Российские команды могут строить стек на OpenTelemetry, Prometheus/Grafana, собственных LLM и PagerDuty/Opsgenie.</p><h2>Почему это важно именно сейчас</h2><p>Сегодняшние системы стали слишком распределёнными, шумными и динамичными, чтобы человек успевал за ними вручную. Микросервисы, Kubernetes, feature flags и канареечные развёртывания создали ландшафт, где одно изменение может затронуть десятки сервисов, а сигналы о проблемах разбросаны по десяткам дашбордов.</p><p>Инженеры тратят значительное время на корреляцию метрик, чтение логов, проверку недавних выкаток и охоту за контекстом — до того, как начинают решать проблему. Agentic SRE решает это, превращая сырые телеметрические данные в структурированный контекст и автоматизируя безопасные части цикла реагирования.</p><p>Особенно это критично ночью и в выходные, когда на дежурстве один человек, а давление предельно велико. Задачи, которые легко стандартизировать, но сложно выполнить идеально в 2 часа ночи, — идеальная ниша для агентов, которые умеют обобщать, коррелировать и рекомендовать действия согласно политике.</p><h2>Из чего строится стек</h2><p>Практичная архитектура агентного SRE собирается из нескольких слоёв. При этом важно понимать: ценность приходит не от выбора модели, а от качества контекста, жёстких ограничений и дисциплины исполнения.</p><ul><li>Телеметрия: OpenTelemetry — стандарт сбора телеметрии — для сбора логов, метрик и трейсов в едином формате.</li><li>Наблюдаемость: Prometheus, Grafana, Datadog, New Relic, Elastic или облачные системы — хранилище и визуализация.</li><li>Оркестрация: MCP-серверы (Model Context Protocol от Anthropic), внутренние API или системы рабочих процессов, которые предоставляют агенту безопасные инструменты.</li><li>Среда выполнения агента: LLM-фреймворки с function calling, планированием и работой с инструментами.</li><li>Рабочий процесс при инцидентах: PagerDuty, Opsgenie, Slack, Jira, ServiceNow — куда агент пишет отчёты и запрашивает подтверждения.</li><li>Safety Layer: RBAC, approval gates, audit logs, allowlists и пути отката — неотъемлемая часть, а не дополнение.</li></ul><p><b>Принцип безопасности:</b><br />Агент должен уметь делать только то, что мог бы сделать дежурный инженер после одобрения. Это делает систему практичной и снижает риск случайного ущерба.</p><h2>Пять сценариев, которые уже работают</h2><h3>1. Триаж алертов: от шума к сути за секунды</h3><p>Когда срабатывает алерт, агент собирает связанные трейсы, проверяет недавние развёртывания, находит соответствующие всплески в логах и формирует краткое резюме на русском языке: вероятная причина, уверенность, рекомендуемые действия. Это решает проблему «с чего начать?», которая сжигает драгоценные минуты в начале инцидента.</p><h3>2. Инцидент-копилот: второй мозг в канале</h3><p>Агент подключается к каналу реагирования (Slack, Teams) и выполняет роль «второго мозга»: строит таймлайн, подтягивает ссылки на дашборды, отслеживает гипотезы по мере их проверки. Когда в инциденте участвуют несколько инженеров, это предотвращает фрагментацию контекста и дублирование усилий.</p><h3>3. Автоматический черновик RCA (Root Cause Analysis)</h3><p>После инцидента агент сравнивает таймлайн с недавними изменениями (развёртывания, конфиги, фичер-флаги), находит корреляции и генерирует первый черновик отчёта RCA с ссылками на доказательства. Инженер остаётся владельцем выводов, но экономит значительное время на подготовку документации.</p><h3>4. Безопасное исправление под контролем</h3><p>Для хорошо изученных типов инцидентов агент может рекомендовать или выполнять низкорискованные действия: перезапуск упавшего экземпляра сервиса, масштабирование развёртывания, отключение сломанного фичер-флага. Но всё, что влияет на пользовательский трафик, требует одобрения человека.</p><h3>5. Обучение на инцидентах: от пожаротушения к профилактике</h3><p>Агент анализирует паттерны в разных инцидентах, выявляет повторяющиеся корневые причины и предлагает, где улучшить наблюдаемость или сократить рутину. Со временем это создаёт обратную связь: боль в продакшене превращается в инвестиции в платформу. Точные алерты, подробные трейсы, недостающие дашборды — всё это становится следствием системной работы, а не хаотичных пост-инцидентов.</p><h2>Guardrails: почему доверие важнее интеллекта</h2><p>Главный риск агентного SRE не в том, что агент слишком умен, а в том, что он может быть <b>слишком уверен в себе</b>. LLM способны генерировать правдоподобные, но неверные объяснения. Поэтому каждая рекомендация должна быть прослежена до реальной телеметрии, а каждое действие — ограничено явными правами.</p><ul><li>Action allowlists: агент может делать только то, что в белом списке.</li><li>Approval gates: рискованные изменения требуют подтверждения.</li><li>Полный audit log: каждое действие агента записывается.</li><li>Read-only mode на этапе внедрения: сначала наблюдаем, потом действуем.</li><li>Разграничение прав по сервисам и командам.</li><li>Human override на каждом шаге: человек всегда может взять управление.</li></ul><blockquote>Если вы воспринимаете агента как стажёра с феноменальной памятью, но без здравого смысла, вы спроектируете систему с гораздо лучшей защитой.</blockquote><h2>Выводы</h2><p>Agentic SRE — это не модный тренд, а логичный ответ на растущую сложность инфраструктуры. Реальная ценность не в полной автономии, а в ускорении понимания, безопасной автоматизации и качественной коллаборации человека и машины в критические моменты.</p><p>Если строить это правильно, результат — продвинутая практика надёжности: меньше бесполезной работы, короче инциденты и больше времени для инженеров на системные улучшения вместо повторяющейся рутины. Настоящая ценность агентного SRE — не в замене инженера, а в том, чтобы дать ему модель работы с гораздо большей эффективностью.</p><p>Источник: <a href="https://devops.com/agentic-sre-the-next-frontier-of-reliability/">Agentic SRE: The Next Frontier of Reliability — DevOps.com</a> (Neel Shah, 2026).</p>]]></content:encoded>
    </item>
    <item>
      <title>Scope creep как стратегическая гибкость продакта</title>
      <link>https://tproger.ru/translations/scope-creep-kak-strategicheskaya-gibkost-prodakta</link>
      <comments>https://tproger.ru/translations/scope-creep-kak-strategicheskaya-gibkost-prodakta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/scope-creep-kak-strategicheskaya-gibkost-prodakta</guid>
      <description><![CDATA[<p>Кимберли Шу (LogRocket) объясняет, как буфер 15–30%, AI-инструменты и guardrails превращают scope creep в управляемое расширение продукта. Читайте перевод.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/scope-creep-kak-strategicheskaya-gibkost-prodakta">Scope creep как стратегическая гибкость продакта</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 23 May 2026 21:58:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Перевод статьи Кимберли Шу (Kimberly Shyu), продакт-менеджера и автора <a href="https://blog.logrocket.com/">LogRocket Blog</a>: оригинал — <a href="https://blog.logrocket.com/product-management/good-scope-creep/">«How to rethink scope creep as strategic flexibility»</a>. Автор рассказывает, как превратить расползание объёма в управляемую гибкость: оставлять в плане буфер на непредвиденное, использовать AI-инструменты для ускорения и держать дисциплину через guardrails — формальные ограничители расширения.</p><p>В agile-средах расползание объёма (scope creep) начинается тогда, когда продакт-менеджер теряет из виду цель и аудиторию. В попытке впихнуть в продукт побольше функций «чтобы всем угодить» команда каменеет, как от взгляда Медузы Горгоны: больше никакой гибкости, остаётся либо погибнуть в analysis paralysis, либо вязнуть в болоте.</p><ul><li>Хорошие проектные менеджеры закладывают в план буфер на 15–30% незапланированной работы; скрам-команды планируют только 70–80% мощности спринта.</li><li>Расширять объём стоит, если новая фича повышает удовлетворённость клиента, ускоряется через AI-инструменты или работает как «множитель силы» — открывает возможности с отдачей минимум 10x.</li><li>AI-инструменты вроде Claude Code, Figma Make, Gemini, NotebookLM и ChatGPT помогают доставить больше за то же время — это и превращает scope creep в управляемую гибкость.</li><li>Главный тест: «то же усилие — лучший результат». Если для нового пункта нужно столько же часов, сколько на исходные фичи, это не хорошее расползание, а просто новая работа.</li><li>Guardrails против перегрузки: формальный change management, защита буфера, лимит расширения объёма (например, 20% сверх MVP) и мониторинг выгорания команды.</li></ul><p>Я видела, как продакты складывают сотни идей в бэклог без намерения когда-либо до них добраться, наотрез отказываются обсуждать предложения стейкхолдеров (идеи даже не попадают в бэклог) — и тут же говорят «да» очередной задаче, а потом плачут в туалете.</p><p>Реальность работы в продукте такова: всегда будет поток идей, которые нужно признать, обдумать и реализовать — хотя не обязательно в таком порядке. Расставлять границы, чтобы не выгореть и не превратиться в фабрику фич, — задача самого продакт-менеджера.</p><p>Главный фокус продакт-менеджмента — балансировать поток идей с возможностью улучшать продукт. Хитрость в том, чтобы выбирать только те задачи, которые с высокой вероятностью пригодятся многим клиентам — даже если сами клиенты пока не осознали, что им это нужно.</p><h2>Зачем продуктовым командам нужен буфер мощности</h2><p>Говорить «нет» всему подряд — кратчайший путь к репутации чёрствого человека. Да, продакт-лидер обязан определять и защищать дорожную карту, но процесс планирования должен включать и буфер на правки и непредвиденную работу.</p><p>Хорошие проектные менеджеры резервируют около 15–30% общей длительности или мощности проекта под незапланированную работу. Аналогично скрам-команда планирует на спринт только 70–80% своих мощностей, оставляя 20–30% на непредвиденные баги и изменения объёма.</p><p>Вы же не ставите себе восемь часов сплошных встреч и не ожидаете часами фокусной работы без перерывов, особенно если задач много и между ними нужно переключать контекст. Вместо этого вы делаете регулярные паузы — мозгу нужен отдых между задачами.</p><p>Этот буфер позволяет иногда сказать «да» сверх плана. Да тому латте, который варится лишние пять минут во время переключения контекста между фокус-сессиями. Да внеплановому багу, который команда должна закрыть для топ-клиента в этом спринте. Да возможности развить опыт, который клиенты называют «хорошим», но который мог бы стать «отличным».</p><h2>Когда стоит расширять объём</h2><p>Чтобы понять, когда отдать тщательно охраняемую мощность под новый пункт дорожной карты, разберёмся, что вообще подходит под «хорошее» расширение.</p><h3>Рост удовлетворённости клиентов</h3><p>В недавнем проекте мы выкатили 22% post-MVP требований уже на момент сдачи MVP — перенесли вперёд то, что иначе попало бы в следующие релизы.</p><p>В другом случае разговор с клиентом обнажил возможность развернуть решение на базе AI и снять рутинную нагрузку с его команды.</p><p>Делать это было необязательно, но в обоих случаях расширение объёма имело смысл — оно повышало удовлетворённость клиента.</p><h3>Чёткие компромиссы в дорожной карте</h3><p>Сказать «да» одной задаче должно по умолчанию означать «нет» какой-то другой.</p><p>Что вы готовы выменять, чтобы взять в работу новый пункт? Как использовать новый объём себе на пользу?</p><h3>Ускорение разработки через AI-инструменты</h3><p>Расползание объёма почти не проблема, если у вас неограниченные ресурсы — но это нереалистично.</p><p>Вместо того чтобы доводить команду до медленного кипения, используйте AI-инструменты для ускорения выхода на рынок: <a href="https://claude.com/claude-code">Claude Code</a>, <a href="https://www.figma.com/make/">Figma Make</a>, <a href="https://gemini.google.com/">Gemini</a>, <a href="https://notebooklm.google.com/">NotebookLM</a>, <a href="https://chatgpt.com/">ChatGPT</a>.</p><p>Подключите дизайнеров и продактов к vibe coding (создание прототипов через диалог с AI-инструментом) вместе с разработчиками — и наблюдайте, как растут мораль, увлечённость и пропускная способность команды.</p><h3>Возможности-множители (force multipliers)</h3><p>Ищите решения, которые закрывают целую пачку будущих требований за счёт более умной реализации. В таких случаях расширение объёма оправдано.</p><p>Например, дождаться API-фида данных вместо ручной синхронизации файлов. Но как общее правило: расширяйте объём только под то, что даёт минимум 10x отдачу.</p><h3>Давление тайминга на рынке</h3><p>Вы и конкурент можете запускаться с разницей в две недели, но первый на рынок снимает все сливки. Если выяснилось, что идёт гонка за релиз, имеет смысл добавить немного объёма (например, сжать сроки и увеличить нагрузку), чтобы добежать первым.</p><h3>Опровергнутые предположения о пользователях</h3><p>Если вы используете hypothesis-driven development (разработка через проверку гипотез о пользователях) и наблюдаемое поведение или фидбэк опровергают гипотезу, имеет смысл сдвинуть рамки под реальную потребность — а не упрямо продолжать строить не то.</p><h2>Реальный пример контролируемого расширения объёма</h2><p>Когда в прошлом году Figma выкатила бета-версию Figma Make, я бросилась подключать команду к раннему доступу. Этот новый инструмент на базе LLM позволял запросить у Figma не просто дизайн, а полноценный концепт: он выдавал прототипы для быстрого тестирования на клиентах и frontend-ready код, ускоряющий работу разработчиков.</p><p>До этого мы играли с другими инструментами вроде Firebase и Loveable, но именно Figma Make оказался самым ожидаемым релизом.</p><p>Figma анонсировала постепенную раскатку — я проверяла доступ по нескольку раз в день, и наконец — та-дам! Это было как получить волшебную палочку.</p><p>Буквально за ночь мы удвоили дизайн-мощность: vibe coding на ходу выдавал нам ассеты, пригодные для быстрых циклов обратной связи.</p><p>Единственная проблема? Инструмент оказался слишком хорош. Часть идей из vibe coding-сессий была настолько продвинутой, что с самого начала было понятно: мы не сможем реализовать даже половину видения.</p><p>Но в этом и оказалась суть процесса: он подсказал нам идеи, до которых мы сами бы не дошли. Это позволило собрать обратную связь от пользователей, параллельно работая над ключевым улучшением, которое, по нашей гипотезе, должно было поднять одну из KPI.</p><h2>Guardrails: ограничители для управления расширением объёма</h2><p>Хорошее расползание остаётся хорошим только пока вы им не злоупотребляете. Вот несколько ограничителей, которые стоит держать под рукой, чтобы не стать «человеком, который всегда говорит да» за счёт остальных.</p><h3>Формальный процесс change management</h3><p>Документируйте каждое дополнение через лёгкий change request. Фиксируйте, что добавляется, как это служит стратегической цели и какие компромиссы вы принимаете. Это предотвращает бессознательный дрейф и создаёт ответственность за решения.</p><h3>Берегите буфер мощности</h3><p>Если вы уже выбрали 25% своего буфера, добавление нового объёма становится рискованным. Резерв нужен под реальные форс-мажоры, а не только под возможности. Защищайте буфер!</p><h3>Тест «то же усилие — лучший результат»</h3><p>Инструменты-ускорители вроде Claude Code и Figma Make должны позволять выпускать больше ценности без пропорционального роста усилий.</p><p>Если на новую задачу нужно столько же времени разработки, сколько на исходные фичи, — это не хорошее расползание, это просто дополнительная работа. Смысл в том, чтобы выжимать эффективность из современных инструментов.</p><h3>Лимит на расширение объёма</h3><p>Установите максимальный порог (например, не более 20% сверх требований MVP).</p><p>Это создаёт принудительную функцию для приоритизации и предотвращает сценарий медленного кипения, когда «всего одна ещё штука» складывается в восприятие провала проекта и накопленное раздражение.</p><h3>Мониторинг сигналов выгорания</h3><p>Регулярные one-to-one с командой про нагрузку и моральное состояние — обязательное условие. Если расширенный объём выливается в шестидесятичасовые недели и сессии в туалете со слезами, это уже не контролируемое расширение — это неустойчивая перегрузка.</p><p>Хорошее расползание объёма должно заряжать команду, а не выматывать.</p><h2>Заключение</h2><p>Продакт-лидер видит сразу три картины: тренды рынка, свою дорожную карту и нужды клиентов. Это уникальный обзор — и именно из него рождаются неочевидные решения.</p><p>Самые сильные продуктовые решения — это когда один фикс закрывает сразу несколько проблем клиента, и при этом он не был запланирован изначально. Это и есть хорошее расползание объёма: буфер позволил его принять, guardrails — не сорвать дорожную карту.</p><p>С современными AI-инструментами расползание объёма больше не обязано означать сожжённую мощность разработки. Дайте команде правильные опоры — и каждый сможет активно участвовать в доставке. Соблюдайте guardrails — и сможете заменить цинизм оптимизмом: будете знать, что добавление фичи — это умное стратегическое решение, а не компульсивное «лишь бы согласиться».</p><p>Читайте также на tproger: <a href="https://tproger.ru/articles/pyat-knig-dlya-prodakt-menedzhera-dlya-razvitiya-strategicheskogo-mywleniya-i-upravleniya-komandoj">пять книг для продакт-менеджера</a>, <a href="https://tproger.ru/articles/prodaktu-na-zametku--pochemu-privychnye-metriki-mogut-stat-tormozom-dlya-rosta-i-chto-s-etim-delat">когда привычные метрики мешают росту</a>.</p><p>Оригинал статьи: <a href="https://blog.logrocket.com/product-management/good-scope-creep/">How to rethink scope creep as strategic flexibility</a> — Кимберли Шу, <a href="https://blog.logrocket.com/">LogRocket Blog</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Сравниваем офисные редакторы 2026: Яндекс, Р7 и Google</title>
      <link>https://tproger.ru/articles/sravnivaem-ofisnye-redaktory-2026-yandeks-r7-i-google-docs</link>
      <comments>https://tproger.ru/articles/sravnivaem-ofisnye-redaktory-2026-yandeks-r7-i-google-docs?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Валерия Турчак]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/sravnivaem-ofisnye-redaktory-2026-yandeks-r7-i-google-docs</guid>
      <description><![CDATA[<p>Я рассмотрел несколько вариантов редакторов документов — от Яндекс, Р7 и Google — сравнил их по ключевым параметрам, чтобы вы могли выбрать подходящий инструмент, исходя из своих задач и сценариев работы</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/sravnivaem-ofisnye-redaktory-2026-yandeks-r7-i-google-docs">Сравниваем офисные редакторы 2026: Яндекс, Р7 и Google</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 28 Apr 2026 09:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Онлайн-редакторами документов сегодня никого не удивишь. Написать текст в браузере, быстро поправить таблицу, открыть доступ коллегам, поработать вместе над одним файлом — всё это давно стало настолько привычным, что отдельным преимуществом уже почти не считается. Скорее, это базовое ожидание от любого офисного сервиса.</p><p>Я рассмотрел несколько вариантов редакторов документов — от Яндекс, Р7 и Google — сравнил их по ключевым параметрам, чтобы вы могли выбрать подходящий инструмент, исходя из своих задач и сценариев работы.</p><h2>Вместо введения: контекст и герои обзора</h2><p>Долгое время в Яндекс 360 для работы с документами использовались редакторы Р7 офис. Они никуда не делись и по-прежнему работают. Не так давно Яндекс начал развивать и собственные редакторы. Осенью 2025 года они вышли из стадии бета-тестирования и медленно стали  обрастать функциями.</p><p>Поскольку познакомиться с ними довольно просто — достаточно переключить соответствующий ползунок в разделе «Документы» в Яндекс 360, — я это и сделал. Заодно стало интересно посмотреть, как новые редакторы Яндекса выглядят на фоне Р7 офис и Google Docs, которые для многих давно стали привычной точкой отсчёта.</p><p>Сразу оговорюсь: редакторы Яндекса сейчас — это средства работы с текстами и таблицами. Редактора презентаций пока нет: если открыть файл *.pptx, система по-прежнему запускает только Р7 офис.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/19d5a1f4-3939-430a-9feb-c0effbdbdcc6.webp" alt="" /></figure><p>Доступны новые редакторы пока только через браузер. О десктопных версиях Яндекс говорил ещё в январе, но на момент тестирования они мне не попадались. Совместная работа есть, одновременное редактирование тоже. Но главная особенность новых редакторов — встроенный ИИ. Сначала он появился только в текстовом редакторе, потом добрался и до табличного.</p><p>Если же говорить о Р7 офис, как о другом участнике этого сравнения, то его логика иная. Это скорее попытка дать пользователю более классический офисный опыт: с широким набором функций, несколькими вариантами использования и более серьёзной совместимостью с привычными офисными форматами (DOCX, XLSX, ODT и пр.). ИИ-ассистент также имеется в текстовом редакторе. Пользоваться Р7 можно в браузере, в виде приложений для Windows и Linux, на мобильных устройствах, а при желании и развернуть у себя на сервере. Функциональность здесь ощутимо шире, чем у новых редакторов Яндекса.</p><p>Google Docs в этой компании — отдельная история. Это уже не просто один из редакторов, а, по сути, давно сложившийся стандарт веб-работы с документами. Именно через него многие привыкли понимать, как вообще должен выглядеть современный браузерный редактор: быстрое совместное редактирование, история изменений, комментарии, предсказуемый интерфейс, знакомая логика действий. Поэтому сравнивать с ним любые новые решения всё равно будут — хотят того разработчики или нет.</p><h2>Простота, минимализм и всё, что из этого следует</h2><p>Первое впечатление от редакторов Яндекса — перед тобой попытка сделать сознательно облегчённый инструмент для работы. Интерфейс предельно лаконичный: строка меню «Файл — Правка — Вставка…», немного иконок под ней, минимум визуального шума. Всё выглядит современно, аккуратно и вполне понятно для человека, который не хочет разбираться в десятках редко используемых функций.</p><p>И в этом, надо признать, есть своя логика. Далеко не всем нужны громоздкие редакторы уровня Word, Excel или тем более полноценного офисного пакета. Очень многим нужен именно лёгкий инструмент: быстро открыть документ, набрать текст, чуть-чуть его оформить, вставить таблицу или картинку, поделиться с коллегой. В эту модель Яндекс, похоже, и целится.</p><p>Но лёгкость — вещь приятная ровно до того момента, пока не начинаешь искать функции, к которым привык.</p><p>Например, меню «Файл» в новых редакторах Яндекса на момент тестирования выглядело очень скромно: фактически там доступны только «Скачать» и «Печать». Документ можно выгрузить в DOCX или XLSX, либо в PDF. И здесь особенно заметно, насколько по-разному устроены конкуренты.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/5b855b5e-4527-47d2-909a-ffcab7f3463b.webp" alt="" /></figure><p>В Р7 офисе список экспортируемых форматов ощутимо шире: можно сохранять в OpenDocument, RTF, EPUB, PDF, JPG и не только.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/c5e17111-0c6d-473f-a051-1e9ca5a8d5dd.webp" alt="" /></figure><p>Google Docs, хотя и хранит документы в собственном формате, тоже позволяет скачать их в DOCX, XLSX, PDF, RTF, EPUB, а в некоторых случаях — и в Markdown.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/8a19084f-6c71-4ac6-b68a-f7ead960caac.webp" alt="" /></figure><h2>Что умеют текстовые редакторы — и чего в них пока нет</h2><p>С текстовым редактором Яндекса история примерно та же. Базовые инструменты форматирования есть: можно выбрать шрифт, выставить выравнивание, интервалы, отступы. Для многих сценариев этого хватит.</p><p>Но, во-первых, даже набор шрифтов пока выглядит скромно. Во-вторых, довольно быстро упираешься в отсутствие вещей, которые в более зрелых редакторах давно воспринимаются как обыденность. Мне, например, не удалось найти вставку формул или уравнений, диаграмм, WordArt и даже более-менее очевидный способ вставить спецсимвол. При этом вставить таблицу, изображение, пустую страницу, ссылку или комментарий — можно.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/d121b5e4-4ba1-477c-8d09-d32cef21f606.webp" alt="" /></figure><p>Так возможности вставки выглядят в Р7 офис: для вставки доступны диаграммы, SmartArt, гиперссылки, таблицы, уравнения, символы, большое количество фигур и многое другое.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/f24f693e-051d-48a9-ac3c-8dfffda95857.webp" alt="" /></figure><p>И в Google Docs:</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/d4ac2833-c62e-44db-894d-7f09a8a8108d.webp" alt="" /></figure><p>То есть для обычного «написать текст и немного его причесать» яндексовский годится уже сейчас. А вот для сценариев, где текстовый документ начинает тянуть на что-то более сложное, ограничений пока многовато.</p><p>Совместное редактирование есть, но и здесь не без нюансов. Когда несколько человек правят документ одновременно, видно, что изменения происходят. Но вот привычного режима рецензирования или хотя бы полноценной записи изменений я не нашёл. А это уже важная история не только для авторов и редакторов, но вообще для любой совместной работы, где потом нужно понять, кто именно и что поменял.</p><p>Не получилось у меня и, например, сделать вёрстку текста в две колонки. Вроде бы мелочь, но именно из таких мелочей и складывается ощущение зрелости редактора.Проверка орфографии «на лету» тоже пока не выглядит сильной стороной. Да, ошибки может исправлять ИИ — либо в выделенном фрагменте, либо во всём тексте. Но тут сразу встаёт другой вопрос: а как потом быстро понять, что именно он исправил? Если документ большой, а режима сравнения правок нет, это превращается в отдельное приключение.</p><p>Есть и совсем бытовые детали, которые внезапно оказываются не такими уж бытовыми. Например, кавычки-ёлочки. В русскоязычной практике это не редкость, особенно если текст хоть сколько-то претендует на аккуратное оформление. Ввести их в редакторе Яндекса можно, но не самым очевидным способом — через Alt-коды. Для пользователя с полноразмерной клавиатурой это ещё терпимо, а вот на ноутбуке без цифрового блока удовольствие уже заметно ниже среднего. Впрочем, справедливости ради, в Google Docs с этим тоже не праздник.</p><h2>Таблицы: базовые и сложные сценарии</h2><p>С табличным редактором у Яндекса та же логика, что и с текстовым. Он явно рассчитан на несложные повседневные сценарии: вбить данные, отсортировать, включить фильтр, сделать простую формулу, что-то быстро поправить в браузере. Для этого он в целом подходит.</p><p>Но как только речь заходит о более серьёзной табличной работе, ограничений оказывается заметно больше. На момент тестирования здесь отсутствовали сводные таблицы в полноценном режиме редактирования, условное форматирование, спарклайны. Диаграммы появились, и это уже хорошо, но некоторые диаграммы, ранее собранные в Excel, отображаются не совсем корректно. И это, к сожалению, касается не только диаграмм.</p><p>Для проверки я открыл старый тестовый XLSX-файл, который когда-то специально собирал как пример таблицы с непростым форматированием. Так его демонстрирует Р7 офис, вполне корректно.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/64cbac54-0368-4ebf-bf3e-ebdcb86d179c.webp" alt="" /></figure><p>Google Docs часть элементов потерял: у объёмной диаграммы исчезли данные, некоторые нестандартные элементы оформления тоже не пережили импорт, местами появились ошибки. Но в целом документ был хотя бы узнаваем.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/7c752fa5-7c29-451c-947c-5916f7da4776.webp" alt="" /></figure><p>Яндексовский редактор отреагировал иначе: показал предупреждение о том, что сводные таблицы пока доступны только в режиме просмотра, и предложил обратиться к владельцу документа или открыть файл в старом редакторе. То есть фактически — в Р7 офис. И это, пожалуй, довольно честный момент.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/e955d94c-1268-4ebe-aada-09a9bde69803.webp" alt="" /></figure><p>После нажатия кнопки “Понятно” редактор визуализирует таблицу следующим образом:</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/cfc18b0e-6dcc-4f31-9afe-b9d0d3a5fa80.webp" alt="" /></figure><p>Однако, как я упоминал раннее, в редакторах Яндекса сохранена возможность переключиться на редакторы Р7 офис. Для этого достаточно зайти в настройки Яндекс 360 и в строке «Перейти на новый редактор» сдвинуть бегунок влево, сделав его серым.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/bab9fe53-36a6-4fc0-b30f-2ebe85f01f47.webp" alt="" /></figure><p>Тогда моя тестовая табличка откроется уже в редакторе Р7 офис в изначально задуманном виде.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/3b1f7df1-fce9-4cf9-b4d1-684989dcaf8e.webp" alt="" /></figure><p>Собственно, в этом и состоит важная разница между редакторами. Р7 офис хорош как инструмент для сложных корпоративных сценариев, но порой за это расплачивается тяжеловесностью. Яндексовский редактор делает ставку на простоту, современный интерфейс и скорость входа, но сложные документы регулярно выбивают его из колеи. Google Docs остаётся где-то посередине: с одной стороны, он веб-ориентированный и понятный, с другой — за годы разработки и эксплуатации он успел обрасти таким количеством функций и сценариев, что давно воспринимается как полноценный рабочий инструмент, и, своего рода, стандарт индустрии для облачных редакторов. Только купить и использовать его в России нельзя.</p><h2>Немного спорта: кто и как ведёт себя на больших файлах</h2><p>Пара слов о скорости работы. Для теста я взял файл с текстом романа «Война и мир» — 1918 страниц. Ничего особенно экзотического в этом документе не было: текст, таблицы, несколько чёрно-белых иллюстраций. Но объём, мягко говоря, не маленький.</p><p>Р7 офис открыл его меньше чем за минуту. Причём навигация по документу становилась доступна довольно быстро — примерно секунд через десять-двенадцать после открытия уже можно было начинать с ним работать, пока оставшаяся часть продолжала подгружаться.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/fc3c810f-355a-4230-bcf7-8bc2c4bd7f35.webp" alt="" /></figure><p>Редакторы Яндекса повели себя иначе. При первом открытии документ довольно долго не показывался вовсе: на экране висела плашка «Загружаем», и только примерно через минуту появилась первая страница. Полностью документ прогрузился где-то за две минуты. При последующих открытиях первая страница появлялась уже почти сразу, видимо, часть данных кэшировалась. Но вот полная загрузка всё равно оставалась примерно той же. И главное — даже после этого навигация по тексту не становилась совсем уж бодрой: при попытке перескочить куда-нибудь вглубь романа редактор нередко задумывался на те же десять-двенадцать секунд.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/188c2e15-3826-4451-be6b-66891dee9e50.webp" alt="" /></figure><p>Google Docs здесь отличился по-своему: файл он просто отказался открывать, честно сообщив, что документ слишком большой. И это, как ни странно, тоже вполне полезный результат теста. Зрелость продукта не всегда означает универсальность на любых экстремальных кейсах.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/b6e6c1a8-6c3a-440a-8483-ccb8f25d3901.webp" alt="" /></figure><h2>Ещё один тест: как редакторы переживают чужую вёрстку</h2><p>Чтобы не ограничиваться только «Войной и миром», я решил проверить и более прикладной сценарий: открыть готовый DOCX со сложным расположением элементов. Для этого взял типовой файл технического задания.</p><p>Результаты получились показательные. Лучше всего с отображением справился Google Docs: документ выглядел близко к тому, как ожидаешь после Word.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/d712fd32-6b8c-408e-8a07-e5ae4f412c82.webp" alt="" /></figure><p>Р7 офис показал все элементы, но порядок местами поплыл: например, часть шапки на первой странице съехала относительно ожидаемой позиции.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/b3597690-8d78-45db-9504-8a855838f54b.webp" alt="" /></figure><p>Яндексовский текстовый редактор на первой странице отобразил уже заметно меньше.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/d94e8c23-1af7-4233-921c-5db98ab3c2b2.webp" alt="" /></figure><p>Это важный момент, потому что он хорошо показывает текущую специализацию продуктов. Когда документ простой и создаётся с нуля прямо в редакторе — всё более-менее хорошо. Когда же в редактор попадает уже готовый файл с чужой сложной вёрсткой, вопрос совместимости начинает играть куда большую роль.</p><h2>И совсем простой табличный тест</h2><p>После больших файлов и непростого форматирования захотелось проверить что-нибудь совсем базовое. Я взял простую таблицу: в одном столбце арифметическая прогрессия, в другом — такая же, но со смещением, а в третьем — обычный ВПР. Ничего героического, один из тех примеров, на которых обычно проверяют самые базовые табличные сценарии.</p><p>Google Docs справился мгновенно. Единственный нюанс — для суммирования диапазон пришлось задать вручную или сначала выделить.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/ebdab528-3d38-4c30-981a-1b8c63c34dd3.webp" alt="" /></figure><p>Р7 офис тоже с задачей справился, но работал заметно степеннее: некоторые действия занимали несколько секунд. Это не катастрофа, но ощущается.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/14c88c74-521b-4847-96e3-eb5d50a6999b.webp" alt="" /></figure><p>Редактор Яндекса тоже сумму в итоге посчитал, хотя сначала озадачил меня другим: по какой-то причине встать на позицию ниже последнего значения в одном из столбцов у меня не получилось, как будто таблица там просто заканчивалась и дальше ничего не существовало.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/1f8cbd39-18bf-4924-84bb-3ce1d6e9a56d.webp" alt="" /></figure><p>В итоге считать пришлось в другом месте. Посчиталось — уже хорошо, но осадок, как говорится, остался.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/cd08ca42-427e-4a30-9c38-6c62a29bdfdb.webp" alt="" /></figure><h2>Что по совместной работе?</h2><p>В Р7 офис доступны режимы комментирования, чтения, редактирования, можно установить пароль и срок действия для внешней ссылки. И есть чат для участников совместного редактирования — чтобы написать коллегам сообщение, даже не нужно выходить из редактора. Такой возможности у редакторов Яндекса, как и у Google, нет.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/6c1c1de2-3bee-42bf-8a00-d682bffd2b89.webp" alt="" /></figure><p>Яндекс позволяет делиться файлами, редактировать их в реальном времени и настраивать права доступа. Пока роли ограничиваются только двумя вариантами — «только просмотр» и «редактирование». Если у вас есть Яндекс 360, доступны будут некоторые дополнительные настройки безопасности — можно установить пароль, срок действия ссылки и запретить скачивание.</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/da7ed29a-5994-46c1-9755-c4c18694c9da.webp" alt="" /></figure><p>А такие сценарии доступны в Google Docs, всего три и все по делу:</p><figure><img src="https://media.tproger.ru/user-uploads/99854/2026-04-27/7f186c76-cd2d-4b86-ae12-aeb551485721.webp" alt="" /></figure><h2>Выводы</h2><p>У всех трёх решений оказались довольно разные роли.</p><p>Google Docs по-прежнему выглядит самым зрелым и предсказуемым веб-редактором из этой троицы. Это тот случай, когда сервис уже давно стал отраслевой нормой: не идеальной во всём, но очень понятной и привычной. Особенно если важна совместная работа, история изменений и в целом проверенный интерфейс.</p><p>Р7 офис — вариант для тех, кому нужен более широкий функционал, больше форматов, более серьёзные сценарии совместной работы и в целом ощущение классического офисного приложения, а не только браузерного редактора. Но вместе с этим приходится принимать и его особенности: более тяжёлый интерфейс и не самую быструю работу в ряде сценариев. C ноября прошлого года здесь уже также доступны ИИ-инструменты, но пока только для работы с текстовыми документами, а именно корректуры текста, выделения ключевых мыслей, перевода на различные языки и т.д. Следует отметить, что сравнение ИИ-ассистентов в отечественных офисных решениях заслуживает отдельного материала, так как сказать там точно будет о чем.</p><p>Новые редакторы Яндекса выглядят как попытка пойти в другую сторону и предложить более понятный инструмент для повседневной работы. И в этом есть своя логика. Однако на текущий момент это всё ещё сырой продукт, который пригодится для самых базовых сценариев: простой текст, лёгкая таблица, быстрый доступ в браузере. Но как только речь заходит о сложном форматировании, тяжёлых файлах, сводных таблицах или о проверке орфографии с историей изменений, редакторы Яндекса начинают откровенно "спотыкаться". И пока одним из главных конкурентных преимуществ служит интеграция Алисы AI: для части пользователей она может оказаться полезнее, чем редкие офисные функции.</p><p>Поэтому ответ на вопрос «что выбрать» здесь не универсальный. Если важны сложные документы, форматы и более богатый офисный функционал — логичнее смотреть в сторону Р7. Если нужны ИИ-инструменты, простота и современный интерфейс — у Яндекса есть вполне понятный сценарий применения.  Если нужен проверенный веб-стандарт совместной работы — редакторы от Google всё ещё остаются ориентиром, хотя, будучи российским пользователем, надеяться на безопасность данных или легально оплачивать их уже не получится.</p>]]></content:encoded>
    </item>
    <item>
      <title>Переосмысление пулл-реквестов: почему code review должен учить, а не только ловить баги</title>
      <link>https://tproger.ru/translations/pereosmyslenie-pull-rekvestov--pochemu-code-review-dolzhen-uchit--</link>
      <comments>https://tproger.ru/translations/pereosmyslenie-pull-rekvestov--pochemu-code-review-dolzhen-uchit--?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/pereosmyslenie-pull-rekvestov--pochemu-code-review-dolzhen-uchit--</guid>
      <description><![CDATA[<p>Как стековые PR, приоритет файлов в диффе и единая страница ревью сокращают comprehension debt. Перевод статьи создателя Lubeno о будущем code review.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/pereosmyslenie-pull-rekvestov--pochemu-code-review-dolzhen-uchit--">Переосмысление пулл-реквестов: почему code review должен учить, а не только ловить баги</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 02 Apr 2026 12:28:46 GMT</pubDate>
      <content:encoded><![CDATA[<p>Это перевод с адаптацией <a href="https://lubeno.dev/blog/reinventing-the-pull-request">статьи</a> Bernard Kolobara, автора платформы <a href="https://lubeno.dev">Lubeno</a>.</p><p>Пулл-реквесты задумывались как инструмент для совместной работы над кодом. На практике они превратились в бюрократическую процедуру: гигантские диффы, комментарии в разных вкладках, коллапсированные «outdated»-ветки обсуждений. Bernard Kolobara считает, что проблема не в самой идее code review, а в инструментах — и предлагает конкретные решения.</p><ul><li>Comprehension debt (долг понимания) — главная проблема, которую должен решать code review, а не только ловля багов</li><li>Стековые пулл-реквесты: разбиение изменений на мелкие самодостаточные коммиты, которые ревьюятся независимо</li><li>Приоритет файлов: тесты и зависимости показываются первыми в диффе через .gitattributes</li><li>Всё на одной странице: код и обсуждение вместе, без вкладок</li><li>ИИ не убил code review — он обнажил хрупкость инструментов, которые не справляются с растущим объёмом кода</li></ul><h2>Comprehension debt: долг понимания кода</h2><p>Addy Osmani <a href="https://addyosmani.com/blog/comprehension-debt/">описал</a> comprehension debt как разрыв между объёмом кода в проекте и тем, сколько из этого кода команда реально понимает. Чем больше разрыв — тем медленнее работа. Проектировать систему, которую полностью понимаешь, проще, чем ту, которую «примерно знаешь». С появлением ИИ-агентов в рабочих процессах этот разрыв значительно вырос.</p><p>Paul Graham в эссе <a href="https://paulgraham.com/greatwork.html">о великой работе</a> пишет, что лучшие идеи приходят вне клавиатуры — на прогулке, в душе, перед сном. Но для этого «фонового процессинга» нужно, чтобы контекст проекта уже был в голове. Сначала нужна осознанная работа с кодом.</p><p>Code review — идеальный момент для сокращения этого разрыва. Каждый ревью — возможность узнать, как кодовая база развивается, каковы её границы и ограничения. Не обязательно проверять каждую строку дифа — достаточно понять ключевые части, чтобы обновить ментальную модель. Ловля багов — лишь <a href="https://www.davidpoll.com/2026/02/code-review-is-not-about-catching-bugs">одна часть</a> ценности ревью.</p><h2>Как сократить разрыв: конкретные решения</h2><h3>Стековые пулл-реквесты</h3><p>Разбить большой PR на маленькие — самый эффективный способ помочь ревьюеру. В теории для этого подходят коммиты: каждый — самодостаточная единица, <a href="https://youtu.be/GOrKfCs-mr0?si=SWndwJF0IWOF-SG7&amp;t=102">рассказывающая историю</a>. На практике это не работает из-за Git.</p><p>Git заточен под append-only workflow. Вернуться в старый коммит и отредактировать его — мучительно. Даже если вы аккуратно структурировали историю, рано или поздно появляется серия коммитов «fix», «actual fix», «ok now really fix». Когда смотришь на отдельный коммит, не видишь полной картины — правки могут быть размазаны по нескольким коммитам дальше по истории.</p><p>Bernard и его коллега Luísa решают эту проблему с помощью <a href="https://docs.jj-vcs.dev/latest/">Jujutsu</a> — VCS, которая позволяет прыгнуть в любой коммит и отредактировать его на месте, а затем автоматически пропагирует изменения через всю историю. Это позволяет «вылепить» идеальную историю коммитов.</p><p>В Lubeno стековые PR детектятся автоматически. Каждый PR показывается как дифф относительно родительского PR — ревью и одобрение идут независимо. Автор не ждёт, пока предыдущий PR смёржат, и может продолжать работу.</p><h3>Приоритет файлов в диффе</h3><p>При ревью автор первым делом смотрит тесты: были ли изменены существующие, тестируют ли новые что-то полезное. Затем — зависимости: добавляется ли новая и зачем. Но все платформы для code review показывают файлы в алфавитном порядке — важные изменения легко пропустить в большом диффе.</p><p>Lubeno использует кастомный атрибут priority в .gitattributes (это не стандартный атрибут Git, а расширение Lubeno):</p><p>Файлы с высоким приоритетом показываются первыми на странице PR. Простое решение, но оно гарантирует, что самые важные изменения вы увидите сразу.</p><h3>Всё на одной странице</h3><p>Почти все платформы для code review разносят комментарии, коммиты и код по разным вкладкам. Автор признаётся: «Я нажимал на вкладку Commits только по ошибке — ни разу намеренно». Обсуждение тесно связано с кодом, но чтобы следить за ним, приходится постоянно скроллить наверх, переключать вкладки и искать нужный фрагмент.</p><p>В Lubeno нет вкладок на странице PR. Код и обсуждение живут в одном месте.</p><h2>Эволюция кода в рамках PR</h2><p>PR — не статичная сущность. Это место для обсуждения и итераций. Знакомая ситуация: вы оставили комментарий, вернулись — и обнаружили несколько новых коммитов, а все ваши комментарии свёрнуты как «outdated». Непонятно, учтены ли ваши замечания, что изменилось с момента вашего последнего просмотра.</p><p>Lubeno отслеживает комментарии к коду и наложение interdiff (разницу между версиями файла в рамках PR): если код был изменён более поздним коммитом (или force push), разница видна прямо в контексте комментария. Не нужно переключаться между вкладками, чтобы понять, что произошло.</p><h2>Будущее пулл-реквестов</h2><p>Некоторые <a href="https://boristane.com/blog/the-software-development-lifecycle-is-dead/">называют</a> PR «реликтом прошлого» и призывают от них отказаться. Автор не согласен: процесс ревью кода сегодня ценнее, чем когда-либо. ИИ не убил code review — он обнажил хрупкость инструментов. Больше строк кода просто сделали их непригодными.</p><p>Code review находится в идеальной точке жизненного цикла: после всей творческой работы и прямо перед продакшном. Это последний шанс разобраться, что именно поедет к пользователям. Если вы хотите создавать продукт, который радует пользователей, вам нужно понимать, что происходит в коде.</p><h2>Выводы</h2><p>Статья Bernard Kolobara — не абстрактные размышления, а описание конкретных решений, реализованных в <a href="https://lubeno.dev">Lubeno</a>. Даже если вы не планируете переходить с GitHub — идеи стековых PR, приоритета файлов и unified-страницы ревью стоит примерить к своему workflow.</p><p>Ключевой тезис: code review — не бюрократия, а инструмент обучения. Каждый ревью должен делать команду чуть умнее, а не просто ставить галочку.</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему ИИ-сгенерированный код создаёт долг понимания</title>
      <link>https://tproger.ru/translations/pochemu-ai-generirovannyj-kod-sozdayot-dolg-ponimaniya</link>
      <comments>https://tproger.ru/translations/pochemu-ai-generirovannyj-kod-sozdayot-dolg-ponimaniya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/pochemu-ai-generirovannyj-kod-sozdayot-dolg-ponimaniya</guid>
      <description><![CDATA[<p>Адди Османи объясняет, почему ИИ-инструменты создают разрыв между объёмом кода и его пониманием. Как тесты и спецификации не решают проблему и что делать.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/pochemu-ai-generirovannyj-kod-sozdayot-dolg-ponimaniya">Почему ИИ-сгенерированный код создаёт долг понимания</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Архитектура ПО]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 14:00:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда работает быстрее, чем когда-либо. Метрики скорости бьют рекорды. Код-ревью проходят гладко, тесты зелёные, PR-ы сливаются один за другим. Но за этим блеском скрывается расход, который ни одна метрика не фиксирует: разрыв между тем, сколько кода существует в системе, и тем, сколько из него хоть кто-то по-настоящему понимает. <a href="https://addyosmani.com/blog/comprehension-debt/">Адди Османи</a> — инженерный лидер <a href="https://www.google.com/chrome/">Google Chrome</a>, автор книги <a href="https://www.patterns.dev/posts/classic-design-patterns">Learning JavaScript Design Patterns</a> — называет этот расход <b>долгом понимания</b> (comprehension debt). И предупреждает: проценты по нему растут быстрее, чем по техническому долгу.</p><p><b>Долг понимания</b> — это растущий разрыв между объёмом кода в системе и долей этого кода, которую живые люди действительно понимают. В отличие от технического долга, который заявляет о себе трением — медленными сборками, запутанными зависимостями, ощущением ужаса при касании «того самого» модуля — долг понимания порождает ложную уверенность. Кодовая база выглядит чистой. Тесты зелёные. Расплата приходит тихо, обычно в самый неподходящий момент.</p><p><a href="https://margaretstorey.com/blog/2026/02/09/cognitive-debt/">Маргарет-Энн Стори</a> описывает студенческую команду, которая наткнулась на стену на седьмой неделе: они больше не могли вносить простые изменения, не ломая что-нибудь неожиданное. Проблемой был не грязный код. Проблемой было то, что никто в команде не мог объяснить, почему были приняты те или иные проектные решения и как разные части системы должны работать вместе. Теория системы испарилась.</p><p>Недавнее исследование <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">Anthropic</a> подтверждает это количественно. В рандомизированном контролируемом эксперименте с 52 инженерами участники, использовавшие ИИ-ассистента, завершали задачу за то же время, что и контрольная группа, — но на последующем тесте на понимание кода набрали на 17% меньше баллов (50% против 67%). Наибольшее падение — в навыках отладки. Пассивное делегирование («просто сделай это») разрушает формирование навыков значительно сильнее, чем активное использование ИИ для вопросов и изучения компромиссов.</p><blockquote><b>Ключевые выводы</b><br /><br />- Долг понимания — это не технический долг. Технический долг виден; долг понимания порождает ложную уверенность.<br />- ИИ генерирует код быстрее, чем человек способен его проверить. Прежний фильтр качества стал узким местом пропускной способности.<br />- Тесты необходимы, но недостаточны: нельзя написать тест на поведение, о котором никто не подумал.<br />- Спецификации тоже не спасают: между спецификацией и работающим кодом лежат сотни неявных решений.<br />- Ни одна текущая метрика не отражает этот долг. Velocity, DORA, покрытие кода — всё зелёное, пока понимание тихо выгорает.<br />- Удешевление генерации кода не удешевляет понимание. Работа по пониманию — это и есть работа инженера.</blockquote><h2>Асимметрия скорости — ИИ генерирует быстрее, чем человек проверяет</h2><p>ИИ генерирует код значительно быстрее, чем люди способны его оценить. Звучит очевидно, но последствия легко недооценить.</p><p>Когда разработчик в команде пишет код, код-ревью всегда было узким местом — но <b>продуктивным и обучающим</b>. Чтение пулл-реквеста вынуждает вникать. Оно вскрывает скрытые предположения, ловит проектные решения, конфликтующие с архитектурой полугодовой давности, и распределяет знание о том, что кодовая база реально делает, между людьми, ответственными за её поддержку.</p><p>ИИ-сгенерированный код ломает этот цикл обратной связи. Объём слишком велик. Результат синтаксически чистый, хорошо отформатированный, внешне корректный — именно те сигналы, которые исторически вызывали уверенность при мёрже. Но поверхностная корректность — не системная корректность. Кодовая база выглядит здоровой, а понимание тихо выгорает под ней.</p><p>И инверсия резче, чем кажется. Когда код было дорого производить, сеньоры могли ревьюить быстрее, чем джуниоры писали. <b>ИИ переворачивает это: джуниор теперь генерирует код быстрее, чем сеньор способен его критически проверить.</b> Ограничивающий фактор, который делал ревью осмысленным, исчез. То, что было фильтром качества, стало проблемой пропускной способности.</p><h2>Тесты — необходимы, но недостаточны</h2><p>Инстинктивная реакция — налечь на детерминированную верификацию: юнит-тесты, интеграционные тесты, статический анализ, линтеры, форматтеры. Автоматизировать выход из узкого места ревью. Пусть машины проверяют машины.</p><p>Это помогает. Но у этого подхода есть жёсткий потолок.</p><p>Набор тестов, способный покрыть всё наблюдаемое поведение, во многих случаях окажется сложнее, чем код, который он валидирует. А сложность, о которой невозможно рассуждать, не обеспечивает безопасность. И за этим стоит более фундаментальная проблема: <b>нельзя написать тест на поведение, о котором вы не подумали</b>.</p><p>Никто не пишет тест, утверждающий, что перетаскиваемые элементы не должны становиться полностью прозрачными. Конечно, не пишет — такая возможность никому не приходила в голову. Это именно тот класс сбоев, который проскальзывает — не потому, что тесты написаны плохо, а потому, что никто не подумал туда посмотреть.</p><p>Есть и конкретный сценарий провала, который стоит назвать. <b>Когда ИИ меняет поведение реализации и обновляет сотни тест-кейсов под новое поведение</b>, вопрос сдвигается с «правильный ли этот код?» на «были ли все эти изменения тестов необходимыми, и достаточно ли у меня покрытия, чтобы поймать то, о чём я не думаю?» Тесты не могут ответить на этот вопрос. Только понимание может.</p><p>Данные это подтверждают. Разработчики, делегирующие ИИ генерацию кода, набирают менее 40% на тестах понимания. Разработчики, использующие ИИ для концептуальных вопросов — исследования компромиссов, выяснения «почему» — набирают выше 65%. Инструмент не разрушает понимание. Его разрушает то, <i>как</i> вы этот инструмент используете.</p><h2>Спецификации — тоже не спасут</h2><p>Популярное предложение: напишите подробную спецификацию на естественном языке. Включите её в PR. Ревьюьте спецификацию, а не код. Доверьтесь тому, что ИИ точно перевёл намерение в реализацию.</p><p>Это привлекательно ровно так же, как когда-то был привлекателен Waterfall. Строго определите проблему, затем исполните. Чистое разделение ответственности.</p><p>Проблема в том, что перевод спецификации в работающий код включает огромное число неявных решений — крайние случаи, структуры данных, обработка ошибок, компромиссы производительности, паттерны взаимодействия — которые ни одна спецификация никогда полностью не охватывает. <b>Два инженера, реализующие одну и ту же спецификацию, создадут системы со множеством наблюдаемых поведенческих различий.</b> Ни одна реализация не будет неправильной. Они просто будут разными. И многие из этих различий в итоге будут важны для пользователей способами, которых никто не предвидел.</p><p>Есть ещё одно наблюдение: спецификация, достаточно детальная, чтобы полностью описать программу, — это, по сути, и есть программа, только написанная на неисполняемом языке. Организационные затраты на написание спецификаций, достаточно подробных для замены ревью, вполне могут превысить выигрыш в продуктивности от использования ИИ. И вы всё ещё не проревьюили то, что было реально произведено.</p><p>Глубинная проблема в том, что «правильной» спецификации часто не существует. Требования возникают в процессе создания. Крайние случаи обнаруживаются при использовании. Предположение о том, что нетривиальную систему можно полностью описать до её создания, проверялось многократно и было признано несостоятельным. ИИ этого не меняет — он лишь добавляет новый слой неявных решений, принятых без человеческого обдумывания.</p><h2>Учитесь у истории</h2><p>Десятилетия управления качеством ПО в распределённых командах с разным контекстом и пропускной способностью коммуникации выработали реальные, проверенные практики. Они не испаряются оттого, что участник команды теперь — модель.</p><p><b>Что меняется с ИИ:</b> стоимость (резко ниже), скорость (резко выше), управленческие накладные расходы на межличностное взаимодействие (практически ноль). <b>Что не меняется:</b> потребность в человеке с глубоким контекстом системы, который поддерживает связное понимание того, что кодовая база действительно делает и почему.</p><p>Это некомфортное перераспределение, к которому вынуждает долг понимания.</p><p>По мере роста ИИ-объёмов инженер, который по-настоящему понимает систему, становится <b>более ценным, а не менее</b>. Способность посмотреть на дифф и мгновенно понять, какие поведения несут нагрузку. Помнить, почему то архитектурное решение было принято под давлением восемь месяцев назад. Отличить безопасный рефакторинг от того, который тихо сдвигает нечто, от чего зависят пользователи. Этот навык становится дефицитным ресурсом, от которого зависит вся система.</p><h2>Проблема измерения — метрики не видят этот долг</h2><p><b>Долг понимания так опасен именно потому, что ничто в текущей системе измерений его не отражает.</b></p><p>Метрики скорости (velocity) выглядят безупречно. DORA-метрики держатся стабильно. Количество PR растёт. Покрытие кода тестами — зелёное.</p><p>Комиссии по оценке производительности видят рост velocity. Они не могут видеть дефицит понимания, потому что ни один артефакт измерения результатов не захватывает это измерение. Система стимулов оптимизирует правильно то, что она измеряет. Но то, что она измеряет, больше не отражает то, что имеет значение.</p><p>Именно поэтому долг понимания коварнее технического долга. Технический долг — обычно осознанный компромисс: вы выбрали короткий путь, примерно знаете, где он лежит, можете запланировать расплату. Долг понимания накапливается невидимо, часто без осознанного решения кого-либо допустить его. Это совокупный результат сотен ревью, где код выглядел нормально, тесты проходили, а в очереди ждал следующий PR.</p><p>Организационное допущение «отревьюенный код = понятый код» больше не работает. Инженеры утверждали код, который они не до конца понимали, — и этот код теперь несёт неявное одобрение. Ответственность распределилась, а заметить это не успел никто.</p><h2>Регуляторы придут быстрее, чем вы думаете</h2><p>Каждая индустрия, которая двигалась слишком быстро, в итоге привлекала регулирование. Технологический сектор был необычно защищён от этой динамики — отчасти потому, что сбои в ПО часто обратимы, отчасти потому, что индустрия двигалась быстрее, чем регуляторы успевали реагировать.</p><p>Это окно закрывается. Когда ИИ-сгенерированный код работает в системах здравоохранения, финансовой инфраструктуре и государственных сервисах, формулировка «ИИ написал это, а мы не полностью проверили» не выдержит критики в пост-инцидентном отчёте, когда на кону жизни или значительные активы.</p><p>Команды, которые выстраивают дисциплину понимания сейчас — рассматривая настоящее понимание, а не просто прохождение тестов, как обязательное условие — окажутся в лучшем положении, когда этот момент наступит, чем команды, оптимизировавшие исключительно скорость мёржа.</p><h2>Что на самом деле требует долг понимания</h2><p>Правильный вопрос сейчас — не «как генерировать больше кода?», а «как понимать больше из того, что мы отгружаем?» — чтобы пользователи получали стабильно качественный продукт.</p><p>Этот сдвиг фокуса имеет практические следствия:</p><ul><li>Будьте безжалостно явными в том, что изменение <i>должно делать</i>, прежде чем оно будет написано.</li><li>Рассматривайте верификацию не как послесловие, а как структурное ограничение.</li><li>Поддерживайте ментальную модель системного уровня, которая позволяет ловить ошибки ИИ на уровне архитектуры, а не построчно.</li><li>Будьте честны относительно разницы между «тесты прошли» и «я понимаю, что это делает и почему».</li></ul><p><b>Удешевление генерации кода не удешевляет понимание. Работа по пониманию — это и есть работа инженера.</b></p><p>ИИ берёт на себя перевод. Но кто-то по-прежнему должен понимать, что было произведено, почему именно так и были ли эти неявные решения правильными — иначе вы просто откладываете счёт, который в конце концов придёт с полной суммой.</p><p>Вы заплатите за понимание рано или поздно. Проценты по этому долгу растут быстро.</p><h2>Частые вопросы</h2><h3>Чем долг понимания отличается от технического долга?</h3><p>Технический долг — обычно осознанный компромисс. Вы знаете, где лежит короткий путь, и можете запланировать рефакторинг. Долг понимания накапливается невидимо: код выглядит чистым, тесты зелёные, но никто в команде не может объяснить, почему система работает именно так. Расплата приходит внезапно — когда простое изменение ломает всё каскадом.</p><h3>Значит ли это, что ИИ-инструменты для кодинга вредны?</h3><p>Нет. Исследование Anthropic показало, что инструмент не разрушает понимание — его разрушает способ использования. Пассивное делегирование («сделай за меня») снижает понимание, а активное использование для концептуальных вопросов и исследования компромиссов — нет. Ключ в том, чтобы использовать ИИ как партнёра для мышления, а не как замену мышлению.</p><h3>Как измерить долг понимания в команде?</h3><p>Прямых метрик пока нет — в этом и проблема. Косвенные индикаторы: частота каскадных сбоев от «простых» изменений, время на onboarding новых разработчиков, способность членов команды объяснить архитектурные решения без обращения к коду. Если никто не может ответить «почему это сделано именно так» — долг уже высок.</p><h3>Что делать прямо сейчас?</h3><p>Три вещи. Во-первых, требуйте от каждого изменения явного описания того, <i>что</i> оно должно делать, до написания кода. Во-вторых, поддерживайте ментальную модель архитектуры — это позволяет ловить ошибки на системном уровне, а не построчно. В-третьих, различайте «тесты прошли» и «я понимаю, что это делает». Первое — автоматизация. Второе — инженерная работа.</p><h2>Выводы</h2><p>Долг понимания — это не повод отказываться от ИИ-инструментов. Это повод осознанно управлять ценой, которую мы платим за скорость. Адди Османи формулирует это точно: код стал дешёвым в производстве, но понимание дешёвым не стало. И чем больше мы генерируем, тем дороже обходится разрыв.</p><p>Оригинал статьи: <a href="https://addyosmani.com/blog/comprehension-debt/">Comprehension Debt — the hidden cost of AI generated code</a> (Addy Osmani, март 2026).</p>]]></content:encoded>
    </item>
    <item>
      <title>Как агенты Stripe отправляют 1300 PR в неделю без единой строчки человеческого кода</title>
      <link>https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk</link>
      <comments>https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk</guid>
      <description><![CDATA[<p>Как устроена система ИИ-агентов Minions в Stripe: архитектура блюпринтов, изолированные devbox-ы и MCP-инструменты, которые позволяют мержить 1300 PR в неделю.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/kak-agenty-stripe-otpravlyayut-1-300-pr-v-nedelyu-bez-edinoj-strochk">Как агенты Stripe отправляют 1300 PR в неделю без единой строчки человеческого кода</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 07:52:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>Каждую неделю <a href="https://stripe.com">Stripe</a> мержит более 1300 пулл-реквестов, в которых нет ни одной строчки, написанной человеком. Эти PR создают внутренние ИИ-агенты под названием Minions — они работают полностью автономно, без присмотра инженера.</p><p>Инженер отправляет сообщение в Slack, уходит за кофе — и возвращается к готовому пулл-реквесту, который уже прошёл автотесты и ждёт ревью. Пять задач за то время, которое обычно уходит на две. Звучит как фантастика, но за этой продуктивностью стоит не столько модель, сколько инфраструктура, которую Stripe строил годами — задолго до эры LLM.</p><p>Разбираемся, как устроена система Minions, какие задачи она решает и чему из опыта Stripe могут научиться другие компании. Статья основана на публичных материалах <a href="https://blog.bytebytego.com/p/how-stripes-minions-ship-1300-prs">ByteByteGo</a> и <a href="https://stripe.com/blog/engineering">Stripe Engineering Blog</a>.</p><p><b>Ключевые выводы:</b><br />— Stripe мержит более 1300 PR в неделю, созданных полностью автономными ИИ-агентами<br />— Minions — это unattended-агенты: они не требуют наблюдения или пошагового одобрения<br />— Архитектура построена на «блюпринтах» — гибридах жёсткого пайплайна и агентных циклов<br />— Главный секрет успеха — не модель, а developer-инфраструктура: изолированные окружения, быстрые тесты и чёткие ограничения<br />— Если агент не справился за два цикла CI — задача возвращается человеку</p><h2>Масштаб — цифры и факты</h2><p>Stripe обрабатывает более триллиона долларов платежей в год. Кодовая база компании — сотни миллионов строк кода, преимущественно на Ruby с типизацией <a href="https://sorbet.org">Sorbet</a>. Это относительно редкий стек, с которым LLM практически не сталкивались при обучении.</p><p>На этом фоне цифры Minions выглядят особенно впечатляюще:</p><ul><li><b>1300+ PR в неделю</b> — полностью автоматические, без единой строки человеческого кода</li><li><b>Типы задач</b> — миграции кода, обновление зависимостей, исправления безопасности, рефакторинг</li><li><b>Время запуска агента</b> — менее 10 секунд от запроса до начала работы</li><li><b>Параллельность</b> — один инженер может запустить 5-6 агентов одновременно</li></ul><p>Важно понимать: Stripe не считает каждый PR идеальным. Частично корректный пулл-реквест, который инженер доработает за 20 минут, — это уже серьёзный выигрыш. Система спроектирована с учётом этой реальности.</p><h2>Архитектура агентов</h2><h3>Изолированные окружения — devbox-ы</h3><p>Автономному агенту нужны три свойства от рабочей среды: <b>изоляция</b> (ошибки не затрагивают прод), <b>параллельность</b> (несколько агентов работают одновременно) и <b>предсказуемость</b> (каждый агент стартует с чистого состояния).</p><p>Stripe уже имел всё это. Их «devbox-ы» — облачные машины, предзагруженные с полной кодовой базой, инструментами и сервисами. Они поднимаются за 10 секунд, потому что Stripe заранее провизионирует и прогревает пул машин — клонирует репозитории, прогревает кеши и запускает фоновые сервисы. Инженеры и раньше использовали по одному devbox-у на задачу, а один инженер мог держать полдюжины одновременно. Агенты просто встроились в этот паттерн.</p><p>Поскольку devbox-ы работают в QA-окружении, они уже изолированы от продакшен-данных и реальной пользовательской информации. Агенты получают полные права без подтверждений — радиус поражения любой ошибки ограничен одной одноразовой машиной.</p><h3>Блюпринты — гибрид workflow и агента</h3><p>Есть два классических подхода к оркестрации LLM-систем:</p><ul><li><b>Workflow</b> — фиксированный граф шагов, где каждый шаг делает одну конкретную вещь, а последовательность предопределена</li><li><b>Agent</b> — цикл, в котором LLM сама решает, что делать дальше, на основе результатов предыдущих действий</li></ul><p>Workflow предсказуемы, но негибки. Агенты гибки, но ненадёжны. Stripe построил нечто среднее — «блюпринты» (blueprints).</p><p>Блюпринт — это последовательность узлов, в которой одни узлы выполняют детерминированный код, а другие запускают агентный цикл. Представьте структуру, которая чередует жёсткие и креативные шаги:</p><ul><li>Шаг «реализуй фичу» или «исправь ошибки CI» — полный агентный цикл с инструментами и свободой действий</li><li>Шаг «запусти линтеры» — захардкожен, всегда выполняется одинаково</li><li>Шаг «запуши ветку» — захардкожен, строго по шаблону PR компании</li></ul><p>Такое разделение экономит токены, снижает количество ошибок и гарантирует, что критические шаги выполняются каждый раз. При сотнях запусков в день каждый детерминированный узел — это одна проблема меньше, и этот эффект накапливается.</p><h3>Контекст — как не утонуть в сотнях миллионов строк</h3><p>У LLM ограниченное контекстное окно. Если загрузить все правила и конвенции глобально, контекст заполнится до того, как агент начнёт работать. Stripe использует глобальные правила «очень осторожно» — вместо этого они привязывают правила к конкретным директориям и паттернам файлов. Когда агент перемещается по файловой системе, он автоматически подхватывает только релевантные правила.</p><p>Для информации, которая не живёт в файловой системе, Stripe построил централизованный сервер <b>Toolshed</b>. Он хостит почти <b>500 инструментов</b> через <a href="https://modelcontextprotocol.io">MCP</a> (Model Context Protocol) — открытый стандарт, который даёт агентам единый способ вызывать внешние сервисы. Через MCP агенты получают доступ к внутренней документации, деталям тикетов, статусам билдов, результатам поиска по коду и многому другому.</p><p>Но больше инструментов — не значит лучше. Агенты работают лучше с тщательно подобранным подмножеством, релевантным их задаче. Stripe даёт Minions небольшой набор по умолчанию и позволяет инженерам добавлять дополнительные при необходимости.</p><h3>Модели и обратная связь</h3><p>Stripe не раскрывает конкретные модели, которые используют Minions, но архитектура сознательно абстрагирована от конкретной LLM. Ключевое значение имеет не модель, а инфраструктура обратной связи:</p><ol><li><b>Локальный линтинг</b> — запускается при каждом push за менее чем 5 секунд. Фоновый демон заранее вычисляет, какие правила линтинга применимы, и кеширует результаты</li><li><b>CI</b> — выборочно запускает тесты из батареи в 3+ миллиона тестов. Автофиксы применяются автоматически для известных паттернов ошибок</li><li><b>Повторная попытка</b> — если после автофикса ошибки остались, агент получает ещё один шанс исправить и запушить</li></ol><p>Затем — стоп. <b>Максимум два цикла CI.</b> Если код не проходит после второго push-а, ветка возвращается инженеру. Это ограничение осознанное: LLM показывают убывающую отдачу при повторных попытках решить ту же проблему. Больше раундов — больше токенов и вычислений без пропорционального улучшения.</p><h2>Какие задачи решают агенты</h2><p>Minions лучше всего справляются с задачами, которые хорошо определены, повторяемы и поддаются автоматической проверке:</p><ul><li><b>Миграции кода</b> — перевод со старых API на новые, обновление паттернов использования библиотек</li><li><b>Обновление зависимостей</b> — bump версий, адаптация кода к breaking changes</li><li><b>Исправления безопасности</b> — применение патчей по известным уязвимостям</li><li><b>Рефакторинг</b> — переименование, перемещение модулей, приведение к единому стилю</li><li><b>Мелкие баг-фиксы</b> — исправления, которые накапливаются в on-call очереди за ночь</li></ul><p>Чего Minions <b>не делают</b>:</p><ul><li>Не проектируют новую архитектуру</li><li>Не принимают продуктовых решений</li><li>Не пишут код, требующий глубокого понимания бизнес-логики</li><li>Не работают с задачами, которые нельзя проверить автоматическими тестами</li></ul><p>Это ключевое отличие от «attended» инструментов вроде <a href="https://cursor.com">Cursor</a> или <a href="https://claude.ai/code">Claude Code</a>, которые работают вместе с разработчиком. Инженеры Stripe используют и те, и другие — для разных типов задач.</p><h2>Результаты и метрики</h2><p>Stripe не публикует детальные внутренние метрики, но из публичных материалов и выступлений инженеров можно выделить ключевые результаты:</p><ul><li><b>1300+ PR в неделю</b> — объём, эквивалентный работе десятков инженеров</li><li><b>Сдвиг от написания к ревью</b> — инженеры не исчезли, но их роль изменилась: вместо написания кода они проверяют код, созданный агентами</li><li><b>Частично корректные PR</b> — даже неидеальные результаты экономят время, потому что доработка занимает 20 минут вместо нескольких часов с нуля</li><li><b>Масштабирование без найма</b> — рутинные задачи снимаются с инженеров, позволяя команде фокусироваться на сложной архитектурной работе</li></ul><p>Четыре уровня системы, которые обеспечивают эти результаты:</p><ol><li>Изолированные окружения — безопасные параллельные рабочие пространства</li><li>Гибридная оркестрация — детерминированные гарантии плюс агентная гибкость</li><li>Курированный контекст — правильная информация без перегрузки</li><li>Быстрая обратная связь с жёсткими лимитами на итерации</li></ol><h2>Чему учит опыт Stripe</h2><p>Главный инсайт Stripe: инвестиции в продуктивность разработчиков, сделанные за годы до появления LLM, дали неожиданные дивиденды, когда агенты появились в рабочем процессе.</p><p>Уроки, которые можно вынести:</p><ol><li><b>Начинайте не с выбора модели, а с инфраструктуры.</b> Окружения разработчика, тестовая инфраструктура, пайплайны обратной связи — если они хороши, агенты получат от них выгоду. Если нет — никакая модель не спасёт</li><li><b>Разделяйте детерминированное и агентное.</b> Линтинг, push, создание PR — это не задачи для LLM. Захардкодьте то, что можно захардкодить</li><li><b>Ставьте жёсткие ограничения.</b> Максимум два цикла CI — один из самых важных дизайн-решений Stripe. Знать, когда остановиться, так же важно, как знать, с чего начать</li><li><b>Начинайте с рутины.</b> Миграции, обновления зависимостей, патчи безопасности — это идеальные первые кандидаты для автономных агентов</li><li><b>Человеческое ревью никуда не уходит.</b> Роль инженера смещается от написания кода к проверке кода. Это не замена людей, а усиление команды</li></ol><p>Когда стоит задуматься о внедрении подобного подхода? Если у вас уже есть: надёжная CI/CD-инфраструктура, изолированные окружения для разработки и достаточно рутинных задач, которые поддаются автоматизации.</p><h2>Часто задаваемые вопросы</h2><h3>Какую LLM используют Minions в Stripe?</h3><p>Stripe не раскрывает конкретную модель. Архитектура Minions сознательно абстрагирована от конкретной LLM — ключевую роль играет инфраструктура (devbox-ы, блюпринты, MCP-инструменты), а не сама модель. Это позволяет менять или обновлять модель без переписывания всей системы.</p><h3>Могут ли Minions заменить разработчиков?</h3><p>Нет. Minions решают рутинные, хорошо определённые задачи — миграции, обновления зависимостей, патчи. Архитектурные решения, продуктовое проектирование и задачи с нетривиальной бизнес-логикой по-прежнему требуют человека. Роль инженера смещается от написания к ревью кода.</p><h3>Можно ли повторить подход Stripe в небольшой компании?</h3><p>Принципы масштабируемы: изолированные окружения, гибрид детерминированных и агентных шагов, курированный контекст, жёсткие лимиты на итерации. Но для полноценной реализации нужна зрелая CI/CD-инфраструктура и достаточный объём повторяемых задач. Начните с малого — автоматизируйте один тип рутинной задачи и расширяйте по мере роста доверия к системе.</p><h3>Что такое MCP и зачем он нужен агентам?</h3><p><a href="https://modelcontextprotocol.io">Model Context Protocol</a> (MCP) — это открытый стандарт, который даёт ИИ-агентам единообразный способ вызывать внешние сервисы. Stripe использует MCP для подключения почти 500 внутренних инструментов — от поиска по коду до статусов билдов. Благодаря MCP агенты получают доступ к нужной информации через стандартизированный интерфейс.</p><h2>Выводы</h2><p>Опыт Stripe показывает: будущее разработки — это не замена инженеров агентами, а построение инфраструктуры, в которой агенты становятся ещё одним типом участников инженерного процесса. 1300 PR в неделю без единой строчки человеческого кода — это результат не прорыва в ИИ, а многолетних инвестиций в developer experience.</p><p>Ключевой вопрос не «какую модель выбрать», а «готова ли наша инфраструктура к агентам». Изолированные окружения, быстрые тесты, чёткие ограничения, курированный контекст — всё это можно и нужно строить уже сейчас, вне зависимости от того, когда именно вы запустите первого агента.</p><p>Если тема ИИ-агентов в разработке вам интересна, рекомендуем изучить оригинальные статьи в <a href="https://stripe.com/blog/engineering">Stripe Engineering Blog</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Масштабирование монолита до 1 млн строк: уроки от тимлида до CTO</title>
      <link>https://tproger.ru/translations/maswtabirovanie-monolita-do-1-mln-strok--uroki-ot-timlida-do-cto</link>
      <comments>https://tproger.ru/translations/maswtabirovanie-monolita-do-1-mln-strok--uroki-ot-timlida-do-cto?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/maswtabirovanie-monolita-do-1-mln-strok--uroki-ot-timlida-do-cto</guid>
      <description><![CDATA[<p>30 лучших уроков из 113 по масштабированию Django-монолита до 1 000 000 строк: архитектура, тестирование, мониторинг, безопасность, деплой и карьерный рост.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/maswtabirovanie-monolita-do-1-mln-strok--uroki-ot-timlida-do-cto">Масштабирование монолита до 1 млн строк: уроки от тимлида до CTO</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Архитектура ПО]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 07:52:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>Что можно узнать из монолита на миллион строк кода? Джек Кинселла проработал 7 лет техлидом и CTO в <a href="https://www.morphmarket.com/">MorphMarket</a> — маркетплейсе на стеке <a href="https://www.djangoproject.com/">Django</a> / <a href="https://react.dev/">React</a> (TS) / React Native с командой из 20 человек. За это время кодовая база выросла до 1 000 000 строк, а Джек прошёл путь от первого инженера до технического директора.</p><p>Он опубликовал 113 уроков, которые вынес из этого опыта. Мы отобрали самые ценные, сгруппировали по темам и адаптировали для русскоязычной аудитории. Каждый урок — практический: его можно взять и применить в своём проекте уже сегодня.</p><blockquote><b>Ключевые выводы</b><br /><br />— Кэширование — последняя мера. Сначала исправьте модель данных, индексы и N+1-запросы.<br />— E2E-тесты на happy path дают в 10 раз больше отдачи, чем юнит-тесты на отдельные методы.<br />— Доведите Sentry до inbox zero — это единственный самый мощный шаг для качества продукта.<br />— Не обвиняйте конкретного разработчика за баг в проде: это всегда каскад из 3+ ошибок системы.<br />— Деплой за 2 минуты вместо 28 — достижимо, и это меняет культуру принятия решений.</blockquote><h2>Про архитектуру и масштабирование</h2><h3>Используйте сервисные объекты вместо раздувания моделей</h3><p>В фреймворках, где модели строятся вокруг существительных (Product, User, Auction), логика неизбежно скапливается в этих классах. Со временем каждый из них превращается в монстра на тысячи строк. Решение — выносить процессы в отдельные сервисные объекты: PlaceAuctionBidService, ProductBillingService. Суть — перестать мыслить существительными и начать мыслить глаголами.</p><h3>Одна и та же вещь, реализованная дважды — провал технического лидерства</h3><p>Если в кодовой базе есть два разных клиента к одному платёжному провайдеру, три файла с функциями для работы с датами или дублирующиеся UI-компоненты — это симптом отсутствия ответственного за архитектуру. Создавайте очевидные, легко находимые места для общего кода (common/datetime.py, common/geo.py) и отмечайте переиспользуемый код на ревью.</p><h3>Полиморфные связи в БД — почти всегда ошибка</h3><p>ORM-код для полиморфных отношений становится крайне запутанным, и вы теряете защиту через foreign key constraints. Проще добавить nullable FK для каждой связанной модели и написать абстракции на уровне запросов.</p><h3>Дефолтные фильтры и сортировки в ORM — всегда ошибка</h3><p>Скрытые дефолты вроде order_by('-id') или filter(is_deleted=False) становятся миной замедленного действия, когда в команде 20+ человек. Новый разработчик не знает про неявное поведение — и получает баг. А скрытый ORDER BY портит аналитические запросы, потому что ORM добавляет ключ сортировки в SELECT.</p><h3>Вся инфраструктура — в коде</h3><p>Когда Джек пришёл в MorphMarket, все 27 крон-задач были настроены вручную на продакшн-сервере. Большинство отсутствовали на staging. Перенос в код (а затем конфигурация AWS/Heroku/CloudFlare/Sentry через <a href="https://www.terraform.io/">Terraform</a>) сделал все окружения похожими друг на друга — и, что важно, сделал инфраструктуру доступной для чтения AI-агентам.</p><h2>Про тестирование</h2><h3>E2E &gt; интеграционные &gt; юнит-тесты</h3><p>Пользователям важно, чтобы система работала целиком. Один E2E-тест на happy path каждой ключевой фичи (<i>регистрация, покупка, создание листинга</i>) даёт на порядок больше уверенности, чем десятки юнит-тестов. Детали дорабатывайте интеграционными и юнит-тестами — они быстрее и проще в поддержке.</p><h3>Автоматические тесты для шаблонных фич</h3><p>В MorphMarket написали систему, которая автоматически тестирует около 300 админ-страниц: парсит имя страницы, находит фабрику, создаёт запись в БД и проверяет, что страница открывается. Тот же подход можно применить к любому CRUD-эндпоинту без выделенного теста.</p><h3>Изолируйте тесты полностью</h3><p>Хрупкость тестов убивает мотивацию команды. Основные ловушки:</p><ul><li>Всё, что связано со временем — замораживайте или мокайте</li><li>Фиксируйте seed для всех источников случайности — в каждой библиотеке</li><li>Запретите реальные HTTP-запросы в не-E2E тестах (используйте VCR-подобные библиотеки)</li><li>Отдельный Redis для тестов с автоочисткой перед каждым тестом</li><li>Тестовая среда не должна читать ни одной переменной из вашего .env</li></ul><h3>Мокайте только внешние объекты</h3><p>Мок — полезный инструмент, но только для внешних зависимостей. Мокать внутренние методы тестируемого класса — антипаттерн. Если можно переписать тест без мока без потери скорости — так и сделайте.</p><h3>CI должен проверять не только ошибки, но и раздражающие мелочи</h3><p>В MorphMarket CI также ловит новые warning-и в тестах, рассинхронизацию SDK с бэкендом и забытые миграции в Django. Чем раньше замечена мелочь, тем дешевле её исправить.</p><h2>Про отладку и мониторинг</h2><h3>Sentry до inbox zero — самый мощный шаг к качеству</h3><p>Когда Джек пришёл в компанию, Sentry показывал 1 000 ошибок в час. После агрессивной фильтрации (игнор старых браузеров, расширений, пометка JavaScript-ошибок уникальным идентификатором) и починки реальных багов — меньше 1 ошибки в час. Результат: каждая новая ошибка стала <i>событием</i>, на которое команда реагирует немедленно.</p><h3>Dead Man Switch — мониторьте то, что должно происходить</h3><p>Исключения шумят и легко ловятся. А вот отсутствие события — нет. Если крон-система перестала работать или бэкапы БД не снимаются — вы узнаете об этом только через heartbeat-мониторы. Настройте их.</p><h3>Username в каждой строке лога</h3><p>По умолчанию в логах — только IP-адрес. Но IP ротируется, создаёт лишнее перенаправление при дебаге и не показывает картину при использовании нескольких устройств. Поместите текущий запрос в thread-local и добавьте username в каждую запись.</p><h3>Трипвайр-алерты на 20 самых важных эндпоинтов</h3><p>Деградация производительности подкрадывается незаметно — инкрементальные фичи постепенно ломают индексы и кэши. Установите порог в несколько стандартных отклонений от нормы на ключевых эндпоинтах. Команда узнает о проблеме в течение часов после деплоя, а не через неделю жалоб.</p><h3>Громко падайте при ошибках</h3><p>Не глушите исключения except: pass. Паттерн от Джека: <i>крашиться локально, мягко отказывать в проде — но всегда отправлять ошибку в Sentry/логи</i>. Чем раньше заметили — тем меньше ущерб.</p><h2>Про работу в команде</h2><h3>Не обвиняйте одного человека за баг в проде</h3><p>Любой инцидент — это каскад минимум трёх провалов: автор не заметил, ревьюер пропустил, QA не покрыло, тесты не проверили, архитектура допустила класс ошибки. Обвинение одного человека мешает команде видеть системные причины.</p><h3>Все разработчики должны быть немного фулстек</h3><p>В MorphMarket убрали строгое деление на фронтенд/бэкенд/ops. Переобучение заняло год, но окупилось: фронтендер добавляет поле в БД сам, а не ждёт бэкендера — это сокращает время доставки фич.</p><h3>Пятницы технического долга</h3><p>Разумный компромисс между CEO, который хочет фичи, и инженерами, которым нужна чистота кода: с понедельника по четверг приоритеты задаёт продукт, а по пятницам — CTO. Бонус: инженеры отдыхают на глубоких задачах перед выходными.</p><h3>Запретите длинные PR</h3><p>В MorphMarket был период, когда PR висели по 3 месяца и накапливали тысячи изменений. Их невозможно ревьюить, они конфликтуют с master и создают огромный деплой-риск. Новое правило: мерж в master каждые 1–2 дня, максимум — раз в неделю. Побочный эффект: старшие разработчики дают фидбэк раньше, и драматические переписывания случаются реже.</p><h3>Поощряйте общение в удалённых командах</h3><p>Джек начал с ежедневных постов о прогрессе, потом стал публично задавать вопросы (даже на которые знал ответ), делиться изменениями в коде и просить мнения. Это постепенно снизило барьер и сделало общение нормой, а не исключением.</p><h2>Про производительность</h2><h3>N+1-запросы — враг номер один в ORM</h3><p>Проблема проявляется на крупных эндпоинтах, которые постепенно расширяют разные авторы: новые фильтры и параметры создают спорадические N+1, которые возникают только при определённом сочетании фильтров и объёме данных. Настройте APM (например, <a href="https://newrelic.com/">New Relic</a>) для автоматического обнаружения N+1 и обучите команду ловить их на ревью.</p><h3>Кэширование — последняя мера</h3><p>Код кэширования чудовищно сложен в поддержке. Сначала исправьте модель данных, допишите индексы, уберите N+1, оптимизируйте алгоритмы. И только после этого — кэш. Джек рассказывает о случаях, когда наивный кэш работал на малых объёмах, но убивал Redis (он однопоточный!) при росте данных на два порядка.</p><h3>Таймауты на всех уровнях — иммунная система сервиса</h3><p>Веб-запрос должен завершиться за 25 секунд — иначе убивается. Да, для длинных задач придётся использовать фоновые задачи, но без таймаутов одна тормозящая внешняя API может съесть все потоки сервера и уронить всё.</p><h3>Выгружайте работу в фоновые задачи</h3><p>Отправка email, push-уведомления, обработка вебхуков от платёжных систем — всё это должно уходить в очередь. Веб-процесс обязан оставаться быстрым.</p><h3>ORDER BY id вместо ORDER BY created</h3><p>Если поле created неизменяемо и совпадает по порядку с id — сортируйте по id. Индекс на id уже есть бесплатно в каждой таблице.</p><h3>Удаляйте ненужные данные</h3><p>В MorphMarket некоторые таблицы копили 10 лет данных — логи IP-адресов, записи push-уведомлений, сообщения девятилетней давности. Скрипт очистки делает эти таблицы компактнее и быстрее.</p><h2>Про безопасность и надёжность</h2><h3>Начните с модели угроз: что может получить атакующий?</h3><p>Для MorphMarket основные вектора: захват аккаунтов (фикс — обязательный 2FA), спам-фишинг (капча на регистрации + фильтры сообщений), DDoS (<a href="https://www.cloudflare.com/">Cloudflare</a> + rate limit на nginx + кэш ключевых эндпоинтов). Универсального подхода нет — каждый сервис должен понимать свою специфику.</p><h3>CHECK-ограничения в БД — лучше предотвратить, чем чинить</h3><p>Раньше в MorphMarket крон-задача раз в сутки проверяла целостность данных и слала алерты. Всё заменили на CHECK constraints на уровне БД — некоторые проверяют до 16 операций над разными колонками. Невалидные данные просто не могут быть записаны.</p><h3>Вебхуки — рассадник race conditions</h3><p>Действие в коде может вызвать вебхук, который прилетит быстрее, чем данные запишутся в БД. Получатель вебхука прочитает устаревшее состояние и может затереть свежие данные. Решение: откладывайте действия, вызывающие вебхуки, до on_commit в БД.</p><h3>Логируйте намерение перед побочным эффектом — особенно для платежей</h3><p>Перед списанием с карты или возвратом пишите в лог: <i>"bill user XYZ $100 for Y"</i>. Простой Write-Ahead Log спасал MorphMarket в нескольких инцидентах.</p><h2>Про деплой</h2><h3>Деплой должен быть быстрым — действительно быстрым</h3><p>MorphMarket сократил деплой с 28 минут до 2. Как: разделили фронтенд и бэкенд, распараллелили, перешли на Rust-based компиляцию JS, вынесли сборку на мощные машины (MacBook M-series вместо commodity Heroku), убрали из слага всё ненужное, почистили старые ассеты из S3.</p><h3>Smoke-тест после каждого деплоя в прод</h3><p>Автоматическая проверка ключевых страниц через <a href="https://playwright.dev/">Playwright</a> после каждого деплоя. Если последние 150 деплоев были скучными — соблазн перестать проверять вручную огромен. Автоматический smoke-тест не устаёт и не теряет бдительность.</p><h3>Не деплойте ничего рискованного в пятницу</h3><p>Баг может проявиться вечером или в субботу, когда никого нет. Мелкие хотфиксы и изменения в админке — можно. Всё остальное — до четверга.</p><h3>Плейбук для инцидентов при деплое</h3><p>Короткие инструкции: как убить залипшие соединения к БД, точечно почистить кэш (без flush, который разлогинит всех), форсировать обновление ассетов. Обученная команда сокращает даунтайм в разы.</p><h2>Про карьерный рост — от тимлида до CTO</h2><h3>Научитесь говорить о производительности сотрудников</h3><p>Джек признаётся, что панически боялся этих разговоров, потому что не любит конфликты. Но реальность проста: лучше открыто сказать человеку, где он не дотягивает, чем копить раздражение и уволить неожиданно. Большинство людей способны расти под менторингом — Джек это недооценивал.</p><h3>Документ ожиданий от сотрудника</h3><p>Если написать <i>"мы ценим, когда вы решаете проблемы в #bug-discussion до того, как они дойдут до CTO"</i>, люди действительно начнут так делать. Мотивированный сотрудник хочет ясности. Он не может прочитать ваши мысли.</p><h3>Одно крупное изменение за раз</h3><p>Внедряете E2E-тесты? Доведите до стабильности, прежде чем браться за линтеры. Если система сделана плохо — команда не будет ей доверять и не будет использовать. Плюс есть предел того, сколько изменений люди могут усвоить одновременно.</p><h3>CLI-инструменты + AI = максимальный рычаг</h3><p>AI отлично работает с текстом. CLI-инструменты тоже. Дайте AI доступ к продакшн-логам, отчётам об ошибках, read-only реплике БД, CI-результатам и REPL — и получите огромный множитель продуктивности. Джек называет это <i>"наблюдаемость через CLI — ваш главный усилитель для AI"</i>.</p><h2>FAQ</h2><h3>Почему монолит, а не микросервисы?</h3><p>Монолит на миллион строк с 20 разработчиками — рабочая модель, если соблюдать дисциплину. Микросервисы добавляют сетевую сложность, и для команды такого размера overhead координации перевешивает выгоды. Джек не утверждает, что микросервисы плохи — он утверждает, что переход оправдан только при конкретной боли, а не как дефолтный выбор.</p><h3>С чего начать, если в проекте уже бардак?</h3><p>С Sentry до inbox zero и таймаутов на веб-запросы. Первое даёт видимость реальных проблем, второе предотвращает каскадные отказы. Дальше — по статье: N+1, изоляция тестов, сервисные объекты.</p><h3>Насколько эти уроки применимы за пределами Django?</h3><p>Джек 17 лет работал с Rails, Laravel, Express и другими фреймворками — и подчёркивает, что большинство уроков переносимы. N+1, дефолтные сортировки, race conditions в вебхуках, инфраструктура как код — всё это не привязано к конкретному стеку.</p><h3>Правда ли, что E2E-тесты лучше юнит-тестов?</h3><p>Не <i>лучше</i>, а дают больше отдачи на первом этапе. Один E2E-тест на happy path покрывает весь стек. Юнит-тесты нужны для деталей и граничных случаев, но начинать покрытие лучше сверху вниз.</p><h2>Выводы</h2><p>113 уроков Джека Кинселлы — это не теория из книг, а выжимка из 7 лет ежедневной работы над монолитом, который обслуживает реальных пользователей. Главные принципы:</p><ul><li>Предотвращайте, а не чините — CHECK constraints, таймауты, линтеры</li><li>Делайте невидимое видимым — логи, мониторинг, Sentry до inbox zero</li><li>Инвестируйте в скорость обратной связи — быстрый деплой, быстрый CI, короткие PR</li><li>Доверяйте людям и системе, а не контролю — fullstack-навыки, плейбуки, документ ожиданий</li></ul><p>Оригинальная статья: <a href="https://www.semicolonandsons.com/articles/scaling-a-monolith-to-1m-loc-113-pragmatic-lessons-from-tech-lead-to-cto">Scaling a Monolith to 1M LOC: 113 Pragmatic Lessons from Tech Lead to CTO</a> (Semicolon &amp; Sons, Jack Kinsella).</p><p>Если знаете коллегу, который борется с растущим монолитом — отправьте ему эту статью. А в комментариях расскажите, какой урок оказался самым неожиданным для вас.</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ-инструменты не ускорили разработку — потому что код никогда не был узким местом</title>
      <link>https://tproger.ru/translations/ai-instrumenty-ne-uskorili-razrabotku---potomu-chto-kod-nikogda-n</link>
      <comments>https://tproger.ru/translations/ai-instrumenty-ne-uskorili-razrabotku---potomu-chto-kod-nikogda-n?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/ai-instrumenty-ne-uskorili-razrabotku---potomu-chto-kod-nikogda-n</guid>
      <description><![CDATA[<p>Николь Форсгрен объясняет парадокс ИИ-продуктивности: код генерируется быстрее, но доставка ПО не ускоряется. Разбираем фреймворк DevEx и метрики DORA.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/ai-instrumenty-ne-uskorili-razrabotku---potomu-chto-kod-nikogda-n">ИИ-инструменты не ускорили разработку — потому что код никогда не был узким местом</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 07:52:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Индустрия потратила миллиарды на ИИ-инструменты для разработчиков. <a href="https://github.com/features/copilot">GitHub Copilot</a>, <a href="https://cursor.com">Cursor</a>, <a href="https://codeium.com">Codeium</a>, десятки других ассистентов пишут код за секунды. Но поставки программного обеспечения быстрее не стали. Время от коммита до продакшена в крупных компаниях по-прежнему измеряется неделями и месяцами. Николь Форсгрен, автор книги <a href="https://itrevolution.com/product/accelerate/">Accelerate</a> и создатель метрик DORA, объясняет почему: код никогда и не был узким местом.</p><p>В своём докладе на <a href="https://qconsf.com/">QCon San Francisco</a> в марте 2026 года Форсгрен представила концепцию "AI Productivity Paradox" — парадокса ИИ-продуктивности. Суть проста: если узкое место было не в написании кода, то ускорение написания кода ничего не даст. А если и даст — то лишь создаст ещё большее давление на те части процесса, которые и без того задыхались.</p><p>ИИ-ассистенты для программирования — это инструменты, которые используют большие языковые модели для автодополнения кода, генерации функций по описанию на естественном языке, рефакторинга и объяснения кода. Самые известные — <a href="https://github.com/features/copilot">GitHub Copilot</a>, <a href="https://cursor.com">Cursor</a>, <a href="https://codeium.com">Codeium</a> и <a href="https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview">Claude Code</a>. Их общее обещание — кратный рост продуктивности разработчиков. По данным маркетинговых материалов, разработчики пишут код "на 55% быстрее" или "в 2 раза продуктивнее". Но что именно считается продуктивностью?</p><blockquote><b>Ключевые выводы</b><br /><br />— ИИ-ассистенты ускоряют написание кода, но не ускоряют доставку программного обеспечения — потому что написание кода занимает лишь малую часть от времени полного цикла разработки<br />— Настоящие узкие места — CI/CD-пайплайны, код-ревью, ручные согласования, тестирование и деплой — не затрагиваются ИИ-ассистентами<br />— По метрикам DORA, высокопроизводительные команды деплоят несколько раз в день с lead time менее суток — и это результат системной работы с процессами, а не с инструментами генерации кода<br />— Фреймворк DevEx (feedback loops, flow state, cognitive load) помогает найти настоящие точки трения<br />— Вместо покупки нового ИИ-инструмента стоит провести аудит процесса доставки: где теряется время, почему, и как это устранить</blockquote><h2>Парадокс ИИ-продуктивности</h2><p>"Мы можем генерировать код за минуты, за секунды, — говорит Форсгрен. — Люди из любых подразделений могут "вайб-кодить" приложение и запушить его. Но деплой по-прежнему занимает дни. Я написала тут "дни" — это я была оптимисткой. Обычно это месяцы".</p><p>Парадокс в том, что ИИ не просто не решает проблему доставки — он делает её более заметной и болезненной. Когда код генерируется быстрее, очереди на код-ревью растут. CI-пайплайны захлёбываются. Тестовые наборы не справляются с нагрузкой. Форсгрен формулирует это так: "ИИ усиливает те же проблемы, которые существовали и раньше. Только теперь — быстрее".</p><p>Она приводит два показательных примера. В 2012 году в Knight Capital инженер выполнил рутинный деплой. Скрипт развёртывания реактивировал старый feature flag. Деплой был ручным. Автоматических тестов не было. За 45 минут компания потеряла 460 миллионов долларов. А в начале 2026 года разработчик по имени Джейсон использовал ИИ-ассистент <a href="https://replit.com/">Replit</a> для работы с базой данных. Он явно указал: "никаких изменений в live-данных". Установил code freeze. Результат? "Новые инструменты — те же старые проблемы. Только теперь быстрее".</p><h2>Почему код — не узкое место</h2><p>Форсгрен разделяет процесс разработки на "внутренний цикл" (inner loop) и "внешний цикл" (outer loop). Внутренний цикл — это то, что происходит на машине разработчика: написание кода, локальная отладка, запуск тестов. Внешний цикл — всё остальное: CI/CD-пайплайны, код-ревью, тестирование, согласования, деплой.</p><p>ИИ-инструменты ускоряют внутренний цикл. Но внешний цикл — где на самом деле теряется время — они не затрагивают.</p><p>"Написание кода больше не является узким местом, — подчёркивает Форсгрен. — Мы можем генерировать сколько угодно кода. Но это делает остальные точки трения ещё дороже и заставляет их торчать ещё сильнее. Справляются ли наши тестовые наборы с такой нагрузкой? Справляются ли наши CI-пайплайны? Могу ли я ревьюить достаточно пулл-реквестов для всего того шлака, который валится в систему? Не всегда".</p><p>Вот из чего складывается "невидимое" время доставки, которое ИИ не трогает:</p><ul><li><b>Код-ревью</b> — пулл-реквесты висят днями, потому что назначены не тому человеку, застряли в очереди или ревьюер в отпуске</li><li><b>CI/CD-пайплайны</b> — сборка падает, flaky-тесты, зависимости между сервисами</li><li><b>Ручные согласования</b> — деплой требует координации нескольких команд, инструментов, групповых решений о рисках</li><li><b>Тестирование</b> — автоматических тестов недостаточно, а ручное тестирование не масштабируется</li><li><b>Онбординг</b> — новый сотрудник на третьей неделе всё ещё ждёт доступ к базе данных</li><li><b>"Не моя зона ответственности"</b> — задачи буксуют на стыках между командами, процессами и системами</li></ul><h2>Что говорят данные</h2><p><a href="https://dora.dev/">DORA</a> (DevOps Research and Assessment) — это фреймворк из четырёх метрик, который Форсгрен разработала для измерения эффективности доставки ПО. Две метрики отвечают за скорость, две — за стабильность:</p><ul><li><b>Deployment frequency</b> — как часто команда деплоит в продакшен</li><li><b>Lead time for changes</b> — сколько времени проходит от коммита до запуска в продакшене</li><li><b>Change failure rate</b> — какой процент изменений требует отката или вмешательства</li><li><b>Mean time to restore (MTTR)</b> — как быстро команда восстанавливает сервис после сбоя</li></ul><p>У высокопроизводительных команд показатели выглядят так: деплой несколько раз в день (или по потребности бизнеса, а не из-за технических ограничений), lead time менее суток, change failure rate около 5%, восстановление после сбоя — менее часа.</p><p>"Эти команды не просто везучие, — говорит Форсгрен. — Они системно устранили трение". И она отмечает важный нюанс: это работает в компаниях любого размера и любой отрасли. Крупные компании говорят: "Это только для стартапов — у них нет нашего регулирования". Стартапы говорят: "Это только для крупных — у них ресурсы". Данные показывают, что и те, и другие неправы.</p><p>При этом ИИ-инструменты усиливают давление на внешний цикл. Форсгрен отмечает, что многие команды удваивают инвестиции во внутренний цикл (ещё больше ИИ-инструментов, ещё быстрее генерация), игнорируя тот факт, что внешний цикл "по-прежнему так же медленный, а может, и ещё медленнее".</p><p>Отдельно Форсгрен обращает внимание на метрику "строки кода" (lines of code): "Это всегда была бесполезная метрика. ИИ наконец-то сделал это очевидным для всех, потому что теперь кода генерируется слишком много. Он чрезмерно многословный, полон избыточных комментариев. Иногда лучшее, что можно сделать — это удалить код".</p><h2>Где реально теряется время</h2><p>Форсгрен приводит конкретные цифры стоимости трения. По данным McKinsey, 40% бюджетов на разработку уходят на устранимый "rework" — переделки, которых можно было избежать. Другое исследование показало, что разработчики ощущают свою продуктивность на уровне 68,5% — а недостающие 31,5% обходятся мировой экономике в 300 миллиардов долларов потерянного ВВП. Ещё одна оценка: 1,52 триллиона долларов теряется ежегодно из-за технического долга.</p><p>Форсгрен предлагает простую "расчётку на салфетке": 20 разработчиков, каждый теряет по 30 минут в день на одну точку трения. Это 10 часов в день, 2600 часов в год. При стоимости 100 долларов в час — 260 000 долларов в год. "Мы уже тратим это время, — говорит она. — Просто тратим его на борьбу с трением, а не на его устранение".</p><p>Типичные точки потери времени, которые ИИ-инструменты не затрагивают:</p><ol><li><b>Медленная сборка</b> — двухчасовой билд означает двухчасовое ожидание обратной связи. Разработчик переключает контекст, начинает параллельную задачу, теряет фокус</li><li><b>Процесс код-ревью</b> — отсутствие чётких владельцев, ручное назначение, неравномерная нагрузка между ревьюерами</li><li><b>Ручные деплои</b> — координация между командами, согласование рисков, ручные чек-листы</li><li><b>Flaky-тесты</b> — нестабильные тесты подрывают доверие к CI-пайплайну и замедляют обратную связь</li><li><b>Процессные задержки</b> — согласование с юристами, безопасниками, product-менеджерами, которое "всегда занимает столько времени"</li></ol><h2>Фреймворк DevEx — как найти настоящие проблемы</h2><p>Вместо абстрактной "продуктивности" Форсгрен предлагает работать с Developer Experience (DevEx) — опытом разработчика. Фреймворк DevEx состоит из трёх измерений:</p><ul><li><b>Feedback loops</b> (петли обратной связи) — сколько времени проходит от действия до результата? Сколько ждать, пока сборка завершится? Пока ревьюер ответит? Пока CI/CD-пайплайн отработает?</li><li><b>Flow state</b> (состояние потока) — может ли разработчик сосредоточиться на сложных задачах? Или его постоянно отвлекают переключения контекста, совещания, ожидание ответов?</li><li><b>Cognitive load</b> (когнитивная нагрузка) — сколько ментальной ёмкости уходит на "обслуживание" процесса? Исследования Глории Марк показывают, что максимум глубокой работы в день — около 4 часов. На что разработчик тратит эти 4 часа?</li></ul><p>Эти три измерения взаимосвязаны. Быстрая обратная связь сохраняет flow state и снижает когнитивную нагрузку. Низкая когнитивная нагрузка позволяет сосредоточиться и принимать решения быстрее. Защищённый flow state ускоряет обучение и накапливает результаты со временем.</p><p>ИИ меняет динамику flow state (состояния потока), отмечает Форсгрен: "Раньше мы могли заблокировать часы для глубокой работы над кодом. Теперь мы не просто пишем код — мы промптим, тут же получаем обратную связь, принимаем код, ревьюим, переписываем. Это как Stack Overflow на стероидах".</p><h3>Как начать: 7 шагов</h3><p>Форсгрен и Аби Нода (CEO компании DX) выделили семь шагов, которые проходят сотни компаний при улучшении DevEx:</p><ol><li><b>Поговорите с людьми</b> — прежде чем собирать метрики, просто спросите разработчиков: "Что вас бесит каждый день?"</li><li><b>Начните с малого</b> — выберите одну видимую, достижимую проблему, которую можно решить за недели, а не за кварталы</li><li><b>Соберите данные</b> — системная телеметрия, опросы, метрики результатов</li><li><b>Приоритизируйте через RICE</b> — Reach (охват) x Impact (влияние) x Confidence (уверенность) / Effort (усилия)</li><li><b>Продайте стратегию</b> — переведите технические проблемы на язык долларов и бизнес-результатов</li><li><b>Внедряйте изменения</b> — от локальных экспериментов в одной команде до масштабирования на всю организацию</li><li><b>Оцените и покажите ценность</b> — документируйте результаты и делитесь ими</li></ol><p>Форсгрен подчёркивает: начинать можно с любого шага в зависимости от зрелости организации. Но на любом этапе стоит "просто поговорить с несколькими людьми" — это самый быстрый и дешёвый способ получить достоверные данные.</p><h3>RICE: как приоритизировать улучшения</h3><p>Форсгрен рекомендует фреймворк RICE для выбора, какие проблемы решать первыми:</p><ul><li><b>Reach</b> — сколько людей затронет улучшение?</li><li><b>Impact</b> — насколько сильно оно улучшит их работу?</li><li><b>Confidence</b> — насколько мы уверены, что это выполнимо?</li><li><b>Effort</b> — сколько усилий потребуется? (чем меньше, тем лучше)</li></ul><p>Пример из доклада: три кандидата на улучшение — автоматизация flaky-тестов (высокий охват, высокое влияние, но огромные усилия), оптимизация процесса код-ревью (высокий охват, высокое влияние, низкие усилия) и мониторинговые дашборды (средний охват, средние усилия). Выбор очевиден: начать с код-ревью — "широкое влияние, высокая уверенность, быстрые результаты, не слишком много усилий".</p><h2>FAQ</h2><h3>ИИ-ассистенты для кода совсем бесполезны?</h3><p>Нет. ИИ-ассистенты действительно ускоряют написание кода, автодополнение, генерацию шаблонов и объяснение чужого кода. Проблема не в самих инструментах, а в завышенных ожиданиях: ускорение одного этапа (написание кода) не ускоряет весь процесс (доставку). По аналогии из теории ограничений: оптимизация не-узкого-места не улучшает пропускную способность системы.</p><h3>Какие метрики использовать вместо "строк кода"?</h3><p>Форсгрен рекомендует фреймворк <a href="https://queue.acm.org/detail.cfm?id=3595878">SPACE</a>: Satisfaction (удовлетворённость инструментами и процессами), Performance (качество результатов: pass rate тестов, частота сбоев), Activity (количественные метрики: PR, деплои — но не строки кода), Communication and Collaboration (взаимодействие: ревью, API-вызовы, совещания), Efficiency and Flow (время от действия до результата). Дополнительно — четыре метрики DORA для end-to-end доставки.</p><h3>Как убедить руководство инвестировать в DevEx, а не в новые ИИ-инструменты?</h3><p>Форсгрен приводит три стратегии. Первая — видимость и подотчётность: пример Дэйва Андерсона из Amazon, который создал ежемесячный отчёт для топ-менеджмента с рейтингом команд по ошибкам. "Через неделю директора бежали к нему в офис, чтобы убрать свою команду из списка". Вторая — простые данные с чёткими действиями: пример LinkedIn, где "Developer Insights Hub" не просто показывал метрики, а позволял детализацию до конкретной причины проблемы. Третья — перевод трения в доллары: пример Block, где посчитали стоимость каждой точки трения и сэкономили миллионы за 12 месяцев.</p><h3>Что делать прямо сейчас — одно конкретное действие?</h3><p>Для рядового разработчика — записывать в течение недели все моменты, когда теряется 30+ минут на "ерунду, которой не должно быть". Для тимлида — провести 30-минутную ретроспективу: "Что на этой неделе замедлило нас, но не было собственно работой?". Для руководителя — поговорить минимум с тремя людьми и посчитать стоимость трения "на салфетке".</p><h2>Выводы</h2><p>Главный тезис Форсгрен провокативен, но подкреплён данными: ИИ-инструменты для написания кода не ускорили доставку программного обеспечения, потому что написание кода никогда не было настоящим узким местом. Настоящие узкие места — это процессы, согласования, пайплайны, код-ревью и инфраструктура деплоя.</p><p>Организации, которые выигрывают в эпоху ИИ, не просто выдали всем Copilot или Cursor. Они системно устраняют трение, чтобы разработчики могли доставить код до клиента, провести эксперимент, получить обратную связь. "Все крупные компании, с которыми я работаю, — говорит Форсгрен, — сейчас активно ищут способы убрать это трение".</p><p>Вместо того чтобы покупать очередной ИИ-инструмент, стоит задать себе три вопроса: Что на самом деле замедляет доставку? Где разработчики теряют время на борьбу с процессом, а не на решение задач? И какое самое маленькое изменение может убрать самую большую точку трения?</p><p><i>Источник: <a href="https://www.infoq.com/news/2026/03/agoda-ai-code-bottleneck/">From Friction to Flow: How Great DevEx Makes Everything Awesome</a> — доклад Николь Форсгрен на QCon San Francisco, март 2026.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>GitHub Actions убивает вашу команду — и вот почему</title>
      <link>https://tproger.ru/translations/github-actions-ubivaet-vawu-komandu---i-vot-pochemu</link>
      <comments>https://tproger.ru/translations/github-actions-ubivaet-vawu-komandu---i-vot-pochemu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/github-actions-ubivaet-vawu-komandu---i-vot-pochemu</guid>
      <description><![CDATA[<p>Бывший инженер CircleCI разбирает все проблемы GitHub Actions — от крашей логов до ловушки YAML. Узнайте, почему Buildkite лучше для продакшена.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/github-actions-ubivaet-vawu-komandu---i-vot-pochemu">GitHub Actions убивает вашу команду — и вот почему</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[CI/CD]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 05:33:42 GMT</pubDate>
      <content:encoded><![CDATA[<p>Автор этого текста — Иэн Данкан, один из первых инженеров <a href="https://circleci.com/">CircleCI</a>. За свою карьеру он перепробовал практически все CI-системы, которые существуют: <a href="https://www.jenkins.io/">Jenkins</a>, <a href="https://www.travis-ci.com/">Travis CI</a>, <a href="https://circleci.com/">CircleCI</a>, <a href="https://semaphoreci.com/">Semaphore</a>, <a href="https://www.drone.io/">Drone</a>, <a href="https://concourse-ci.org/">Concourse</a>, <a href="https://en.wikipedia.org/wiki/Wercker">Wercker</a>, <a href="https://www.jetbrains.com/teamcity/">TeamCity</a>, <a href="https://www.atlassian.com/software/bamboo">Bamboo</a>, <a href="https://docs.gitlab.com/ee/ci/">GitLab CI</a>, <a href="https://aws.amazon.com/codebuild/">CodeBuild</a> и другие, названия которых милосердно стёрлись из памяти. Его вердикт: <a href="https://github.com/features/actions">GitHub Actions</a> — это не хорошо. Даже не «нормально». У него есть доля рынка ровно по одной причине — он уже там, прямо в вашем репозитории. Как плесень на стенах съёмной квартиры: вы не выбирали её, но она идёт в комплекте.</p><blockquote>Если вы используете <a href="https://nixos.org/">Nix</a>, присмотритесь к <a href="https://garnix.io/">Garnix</a> — он анализирует ваш flake, определяет, что нужно собрать, и делает это. Никакого YAML. Лучший CI-конфиг — это отсутствие CI-конфига. Но эта статья не для вас. Эта статья — для всех остальных.</blockquote><h2>Часть I: Нисхождение</h2><h2>Просмотрщик логов, или Куда уходит ваш день</h2><p>Билд упал. Красный крестик. Вы нажимаете на него и попадаете... нет, не в логи. Вы попадаете на страницу Checks Summary. Оттуда — в Workflow Runs. Оттуда — в Jobs. Каждый шаг свёрнут. Каждая страница — это новый спиннер. Три-четыре клика, чтобы добраться до собственно ошибки. Это не отладка — это квест.</p><p>Просмотрщик логов, надо отдать ему должное, стабильно роняет браузер. Не один раз, не случайно — воспроизводимо, надёжно. Откройте лог длинного билда, попробуйте поискать текст — Chrome ляжет. Это не баг, это фича: система предлагает вам отдохнуть от мониторов.</p><p>На длинных логах скроллбар становится декоративным. Он есть, он выглядит как скроллбар, но прокрутить до конца вы не сможете. Приходится скачивать raw-логи и открывать в текстовом редакторе, как будто на дворе 2003 год и вы только что поставили Gentoo.</p><p>Кнопка «Назад» — это рулетка. Вы ожидаете вернуться на PR, но попадаете на случайную страницу GitHub Actions, которую видите впервые в жизни.</p><p>А теперь — отладка. Вы пушите коммит, ждёте, смотрите логи. Что-то падает. Добавляете run: env. Пушите снова. Ждёте. Двадцатиминутный цикл обратной связи ради однострочного изменения. Повторяете четырнадцать раз. Ваш вечер закончился.</p><blockquote>В этом опыте есть что-то медитативное — ритуал кликов и ожидания, почти религиозный по своей бессмысленности.</blockquote><h2>Ловушка YAML</h2><p>Любая CI-система рано или поздно сводится к «куче YAML-файлов». Но YAML в GitHub Actions — это нечто особенное. Свой язык выражений, своя объектная модель контекста, свои правила интерполяции строк. Это уже не конфигурация — это программирование. Только без отладчика, без типов и без чувства собственного достоинства.</p><p>Синтаксис ${{ }} — это танец. Неправильно поставили кавычку? Ждите четыре минуты, пока раннер запустится, чтобы узнать, что ваша строка была молча проглочена. Этот язык выражений «рос в темноте, без присмотра» — слишком сложный для конфига, слишком ограниченный для настоящего языка программирования.</p><h2>«А как же маркетплейс!»</h2><p>GitHub Actions Marketplace — это npm для CI. Комьюнити-экшены разного качества: shell-скрипты с Dockerfile и мечтой.</p><p>uses: some-stranger/cool-action@v2 — вы только что дали незнакомцу доступ к вашему репозиторию, секретам и среде сборки. Можно, конечно, пригвоздить версию к SHA. Никто этого не делает.</p><p>Энергетика ночного рынка: каждый лоток обещает решить вашу проблему, а некоторые продавцы преследуют совсем другие цели.</p><h2>Вы не владеете своими вычислениями</h2><p>Вы арендуете раннеры у Microsoft — медленные, ограниченные в ресурсах, не поддающиеся настройке. Это породило целую индустрию стартапов: <a href="https://namespace.so/">Namespace</a>, <a href="https://blacksmith.sh/">Blacksmith</a>, <a href="https://actuated.dev/">Actuated</a>, <a href="https://runs-on.com/">Runs-on</a>, <a href="https://buildjet.com/">BuildJet</a> — компании, которые существуют исключительно потому, что штатные раннеры GitHub Actions непригодны для продакшена.</p><p>Self-hosted раннеры решают проблему вычислений, но вы по-прежнему пишете YAML для GitHub Actions — это как поставить новый двигатель в машину, которая загорается каждый раз, когда вы включаете радио.</p><p>Microsoft — это место, куда амбициозные инструменты для разработчиков приходят, чтобы стать корпоративными SKU.</p><h2>Мелочи, которые накапливаются</h2><ul><li>actions/cache — ключи кеша непонятные, промахи молчаливые, вытеснение непрозрачное.</li><li>Reusable workflows нельзя вкладывать друг в друга, и у них нет чистого доступа к контексту вызывающего воркфлоу.</li><li>GITHUB_TOKEN permissions — лабиринт. permissions: write-all — это кувалда, а fine-grained permissions — это пазл на 500 деталей без картинки на коробке.</li><li>Concurrency controls — топорные. Отменить текущий запуск? Одна строка. Что-нибудь более тонкое? Нет.</li><li>Секреты нельзя использовать в условиях if: — обоснованное ограничение безопасности, но с точки зрения DX — катастрофа.</li></ul><p>Каждая из этих мелочей по отдельности — переживаемая. Но вместе они составляют убедительный аргумент в пользу того, чтобы просто уйти и не вернуться.</p><h2>«Просто напиши баш-скрипты»</h2><p>Искушение велико: просто засунуть всё в run: и написать большой shell-скрипт.</p><p>И это работает! А потом скрипт растёт. Условия, функции, парсинг аргументов, второй скрипт, обработка ошибок, логирование, «ну и чуть-чуть параллелизма».</p><p>Проходит три месяца — и вот у вас 800 строк баша, которые переизобретают параллельное выполнение задач при помощи wait и PID-файлов.</p><p>Race condition в cleanup-trap только на ядре Linux 6.x, вы в отпуске, телефон звонит.</p><blockquote>Вы не избежали CI. Вы построили CI-систему. Просто она хуже.</blockquote><p>Bash хорош как клей. Но он не система сборки. Не тестовый фреймворк. Не оркестратор. Каждый раз, когда кто-то говорит «просто напиши баш-скрипт», где-то в мире рождается ещё один 800-строчный ci.sh.</p><h2>Часть II: Выход</h2><h2>Просмотрщик логов, который не убивает браузер</h2><p>У <a href="https://buildkite.com/">Buildkite</a> просмотрщик логов — это веб-страница, которая показывает логи и не падает. Звучит как минимальное требование к продукту, но после GitHub Actions это ощущается как роскошь.</p><ul><li>ANSI-цвета работают — вывод тестового фреймворка приходит в первозданном виде, а не в виде кашицы из escape-последовательностей.</li><li>Аннотации — богатый Markdown-вывод прямо на странице билда.</li><li>Отладка: агент крутится на вашем железе, вы можете зайти на машину по SSH. Как нормальный человек, а не как археолог, расшифровывающий логи по слоям.</li></ul><h2>YAML, который знает своё место</h2><p>YAML в <a href="https://buildkite.com/">Buildkite</a> описывает пайплайн: шаги, команды, плагины. Это структура данных, а не язык программирования. Когда нужна логика — пишите скрипт на нормальном языке. Запускайте локально. Как человек, у которого есть достоинство.</p><blockquote>Оркестрацию — в конфиг, логику — в код. Buildkite уважает эту границу.</blockquote><h2>Вы владеете своими вычислениями</h2><p>Агент <a href="https://buildkite.com/">Buildkite</a> — это один бинарник на ваших машинах. Ваш облачный провайдер, ваш дата-центр, ваше странное кастомное железо.</p><p>Никакой побочной индустрии «Buildkite, только быстрее» — просто поставьте машины помощнее.</p><p>GitHub Actions выдаст вам стандартную Ubuntu-виртуалку с эмоциональной теплотой зала ожидания в районной поликлинике.</p><h2>Динамические пайплайны</h2><p>Шаги пайплайна — это данные. Вы можете генерировать их динамически в рантайме.</p><p>Скрипт смотрит на монорепо, определяет, что изменилось, и загружает именно те шаги, которые нужны. Никаких захардкоженных матриц, никаких спагетти из if: contains(...).</p><h2>По поводу плагинов</h2><p>Честно говоря, структурно плагины Buildkite похожи на маркетплейс GitHub Actions.</p><p>Но: тонкие shell-хуки вместо целых Docker-образов, меньше поверхности атаки. И главное — всё запускается на вашем железе, так что радиус поражения — под вашим контролем.</p><h2>Маленькие радости</h2><p>В Buildkite можно поставить кастомные эмодзи рядом с шагами пайплайна — :parrot:, :docker:, что угодно.</p><p>Объективно — бесполезная мелочь. Но она рассказывает вам о людях, которые создали этот продукт.</p><p><a href="https://github.com/features/actions">GitHub Actions</a> — это продукт, спроектированный комитетом, который ни разу не задал вопрос: «А пользователю от этого радостно?»</p><h2>Заключение</h2><p><a href="https://github.com/features/actions">GitHub Actions</a> победил не потому, что он хорош, а потому что он стоит по умолчанию. Internet Explorer от мира CI.</p><p>Если у вас маленькая команда и простое приложение — он сойдёт. Серьёзно, не переезжайте ради принципа.</p><p>Но если у вас продакшен-системы, монорепо, билды дольше пяти минут — присмотритесь к <a href="https://buildkite.com/">Buildkite</a>.</p><blockquote>GitHub Actions — это самая простая CI-система для старта. Buildkite — это лучшая CI-система для жизни.</blockquote><p>Если ваш CI воюет с вами больше, чем помогает — проблема не в вас. Проблема в инструменте.</p><blockquote>Это литературный перевод и адаптация статьи Иэна Данкана (Ian K. Duncan) <a href="https://www.iankduncan.com/engineering/2026-02-05-github-actions-killing-your-team">GitHub Actions is Killing Your Team</a>. Мнение автора оригинала может не совпадать с мнением редакции.</blockquote>]]></content:encoded>
    </item>
    <item>
      <title>Как программисту строить карьерный трек, если компании перестали нанимать в штат?</title>
      <link>https://tproger.ru/articles/kak-programmistu-stroit-karernyj-trek--esli-kompanii-perestali</link>
      <comments>https://tproger.ru/articles/kak-programmistu-stroit-karernyj-trek--esli-kompanii-perestali?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дима Дмитриев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-programmistu-stroit-karernyj-trek--esli-kompanii-perestali</guid>
      <description><![CDATA[<p>Почему компании отказываются от штатного найма разработчиков и как программисту выстроить карьеру через аутстаффинг, команды и консалтинг.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-programmistu-stroit-karernyj-trek--esli-kompanii-perestali">Как программисту строить карьерный трек, если компании перестали нанимать в штат?</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 03 Mar 2026 09:30:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Программисты пострадали сильнее других: их вакансий стало <a href="https://www.cnews.ru/news/top/2025-07-18_rossii_bolshe_ne_nuzhny_programmisty">на 31% меньше</a>. Конкуренция за места выросла почти вдвое: с 7–8 резюме на вакансию до <a href="https://habr.com/ru/articles/941304/">почти 13 в начале 2025-го</a>. Казалось бы, рынок сдувается. Но одновременно 64% российских работодателей <a href="https://iz.ru/1841647/2025-02-20/bolee-50-oprosennyh-rabotodatelei-v-rossii-soobsili-o-deficite-it-specialistov">говорят о нехватке специалистов</a> middle и senior, и 16% ощущают её «очень остро». А сектор привлечения внешних специалистов тем временем <a href="https://proglib.io/p/itogi-it-rynka-2025-stagnaciya-zarplat-krizis-nayma-i-prognoz-na-2026-god-2025-12-29">генерирует уже около 40% всех IT-вакансий</a>.</p><h2>Почему штат стал дорогим</h2><p>Реальная <a href="https://www.klerk.ru/materials/2025-10-06/skolko-stoit-chas-raboty-programmista/">стоимость штатного разработчика</a> — это зарплата, увеличенная в 2–3 раза. Зависит от компании и включает в себя налоги, страховые взносы, ДМС, HR, офис и административную нагрузку. Backend-разработчик с зарплатой 220 000 ₽ обходится компании примерно в 565 000 ₽ в месяц. Заморозка проекта на два месяца — это 1,1 млн рублей на «пустых» зарплатах, ошибка найма — ещё 3–6 зарплатных циклов на повторный поиск.</p><p>В последние пару лет выросла <a href="https://elbrusboot.camp/blog/it-rynok-2026-siekriety-naima-i-5-stratieghii-chtoby-nie-ostatsia-biez-raboty/">фискальная нагрузка</a>: часть льготных тарифов страховых взносов для МСБ отменяется, ставка поднимается с 15% до 30% в части зарплат выше МРОТ. Каждый следующий разработчик в штате дорожает по регуляторным причинам.</p><p>Отдельный вопрос — скорость. Закрытие вакансии middle-разработчика занимает в среднем 58 дней, senior — 73 дня (с учетом отработки на предыдущем месте). При этом каждый третий кандидат <a href="https://codingteam.ru/blog/autsorsing-razrabotchikov-v-2025-kogda-vigodnee-na">отказывается от оффера</a> на этапе согласования: нашел предложение лучше, не сошлись по зарплате или формату работы. Через внешнего партнёра готовый специалист появляется за 24–72 часа, и если не подошёл, заменить его можно без процедур трудового кодекса.</p><h2>Какие модели пришли на замену</h2><p><b>Специалист в аренду.</b> Компания привлекает конкретного разработчика через партнёра. Формально он в штате партнёра, фактически работает под управлением заказчика. Скорость старта — 24–72 часа. Оптимально, когда нужно быстро закрыть нишевую специализацию: 1С, iOS, DevOps. Минус — нет командной синергии, вовлечённость ниже штатной.</p><p><b>Выделенная команда.</b> Партнёр формирует полноценную команду под проект, на нём административная нагрузка, команда работает как штатная. В среднем такое сотрудничество <a href="https://skillstaff.ru/blog/kak-zhivet-i-razvivaetsya-it-autstaffing-v-rossii/">длится около полутора лет</a>. Пример: e-commerce перед праздниками добавил команду на четыре месяца — мобилки, backend, QA, тимлид, — а после сезона сократил до поддержки.</p><p>Крупные финтех-компании идут дальше, в том числе передают целые направления мобильной разработки, от проектирования архитектуры до поддержки после релиза. Партнёр несёт ответственность за конечный продукт, а не за отдельные задачи по ТЗ.</p><p><b>Технологический консалтинг.</b> Партнёр анализирует потребности бизнеса, предлагает стек и методологию, строит процессы, интегрирует свою команду с внутренней и передаёт знания. Такие запросы актуальны для крупного бизнеса, где простая аренда ресурсов не покрывает масштаб задач.</p><p><b>Гибридная модель.</b> Ядро — штатные специалисты: архитекторы, тимлиды, ключевые разработчики; расширение под пики и проекты за счёт внешней команды. Опять же хорошо подходит для больших компаний, и уже активно реализуется на рынке.</p><h2>Как строить карьеру с учётом этих моделей</h2><figure><img src="https://media.tproger.ru/user-uploads/134134/2026-03-02/90de1b00-d325-4488-a7f8-349ac4358a9e.webp" alt="" /></figure><h2>Советы, которые помогут адаптироваться вне зависимости от выбора карьерного пути</h2><p><b>Считайте бизнес-ценность, а не технологии.</b> Не «Я знаю React», а «Я сократил время загрузки страниц, что дало +3% конверсии». В штате и в выделенной команде одинаково ценят тех, кто влияет на метрики.</p><p><b>Разберитесь в экономике моделей.</b> Если вы middle или senior — вы можете работать в штате, в выделенной команде, через технологический консалтинг или в гибридной схеме. У каждого формата своя экономика: разная ставка, разные условия, разные переговорные позиции. Изучите партнёров тех компаний, в которые вы хотели бы попасть.</p><p><b>Стройте публичный след между проектами.</b> В штатной работе вас знают коллеги. В проектной занятости каждый контракт начинается с нуля, поэтому GitHub-портфолио, статьи и выступления становятся способом отличиться и доказать свою экспертизу.</p><p><b>Осваивайте то, что пересекается с вашим стеком.</b> Рынок смещается к гибридным ролям: backend-разработчик с пониманием DevOps, аналитик с навыком автоматизации. Чистая специализация уступает пересечению компетенций.</p><h2>Чего ждать</h2><p>Объём штатного найма продолжит уменьшаться, этот год принесёт новые реструктуризации и сокращения в IT-отделах. Одновременно провайдеры выделенных команд и специалистов ожидают роста доходов на 19–24% в ближайшие три года.</p><p>Есть <a href="https://www.cnews.ru/news/top/2025-07-18_rossii_bolshe_ne_nuzhny_programmisty" rel="nofollow">мнение</a>, что ИИ ускоряет этот сдвиг, и нейросети позволяют на 30–50% сократить бюджет на типовых IT-позициях. Тот же объём задач закрывается меньшим количеством людей более высокого грейда. Спрос смещается туда, где автоматизация пока буксует: архитекторы, DevOps, ML-инженеры, специалисты по безопасности.</p><p>Рынок взрослеет и со стороны провайдеров: агентства начинают конкурировать не только зарплатой, но и условиями — соцпакет, обучение, менторинг становятся нормой, а не исключением.</p><p>Мы в Centicore Group выстраиваем выделенные центры компетенций, где специалисты работают как часть продуктовой команды заказчика. Если вы хотите работать над интересными проектами в среде, где ценят экспертизу, — посмотрите наши <a href="https://centicore.ru/career/">открытые позиции</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>COBOL в Японии: почему цифровое прошлое до сих пор определяет настоящее</title>
      <link>https://tproger.ru/articles/cobol-v-yaponii--pochemu-cifrovoe-prowloe-do-sih-por-opredelyaet-nastoyashhee</link>
      <comments>https://tproger.ru/articles/cobol-v-yaponii--pochemu-cifrovoe-prowloe-do-sih-por-opredelyaet-nastoyashhee?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ислам Виндижев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/cobol-v-yaponii--pochemu-cifrovoe-prowloe-do-sih-por-opredelyaet-nastoyashhee</guid>
      <description><![CDATA[<p>Узнайте, почему в Японии COBOL до сих пор основа экономики, на нём всё ещё учатся программировать и к чему привело использование такого старого языка.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/cobol-v-yaponii--pochemu-cifrovoe-prowloe-do-sih-por-opredelyaet-nastoyashhee">COBOL в Японии: почему цифровое прошлое до сих пор определяет настоящее</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 29 Oct 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В мире IT, где технологии устаревают за несколько лет, судьба COBOL — настоящая аномалия. Этот язык, созданный в 1959 году, должен был исчезнуть вместе с мейнфреймами. Но в Японии — стране высоких технологий — COBOL не просто жив. Он остаётся «невидимым скелетом» всей экономики. Почему? Всё дело в уникальной комбинации истории, экономики и культуры.</p><figure><img src="https://media.tproger.ru/user-uploads/133609/2025-10-08/0636793c-acd1-42e1-a595-a64f38e8dd74.jpeg" alt="Самурай и COBOL" /></figure><h2>История: золотой век мейнфреймов и становление цифровой инфраструктуры</h2><p>В 1960-80-е годы, во время «экономического чуда», Япония массово внедряла компьютеры. Стандартом стали мейнфреймы IBM, а COBOL — идеальным языком для них.</p><figure><img src="https://media.tproger.ru/user-uploads/133609/2025-10-08/38868fd4-c43c-4974-b30b-ee964a6141fc.jpg" alt="Мейнфрейм IBM System/370, был выпущен в 70-е" /><figcaption>Мейнфрейм IBM System/370, был выпущен в 70-е</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133609/2025-10-08/92ea0127-597f-41e6-821c-15660b5bc9f8.jpg" alt="Терминал IBM 3277" /><figcaption>Терминал IBM 3277</figcaption></figure><p>На COBOL переписали все ключевые процессы: обработку банковских транзакций, расчёт заработных плат, управление счетами, логистику, оформление страховых полисов. Так, за два десятилетия была создана цифровая ДНК японской экономики — миллиарды строк кода, которые стали критически важны для бизнеса.</p><h3>Принцип «Работает — не трогай»</h3><p>Из истории вытекает первая и главная причина живучести COBOL — эффект <b>path dependency</b> (зависимость от предшествующего развития).</p><p>Зависимость от предшествующего развития — это когда прошлые решения ограничивают будущие возможности и пути развития системы, отрасли или даже страны.</p><p>Из-за этого эффекта инженеры были ограничены в своём выборе. При этом каждый программист знает, что не стоит трогать legacy, которое работает. А чем дольше его не трогать — тем старше и больше оно становится. Чем старше и больше — тем страшнее, дороже и рискованнее его изменять.</p><figure><img src="https://media.tproger.ru/user-uploads/133609/2025-10-08/7ca1727c-57e9-4a9f-bd15-b070cc3b2be0.jpeg" alt="" /></figure><p>Представьте себе системы, которые работали десятилетиями в такой консервативной сфере, как финансы, где ошибка в одну запятую может стоить миллионов. Здесь стабильность и предсказуемость ценятся превыше всего. А в процессе миграции можно столкнуться с ошибками, потерями данных или простоями, которые парализуют бизнес и приносят огромные финансовые и репутационные потери.</p><p>Ещё один риск — скрытая логика. За годы эксплуатации исходный код обрастает тысячами правок и нюансов, которые не отражены в документации. Перенести эту сложную бизнес-логику без потерь практически невозможно.</p><p>Конечно же, переписывать системы такого размера ещё и очень долго. И чем старше становится система, тем больше миграция будет отставать от темпов развития бизнеса.</p><p>Так японские компании пришли к рациональному выводу: проще и безопаснее поддерживать работающую систему, чем пытаться заменить её целиком.</p><h2>Экономика: стоимость замены против стоимости поддержки</h2><p>Японский бизнес предпочитает поддержку старых решений не только руководствуясь простой логикой. Конечно, в дело вступили жёсткие расчёты, финансы и экономика.</p><p>Помимо прямых затрат на разработку, нужно учесть стоимость новых лицензий на ПО, обучение всего персонала, параллельное ведение старых и новых систем на время перехода и колоссальные затраты на тестирование.</p><p>Следующий вопрос — экономическая выгода. Руководство компаний справедливо задаётся вопросом: «Какую прибыль принесет нам этот переход?». Чаще всего ответ — «Никакой, мы просто получим систему, которая делает то же самое, но на другом языке». С точки зрения ROI (возврата инвестиций) проекты миграции или модернизации выглядят крайне непривлекательно.</p><figure><img src="https://media.tproger.ru/user-uploads/133609/2025-10-08/8cb5b998-d3b9-4ec6-aebc-673590bdd6e5.jpeg" alt="Японские феодалы делят золото" /></figure><p>В итоге, инвестиции в поддержку legacy-систем, какими бы большими они ни были, почти всегда оказывались ниже запредельной стоимости и рисков полной замены систем на COBOL.</p><h2>Культура: японский консерватизм и системный подход</h2><p>Экономическая рациональность не существует сама по себе. Она подкрепляется и японской культурой, которая символизирует надёжность, стабильность, долговечность и лояльность.</p><p>Японская бизнес-культура, особенно в крупных корпорациях и госсекторе, обычно против рисков и характеризуется консерватизмом. Излишний риск не считается оправданным.</p><p>Ещё одна особенность — система пожизненного найма.</p><p>В любой сфере человек мог проработать в компании всю жизнь до пенсии. Эта практика была популярна в послевоенный период, но сейчас менее распространена. От неё отступают в сторону ротации для большей гибкости и эффективности.</p><p>Такая традиция создала уникальную среду: инженеры, начавшие работать с COBOL в 1980-х, оставались в компаниях до пенсии, накапливая и передавая бесценные знания. Это создавало внутреннюю стабильную экосистему экспертизы.</p><p>Можно подумать, что такая ситуация создаёт дефицит специалистов, которые могут продолжать поддерживать и развивать кодовые базы на COBOL. Это не совсем так.</p><h2>Решение кадрового кризиса: не вопреки, а благодаря</h2><p>Самое большое заблуждение — считать, что Япония столкнулась с кадровым голодом и ничего не делает. Напротив, она выстроила целую индустрию по управлению этим COBOL-наследием.</p><p>Основная масса ключевых экспертов действительно люди предпенсионного возраста. При этом молодые специалисты приходят в эту сферу на условиях лучших, чем в среднем по рынку.</p><figure><img src="https://media.tproger.ru/user-uploads/133609/2025-10-08/fcced980-8cb6-4908-b75f-38385288aef4.jpeg" alt="Старый самурай передаёт знания молодому" /></figure><p>Крупные корпорации передают поддержку COBOL-систем специализированным IT-гигантам, таким как Fujitsu, NEC, NTT Data, IBM Japan. Внутри этих компаний существуют целые департаменты, которые:</p><p>1.  Целенаправленно нанимают и обучают молодых инженеров работе с COBOL и мейнфреймами.</p><p>2.  Предлагают им стабильную карьеру с высокой (из-за низкой конкуренции) зарплатой и социальными гарантиями.</p><p>3.  Разрабатывают инструменты модернизации: транспайлеры (конвертирующие COBOL в Java, <a href="https://www.ibm.com/docs/en/watsonx/watsonx-code-assistant-4z/1.x?topic=transform-transforming-cobol-java-by-using-generative-ai">в том числе на базе AI</a>), <a href="https://www.ibm.com/products/cobol-compiler-linux-x86">эмуляторы</a> и <a href="https://cobolcloud.io/">платформы</a> для запуска legacy-кода в облаке.</p><p>Проблема кадров осознана и решается решается разными путями. Но возможно ли и нужно ли поддерживать COBOL бесконечно?</p><h2>Есть ли у COBOL преимущества сегодня?</h2><p>Кажется, что у такой старой технологии нет никаких преимуществ. Но давайте найдём одно — стабильность и надёжность. Системы продолжают работать исправно и пока их удаётся поддерживать. Вряд ли новый проект начнут разрабатывать на COBOL, но поддержка всё ещё продолжается.</p><p>Безусловный минус — стоимость поддержки. К 2025 году затраты на поддержку COBOL-решений могли <a href="https://www.nikkei.com/article/DGXZQOFK052Y70V00C21A2000000/">составить до 12 триллионов йен в год или 80 миллиардов долларов</a>, что уже превышает некоторый психологический барьер. Этому прогнозу уже несколько лет, так что сегодня компании стоят перед сложным выбором: вкладываться в модернизацию или продолжать поддержку.</p><p>В конечном итоге, живучесть COBOL в Японии — это не признак технологической отсталости, а следствие расчёта, уважения к стабильности и долгосрочной стратегии управления legacy. Эти старые системы — всё ещё ядро национальной цифровой инфраструктуры: дорогое в обслуживании, но надёжное.</p><p>Если японские компании и правительство всё-таки примут риски модернизации, то об этом мы с вами узнаем уже в ближайшие несколько лет.</p>]]></content:encoded>
    </item>
    <item>
      <title>Разработка без границ: как облачные среды меняют ИТ-ландшафт</title>
      <link>https://tproger.ru/articles/razrabotka-bez-granic--kak-oblachnye-sredy-menyayut-it-landwaft</link>
      <comments>https://tproger.ru/articles/razrabotka-bez-granic--kak-oblachnye-sredy-menyayut-it-landwaft?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Василий Саутин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/razrabotka-bez-granic--kak-oblachnye-sredy-menyayut-it-landwaft</guid>
      <description><![CDATA[<p>Локальные ИТ-решения тормозят запуск новых проектов и увеличивают затраты. Облачная среда устраняет эти ограничения, делая разработку более гибкой и быстрой. Василий Саутин, коммерческий директор платформы для разработки ПО «Сфера», рассказал о преимуществах этой инфраструктуры.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/razrabotka-bez-granic--kak-oblachnye-sredy-menyayut-it-landwaft">Разработка без границ: как облачные среды меняют ИТ-ландшафт</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Облачные технологии]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 12 Oct 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Компании всё чаще уходят от локальных ИТ-технологий — и дело не в моде, а в реальных бизнес-потребностях. Сохранять конкурентоспособность на прежней архитектуре становится невозможно из-за ограничений: от длительности запуска нового проекта до расходов на поддержку инфраструктуры. Бизнесу нужна экосистема, которая даёт иные возможности, и на то есть серьезные причины.<i></i></p><h2>Почему локальные решения теряют актуальность</h2><p>В традиционной on-prem среде каждый шаг превращается в отдельный мини-проект: нужно утвердить бюджет, приобрести оборудование, настроить VPN, организовать резервирование. Даже простое действие — предоставление доступа новому разработчику — требует цепочки согласований через ИТ-отдел.<i></i></p><p>Кроме того, локальные решения часто избыточны с точки зрения ресурсов. Организация оплачивает полный набор серверов и лицензий, хотя фактическая загрузка может составлять всего 40-50%. Это создаёт неоправданные финансовые издержки.</p><h2>Что дает переход в облако</h2><p>Облачная инфраструктура — это полноценная инфраструктура, в которой команды и процессы разворачиваются за минуты, а не за кварталы. Все элементы находятся в едином управляемом контуре: IDE, пайплайны, базы данных, система контроля версий — всё это доступно по модели «как услуга». Нет привязки к офису, серверной или физической лицензии.</p><p>Главное преимущество — снятие барьеров. Новый сотрудник подключается к проекту за час, а новый сервис разворачивается без участия инфраструктурной команды. Если компании важно, чтобы разработка шла параллельно в нескольких направлениях, без ежедневных блокеров — облачная среда делает это возможным.</p><p>CI/CD, автоматизированное тестирование, управление окружениями, сборка артефактов, релиз-менеджмент — все эти процессы становятся частью платформы и не требуют ручной работы. К тому же, облако снижает «порог входа»: новым разработчикам не нужно тратить дни на установку и настройку окружения, они сразу приступают к созданию проекта.<i></i></p><h2>Как облако экономит ресурсы компании</h2><p>Типичная ситуация: компания запускает продукт, но развертывание тестовой среды откладывается из-за отсутствия серверов, нехватки лицензий или занятости инфраструктурной команды. Проект теряет темп, сроки выхода на рынок сдвигаются, а стоимость растет.</p><p>Облачные решения устраняют эту проблему:</p><p>●      Снижается «порог входа» для новых сотрудников — они подключаются к проекту за часы, а не дни;</p><p>●      Ресурсы выделяются динамически, по фактическому потреблению, без оплаты простаивающего оборудования;</p><p>●      Процессы автоматизируются, что позволяет команде фокусироваться на разработке, а не на настройке окружения.</p><h2>Вопрос безопасности: миф или реальная проблема?</h2><p>Вопросы безопасности часто становятся основным аргументом против перехода в облако. Однако современные облачные платформы предлагают полный набор инструментов: от шифрования и управления доступом до журналирования действий и политик авторизации.</p><p>Вопрос не в том, есть ли у платформы нужный функционал, а в том, как компания его применяет. Если внутри нет выстроенной модели доступа, логики разграничения ролей, процессов аудита — уязвимости будут и в облаке, и в on-prem. При правильном подходе к безопасности облако может быть даже надежнее локальной среды, особенно при работе с внешними подрядчиками, где важно контролировать периметр доступа.</p><h2>Гибридные подходы и особые случаи</h2><p>Есть сценарии, где локальная среда действительно оправдана: проекты с закрытыми данными, работа в изолированных сегментах, особые требования регуляторов. Такие случаи встречаются в госсекторе или промышленности, но их становится всё меньше. Часто речь идет не об отказе от облака как такового, а о создании частного облака внутри корпоративного периметра.</p><p>На практике многие команды выбирают гибридные схемы: локальный редактор плюс облачные пайплайны и репозитории. Это приемлемый компромисс, который учитывает и привычки разработчиков, и потребности в гибкой инфраструктуре.</p><p>При этом проблема с интернет-соединением решается современными облачными IDE, которые умеют работать в офлайн-режиме и синхронизировать изменения при восстановлении связи. Это минимизирует риски потери данных при нестабильном соединении.</p><h2>Вместо заключения</h2><p>Облако в разработке — это про то, чтобы команда могла работать без простоев, чтобы изменения быстрее доходили до пользователя, а инфраструктура не тормозила рост бизнеса. У компаний больше нет времени на долгие внедрения, и нет смысла держать оборудование ради одной функции в квартал.</p><p>Если ИТ — это актив, который должен приносить пользу, а не просто расходовать бюджет, то облачная среда разработки становится логичным продолжением зрелого подхода к созданию программных продуктов.</p>]]></content:encoded>
    </item>
    <item>
      <title>Курсы Agile и Scrum: обучение бесплатно и платно</title>
      <link>https://tproger.ru/articles/kursy-agile-i-scrum--obuchenie-besplatno-i-platno</link>
      <comments>https://tproger.ru/articles/kursy-agile-i-scrum--obuchenie-besplatno-i-platno?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анастасия Шишкина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kursy-agile-i-scrum--obuchenie-besplatno-i-platno</guid>
      <description><![CDATA[<p>Лучшие курсы Agile и Scrum. Рейтинг вариантов онлайн-обучения бесплатно и платно, обзор обучающей программы и стоимости курсов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kursy-agile-i-scrum--obuchenie-besplatno-i-platno">Курсы Agile и Scrum: обучение бесплатно и платно</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Обучающие курсы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 10 Oct 2025 08:55:22 GMT</pubDate>
      <content:encoded><![CDATA[<p>Качественное обучение Agile становится необходимостью не только для IT-специалистов, но и для профессионалов в маркетинге, дизайне и даже менеджменте в различных сферах. Гибкие подходы завоевывают все новые области, но знаете ли вы, что манифест Agile был написан всего за один уикенд, и его авторы не предполагали, что он приведет к настоящей революции? Или что термин Scrum пришел из регби, где важна слаженность команды, борющейся за мяч? Эти методики — не просто правила, а целая философия, которую лучше всего осваивать через практическое применение.</p><p>Я проанализировала около 50 предложений от ведущих образовательных платформ, чтобы составить рейтинг из топ-10 самых эффективных курсов, а также добавить 12 коротких программ для точечного погружения и 15 бесплатных курсов для старта. Этот обзор поможет вам выбрать идеальное обучение по Agile и Scrum, независимо от вашего уровня и опыта.</p><p><b>Также я подготовила эксклюзивные промокоды, которые позволят вам сэкономить при начале обучения. Инструкции по их применению вы найдете в описаниях курсов.</b></p><h2>ТОП-10 лучших курсов Agile и Scrum в 2026 году</h2><ol><li><a href="https://experts2.ru/HvndGm?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=1">Управление по Agile: Scrum, Kanban, Lean</a> от Нетологии — полный цикл управления проектами: от создания канбан-досок и применения Lean-подхода до анализа эффективности и оптимизации рабочих процессов.</li><li><a href="https://experts2.ru/YlzWtb?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=2">Agile: Scrum и Kanban в работе над продуктом</a> от Skillbox.ru — системное понимание гибкой разработки с разбором архитектуры Scrum, инструментов Kanban и методик проектного управления.</li><li><a href="https://experts2.ru/ekmBWf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=3">Agile: от основ до скрам-мастера</a> от Нетологии — инструменты для старта в роли скрам-мастера с отработкой навыков на Agile, Scrum, Kanban и Lean.</li><li><a href="https://experts2.ru/gWowGs?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=4">Agile: методология проектного управления</a> от MBA — практические навыки проектного планирования и реализации с изучением методов целеполагания и управления ресурсами.</li><li><a href="https://experts2.ru/KpcxbE?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=5">Agile, Scrum, Kanban</a> от MBS — подходы к формированию задач для снижения затрат на проекты и инструментарий продуктового анализа.</li><li><a href="https://experts2.ru/ewaUWh?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=6">Agile Project Manager</a> от OTUS.ru — перспективы участия в Agile-трансформациях с освоением адаптации методологий под бизнес-задачи.</li><li><a href="https://experts2.ru/qeHaOj?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=7">Agile в командах</a>  от  Контур.Школы — базовые принципы гибких подходов с практическими умениями работы по Scrum и Kanban.</li><li><a href="https://experts2.ru/lqHLwf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=8">AGILE &amp; SCRUM: теория и практика внедрения в бизнес</a> от Знанио — системное изложение Scrum с разбором рабочих стратегий и тактических приемов.</li><li><a href="https://experts2.ru/pKywqG?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=9">Agile-методологии в управлении проектами</a> от City Business School — Agile-подход с акцентом на принципы и практические инструменты управления проектами.</li><li><a href="https://experts2.ru/ekzTSp?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=10">Методология Agile</a>  от Lectera.com — практическое применение Agile-управления и SCRUM-методик с изучением механизмов проектного управления.</li></ol><p>Обучение Scrum и Agile — это маст-хэв не только для управленцев. Разработчики начинают видеть логику процессов, а дизайнеры и маркетологи — наконец-то находить общий язык с командой. Для тех, кто в начале пути или планирует сменить поле деятельности, это знание станет вашим козырем, серьезно повышающим шансы на интересную работу.</p><h2>Онлайн-курсы Agile и Scrum</h2><p><b>1. <a href="https://experts2.ru/HvndGm?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=1">Управление по Agile: Scrum, Kanban, Lean</a> | Нетология</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 7%</i></p><p><a href="https://experts2.ru/HvndGm?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=1">Применить промокод&gt;&gt;&gt;</a></p><p>На этом курсе Kanban и Lean изучаются не как сухая теория, а как практичные инструменты для работы. Слушатели учат выстраивать процессы с помощью канбан-досок, избавляться от лишнего с помощью Lean, а затем анализировать, как сделать всё еще эффективнее. В итоге, вы научитесь вести проекты так, чтобы заказчики были довольны, а команда не страдала от перегрузок и стресса.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/8654fdab-59e2-40cc-820b-82d1a89e76f1.jpg" alt="" /></figure><ul><li>Стоимость: 40 400 рублей</li><li>Длительность: 4 месяца</li><li>Формат обучения: видеолекции, практические задания и вебинары</li><li>Сертификат: удостоверение о повышении квалификации</li></ul><p><b>Кому подойдет: </b></p><ul><li>руководителям отделов и подразделений, а также тим-лидам;</li><li>специалистам по управлению проектами и продуктами;</li><li>владельцам компаний и стартапов.</li></ul><p><b>Преимущества:</b></p><ul><li>помощь в подборе подходящего формата обучения;</li><li>бесплатная вводная консультация с экспертом;</li><li>индивидуальные рекомендации по развитию карьеры;</li><li>удобная мобильная платформа для занятий;</li><li>полный доступ к материалам без интернета;</li><li>персональные напоминания о дедлайнах смен;</li><li>детальная обратная связь по заданиям;</li><li>возможность получить налоговый вычет 13%;</li><li>организация корпоративного обучения для коллектива;</li><li>гарантия возврата средств при несоответствии ожиданий;</li><li>начисление баллов Плюса при оплате через Яндекс Пэй.</li></ul><p><b>Недостатки:</b></p><ul><li>не обнаружено.</li></ul><p><b>Программа обучения:</b></p><ul><li>Основы менеджмента и гибких методологий</li><li>Продуктовая разработка и мышление</li><li>Фреймворк Scrum и его практическое применение</li><li>Принципы Lean и Kanban</li><li>Лидерство в Agile-командах</li><li>Комбинация различных методик управления</li><li>Дипломный проект по внедрению Agile</li></ul><p><a href="https://experts2.ru/HvndGm?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=1">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>2. <a href="https://experts2.ru/YlzWtb?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=2">Agile: Scrum и Kanban в работе над продуктом</a> | Skillbox.ru</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 50%</i></p><p><a href="https://experts2.ru/YlzWtb?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=2">Применить промокод&gt;&gt;&gt;</a></p><p>Курс дает системное понимание гибкой разработки: архитектуру Scrum с ее компонентами, инструменты Kanban и методики проектного управления. Учащиеся осваивают построение командных процессов, гибкие циклы разработки и критерии выбора рабочих инструментов. Это позволяет применять изученные подходы для достижения конкретных проектных результатов, включая разрешение конфликтных ситуаций, стимулирование команды и функциональное распределение ролей.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/ba6e63e6-e9d9-4b70-aaa4-d5c8e7877e69.jpg" alt="" /></figure><ul><li>Стоимость: 44 532 рублей</li><li>Длительность: 1 месяц</li><li>Формат обучения: видеокейсы, практика</li><li>Сертификат: удостоверение о повышении квалификации</li></ul><p><b>Кому подойдет: </b></p><ul><li>тем, кто стремится освоить профессию скрам-мастера;</li><li>руководителям проектов;</li><li>начинающим;</li><li>владельцам бизнеса.</li></ul><p><b>Преимущества:</b></p><ul><li>консультация по выбору профессии с подарком и бесплатными модулями;</li><li>практика с проверкой и комментариями от экспертов;</li><li>постоянный доступ к материалам и будущим обновлениям;</li><li>бесплатная индивидуальная консультация перед стартом;</li><li>дополнительная скидка при полной оплате;</li><li>оперативная техническая поддержка.</li></ul><p><b>Недостатки:</b></p><ul><li>ограниченное количество мест на курс.</li></ul><p><b>Программа обучения:</b></p><ul><li>Фреймворки Agile и их особенности</li><li>Артефакты Scrum и их назначение</li><li>Распределение ролей и зон ответственности в Scrum</li><li>Основные события Scrum-процесса</li><li>Практика проведения Product Backlog Refinement</li><li>Организация и проведение ретроспектив</li><li>Компетенции для успешного создания продукта</li><li>Запуск и мониторинг производственных метрик</li><li>Метод Kanban для оптимизации командной работы</li><li>Инструменты для управления распределенными командами</li><li>Итоговый проект по внедрению Scrum или Kanban</li></ul><p><a href="https://experts2.ru/YlzWtb?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=2">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>3. <a href="https://experts2.ru/ekmBWf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=3">Agile: от основ до скрам-мастера</a> | Нетология</b></p><p><i>Используйте промокод kursfinder, чтобы получить скидку 7%</i></p><p><a href="https://experts2.ru/ekmBWf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=3">Применить промокод&gt;&gt;&gt;</a></p><p>Эта программа готовит к роли скрам-мастера, давая инструменты для управления проектами. В основе курса — отработка навыков на методологиях Agile, Scrum, Kanban и Lean. Вы научитесь применять Agile на практике, проводить скрам-ивенты и управлять бэклогом, настраивать процессы через канбан-доски, сокращать издержки Lean-методами, работать в условиях неопределенности, оценивать задачи и выстраивать командное взаимодействие. Финальной частью обучения станет формирование умения ставить продуктовые цели и запускать новые скрам-команды.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/518841c3-cfbd-4144-820a-59ef3593756f.jpg" alt="" /></figure><ul><li>Стоимость: 90 700 рублей</li><li>Длительность: 6 месяцев</li><li>Формат обучения: лекции, вебинары, воркшопы, практика, бизнес-игра</li><li>Сертификат: удостоверение о повышении квалификации</li></ul><p><b>Кому подойдет: </b></p><ul><li>начинающим скрам-мастерам;</li><li>менеджерам продукта или проекта;</li><li>тимлидам, руководителям и HR;</li><li>тем, кто ищет работу в IT-компаниях.</li></ul><p><b>Преимущества:</b></p><ul><li>персональная консультация и скидка;</li><li>поддержка в подготовке к сертификации PSM I;</li><li>доступ к материалам в личном кабинете и мобильном приложении без интернета;</li><li>гибкий график с вечерними занятиями для совмещения с работой;</li><li>возможность корпоративного обучения и адаптации программы;</li><li>поддержка карьерного роста и помощь в трудоустройстве.</li></ul><p><b>Недостатки:</b></p><ul><li>встречаются сбои в мобильном приложении.</li></ul><p><b>Программа обучения:</b></p><ul><li>Менеджмент и основы Agile</li><li>Продуктовая разработка и формирование продуктового мышления</li><li>Применение Scrum в управлении продуктом и проектами</li><li>Методологии Lean и Kanban</li><li>Agile-лидерство и управление командой</li><li>Комбинирование различных подходов на практике</li><li>Роль и обязанности скрам-мастера</li><li>Взаимодействие скрам-мастера с командой разработки</li><li>Работа скрам-мастера с владельцем продукта</li><li>Интеграция скрам-мастера в организационную структуру</li><li>Подготовка к сертификации скрам-мастера</li></ul><p><a href="https://experts2.ru/ekmBWf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=3">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>4. <a href="https://experts2.ru/gWowGs?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=4">Agile: методология проектного управления</a> | MBA</b></p><p>Обучение направлено на совершенствование практических навыков проектного планирования и реализации. Слушатели изучают методы целеполагания, построения эффективных планов, управления ресурсной базой и оценки рисковых факторов. Дополнительный блок охватывает вопросы мотивации сотрудников, решения операционных проблем, выстраивания коммуникаций и обеспечения продуктивного взаимодействия в проектной деятельности.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/c82a9754-4631-41c5-89f2-8e2cf90246e2.jpg" alt="" /></figure><ul><li>Стоимость: 55 608 рублей</li><li>Длительность: 1 месяц</li><li>Формат обучения: дистанционно, вебинары, практические задания</li><li>Сертификат: удостоверение о повышении квалификации</li></ul><p><b>Кому подойдет: </b></p><ul><li>руководителям и менеджерам;</li><li>предпринимателям и бизнесменам.</li></ul><p><b>Преимущества:</b></p><ul><li>обратная связь от преподавателей по всем заданиям;</li><li>поддержка кураторов на протяжении всего обучения;</li><li>бесплатная консультация по программе перед стартом;</li><li>спикеры-эксперты с опытом в российских и международных компаниях;</li><li>возврат 13% от стоимости обучения через налоговый вычет;</li><li>практическая составляющая: 70% занятий построены на реальных рабочих задачах;</li><li>трудоустройство: 65% выпускников находят работу в течение трех месяцев.</li></ul><p><b>Недостатки:</b></p><ul><li>задержки ответов технической поддержки.</li></ul><p><b>Программа обучения:</b></p><ul><li>Планирование проектов: от постановки целей до контроля результатов</li><li>Организация рабочих процессов с применением современных инструментов</li><li>Контроль выполнения проектов на всех этапах жизненного цикла</li><li>Освоение гибких методологий Agile, Scrum и Kanban</li><li>Управление проектами в условиях цифровой трансформации</li><li>Инструменты для эффективной работы в цифровой среде</li><li>Адаптация классических подходов к современным реалиям</li></ul><p><a href="https://experts2.ru/gWowGs?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=4">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>5. <a href="https://experts2.ru/KpcxbE?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=5">Agile, Scrum, Kanban</a> | MBS</b></p><p>Обучение помогает выстроить процесс работы с задачами, при котором команда достигает лучших результатов. Слушатели учатся оптимизировать старт проектов, использовать короткие итерации и налаживать прозрачную коммуникацию. Программа также включает инструменты для продуктового анализа, валидации идей и отслеживания эволюции требований заказчиков.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/320ab30c-9370-47f6-aae1-18623dc82543.jpg" alt="" /></figure><ul><li>Стоимость: 39 510 рублей</li><li>Длительность: 2 дня</li><li>Формат обучения: очно или онлайн, практические задания</li><li>Сертификат: удостоверение о повышении квалификации или Сертификат Moscow Business School</li></ul><p><b>Кому подойдет: </b></p><ul><li>product-менеджерам;</li><li>руководителям проектных групп;</li><li>внедренческим консультантам;</li><li>топ-менеджерам;</li><li>специалистам в сфере HR, развития бизнеса и стратегического планирования.</li></ul><p><b>Преимущества:</b></p><ul><li>четвертый участник в группе — бесплатно;</li><li>преподаватели с пятилетним практическим опытом в области;</li><li>бесплатная индивидуальная консультация перед стартом;</li><li>разбор реальных кейсов из вашей рабочей практики вместо абстрактных заданий;</li><li>выгодные условия рассрочки платежа;</li><li>сертификаты, котирующиеся у ведущих отраслевых работодателей;</li><li>перенос дат обучения при необходимости;</li><li>комплект уникальных авторских материалов.</li></ul><p><b>Недостатки:</b></p><ul><li>не подойдет новичкам.</li></ul><p><b>Программа обучения:</b></p><ul><li>Фреймворки и методологии создания продукта</li><li>Менеджмент стартапов на основе Agile, Scrum и Kanban</li><li>Продуктовая разработка по принципам Agile, Scrum и Kanban</li><li>Практики управления командами и повышения их эффективности</li><li>Инструментарий Lean Startup для развития продуктов в Agile-среде</li><li>Методология Customer Development: путь от идеи до продукта</li><li>Современные методы исследования рынка и пользователей</li><li>Инструменты проверки гипотез и получения практических инсайтов</li></ul><p><a href="https://experts2.ru/KpcxbE?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=5">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>6. <a href="https://experts2.ru/ewaUWh?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=6">Agile Project Manager</a> | OTUS.ru</b></p><p>Программа открывает перспективы не только для позиций скрам-мастера или проект-менеджера, но и позволяет участвовать в комплексных Agile-трансформациях, работая на пересечении продуктовых, технических и бизнес-направлений. Ученики освоят выбор и адаптацию Agile, Scrum, Kanban, Waterfall под конкретные бизнес-задачи, разрешение конфликтов, ведение переговоров и предоставление конструктивной обратной связи. Также совершат оптимизацию процессов и приоритизацию задач в соответствии со стратегическими целями, защиту проектных решений на уровне топ-менеджмента.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/0b4f844f-1b2a-4c42-9b6b-1626f53256b9.jpg" alt="" /></figure><ul><li>Стоимость: 116 000 рублей</li><li>Длительность: 5 месяцев</li><li>Формат обучения: интерактивные вебинары, практика, домашняя работа, кейс-задания, теоретическая часть</li><li>Сертификат: удостоверение о повышении квалификации</li></ul><p><b>Кому подойдет: </b></p><ul><li>проект-менеджерам и product-менеджерам из ИТ;</li><li>руководителям команд или департаментов;</li><li>руководителям,  проект-менеджерам и другим управленцам не из ИТ;</li><li>программистам, аналитикам, тестировщикам;</li><li>другим заинтересованным специалистам не из ИТ.</li></ul><p><b>Преимущества:</b></p><ul><li>практический подход с решением реальных рабочих задач;</li><li>преподаватели с опытом реализации проектов в области;</li><li>модули по разным аспектам управления для комплексного взгляда;</li><li>компенсация до 13% стоимости обучения через налоговый вычет;</li><li>доступ к сообществу выпускников для нетворкинга и обмена опытом;</li><li>перспективы трудоустройства в компаниях, применяющих Agile-подход.</li></ul><p><b>Недостатки:</b></p><ul><li>необходимо ждать начала обучения.</li></ul><p><b>Программа обучения:</b></p><ul><li>Проектный и продуктовый подход: особенности и ключевые отличия</li><li>Стратегия постепенных улучшений существующих процессов</li><li>Методология радикальных преобразований в бизнес-процессах</li><li>Управление организационными изменениями на разных этапах</li><li>Инструментарий современного руководителя проектов</li><li>Технические аспекты в управлении проектами и продуктами</li><li>Развитие гибких навыков для карьерного роста</li><li>Проектная работа для закрепления полученных знаний</li></ul><p><a href="https://experts2.ru/ewaUWh?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=6">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>7. <a href="https://experts2.ru/qeHaOj?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=7">Agile в командах</a>  | Контур.Школа</b></p><p>Изучая гибкие подходы, участники открывают для себя не просто методы работы, а целостную систему мышления. Освоение Scrum и Kanban идет рука об руку с развитием командной синергии, честной оценкой результатов и культурой постоянных улучшений. По мере прохождения курса растет уверенность в управлении изменениями, а инструменты Agile становятся естественной частью рабочего процесса, помогая достигать лучших показателей.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/2918c90f-df1e-4a6b-86d0-47aceb141331.jpg" alt="" /></figure><ul><li>Стоимость: 7 900 рублей</li><li>Длительность: меньше 2 месяцев</li><li>Формат обучения: лонгриды и дополнительные материалы, тестирования</li><li>Сертификат: сертификат установленного образца</li></ul><p><b>Кому подойдет: </b></p><ul><li>тимлидам в IT;</li><li>разработчикам;</li><li>тестировщикам;</li><li>новичкам.</li></ul><p><b>Преимущества:</b></p><ul><li>обратная связь от куратора по всем практическим заданиям;</li><li>мобильное приложение для занятий в любом месте;</li><li>корпоративный формат для обучения сотрудников вашей компании;</li><li>возможность приостановить обучение при загруженности.</li></ul><p><b>Недостатки:</b></p><ul><li>материалы доступны только в течение двух месяцев.</li></ul><p><b>Программа обучения:</b></p><ul><li>Agile-подход: его суть и бизнес-выгода для компаний</li><li>Роль Scrum-мастера: зона ответственности и влияние на команду</li><li>Влияние Agile на мотивацию и удовольствие от работы</li><li>Антипаттерны Agile-команд: типичные ошибки и их решение</li></ul><p><a href="https://experts2.ru/qeHaOj?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=7">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>8. <a href="https://experts2.ru/lqHLwf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=8">AGILE &amp; SCRUM: теория и практика внедрения в бизнес</a> | Знанио</b></p><p>Курс предлагает системное изложение методологии Scrum с разбором рабочих стратегий и тактических приемов. Автор детализирует ценностную основу Agile, охватывая теоретические аспекты от исторических предпосылок до современных практик. Практический блок включает освоение техник формирования продуктового бэклога, создания рабочих команд и инструментов планирования и контроля разработки.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/157c2933-0976-42d0-87e6-94b2e7c7bd0f.jpg" alt="" /></figure><ul><li>Стоимость: 299 рублей</li><li>Длительность: от 1 дня</li><li>Формат обучения: текстовые и видеоматериалы, практика</li><li>Сертификат: сертификат установленного образца</li></ul><p><b>Кому подойдет: </b></p><ul><li>руководителям;</li><li>новичкам.</li></ul><p><b>Преимущества:</b></p><ul><li>процесс обучения без посещения учебного центра и почтовой пересылки документов;</li><li>обучение и документы от официальных лицензированных учебных организаций;</li><li>документы установленного образца от котируемых образовательных учреждений;</li><li>теоретические и практические знания от признанных специалистов-практиков;</li><li>старт обучения сразу после оплаты и сжатые сроки освоения программы;</li><li>снижение цены на 10% при нахождении аналогичного курса дешевле;</li><li>возможность рассрочки, корпоративной оплаты или налогового вычета;</li><li>возврат полной стоимости при несоответствии курса ожиданиям.</li></ul><p><b>Недостатки:</b></p><ul><li>сжатое обучение.</li></ul><p><b>Программа обучения:</b></p><ul><li>Agile INTRO</li><li>Введение</li><li>Сравнение</li><li>SCRUM</li><li>AGILE</li><li>Внедрение</li><li>Выводы</li></ul><p><a href="https://experts2.ru/lqHLwf?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=8">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>9. <a href="https://experts2.ru/pKywqG?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=9">Agile-методологии в управлении проектами</a> | City Business School</b></p><p>Начиная с основ Agile, программа фокусируется на том, что действительно пригодится в работе: принципах и инструментах для управления проектами. Вы последовательно разберете методологию, фреймворки, роли, коммуникацию и адаптацию, параллельно отрабатывая все на практических заданиях. В итоге вы легко подстраиваетесь под изменения, координируете команду без лишних усилий и грамотно распределяете время — так и растет ваша профессиональная эффективность.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/799927e8-e296-4a79-8868-7a73ae99c41f.jpg" alt="" /></figure><ul><li>Стоимость: 19 990 рублей</li><li>Длительность: 21 день</li><li>Формат обучения: видеоматериалы, тренажеры, тестирования</li><li>Сертификат: сертификат установленного образца</li></ul><p><b>Кому подойдет: </b></p><ul><li>менеджерам проектов;</li><li>руководителям любого уровня.</li></ul><p><b>Преимущества:</b></p><ul><li>готовые инструкции по внедрению agile-методов в работу;</li><li>карьерный рост в ролях скрам-мастера или проджект-менеджера;</li><li>гибкий график без фиксированных сроков сдачи;</li><li>бессрочный доступ ко всем видео и материалам курса.</li></ul><p><b>Недостатки:</b></p><ul><li>редкие проверки заданий куратором.</li></ul><p><b>Программа обучения:</b></p><ul><li>Введение в основные agile-фреймворки: Scrum, Kanban, XP, Lean</li><li>Базовые понятия и принципы гибкой методологии</li><li>История создания и эволюции agile-подхода</li><li>Сильные и слабые стороны agile для бизнеса</li><li>Scrum-методология: принципы, артефакты и события</li><li>Kanban-метод: визуализация, лимиты и управление потоком</li><li>Сравнение Scrum и Kanban: критерии выбора подхода</li><li>Agile-трансформация: этапы внедрения в проекты</li></ul><p><a href="https://experts2.ru/pKywqG?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=9">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><p><b>10. <a href="https://experts2.ru/ekzTSp?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=10">Методология Agile</a>  | Lectera.com</b></p><p>Курс дает практическое освоение Agile-управления и SCRUM-методик. Вы изучите механизмы эффективного проектного управления для достижения конкретных результатов в бизнесе и разработке продуктов. При этом сохранятся преимущества гибкого формата работы — мобильность, творческая атмосфера и командная сплоченность. В программе: принципы проектного управления, методы быстрого тестирования идей, методики планирования спринтов, проведение SCRUM-собраний и цели ретроспективы спринта.</p><figure><img src="https://media.tproger.ru/user-uploads/108137/2025-10-08/d358e6b4-6e39-4c47-b965-f5ac9a85557c.jpg" alt="" /></figure><ul><li>Стоимость: 3 650 рублей</li><li>Длительность: 10,6 часов</li><li>Формат обучения: видео, кейсы, практика, тестирования</li><li>Сертификат: сертификат установленного образца</li></ul><p><b>Кому подойдет: </b></p><ul><li>менеджерам;</li><li>разработчикам;</li><li>тестировщикам;</li><li>новичкам;</li><li>руководителям.</li></ul><p><b>Преимущества:</b></p><ul><li>дополнительные материалы для углубленного изучения тем;</li><li>гибкий график без дедлайнов и фиксированных занятий;</li><li>поддержка кураторов с развернутой обратной связью;</li><li>лаконичные видеоуроки без лишней информации.</li></ul><p><b>Недостатки:</b></p><ul><li>программа дает базовые знания, но нет углубления в узкие темы.</li></ul><p><b>Программа обучения:</b></p><ul><li>Ключевые аспекты управления проектами</li><li>Применение Agile-методов в повседневных задачах</li><li>Внедрение скрам в рабочие процессы команды</li><li>Быстрое тестирование бизнес-идей и гипотез</li><li>Развитие лидерских качеств и навыков</li><li>Анализ продуктивности работы команды</li><li>Основные понятия и термины Agile</li><li>Стратегии эффективного планирования спринта</li><li>Проведение ежедневных скрам-собраний</li><li>Задачи и цели ретроспективы спринта</li></ul><p><a href="https://experts2.ru/ekzTSp?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=10">Ознакомиться с полной программой &gt;&gt;&gt;</a></p><h2>Еще 17 дополнительных курсов Agile и Scrum</h2><p>Если вы уже освоили основы и хотите углубить свои знания, дополнительные курсы станут отличным шагом вперед. Эти программы помогут вам прокачать навыки в узкоспециализированных областях, освоить более сложные техники и подходы, а также применить новые знания в реальных проектах.</p><ul><li><a href="https://experts2.ru/nzAOjc?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Интенсив Agile</a> от Академии BELHARD. Участники интенсива освоят гибкие методологии разработки программного обеспечения с акцентом на их базовые принципы и ценностные ориентиры. Они изучат инструменты управления проектами и рисками, а также методы адаптации подходов под специфические условия. По окончании курса слушатели смогут целенаправленно улучшать коммуникационные процессы внутри команды и с заказчиками.</li><li><a href="https://experts2.ru/WbzfVk?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Product Management: гибкие подходы Agile (Scrum), Lean и DevOps</a> от УЦ Специалист. В рамках программы слушатели осваивают ключевые аспекты продукт-менеджмента и гибких подходов к разработке. Они изучат методы анализа рынка и конкурентной среды, управления продуктными требованиями и функциональностью. Особое внимание уделяется практическому применению Agile, Scrum, Lean и DevOps методологий в управлении продуктом.</li><li><a href="https://experts2.ru/VgTpla?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile - Scrum Foundation 1</a> от УЦ Специалист. Обучение построено на практическом применении Scrum через создание нового продукта в команде. Участники получат непосредственный опыт работы по данной методологии и оценят ее преимущества. Под руководством наставника они освоят инновационные подходы к решению проектных задач.</li><li><a href="https://experts2.ru/wqSOak?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile - Scrum Foundation 2</a> от УЦ Специалист. Программа знакомит с передовыми мировыми практиками разработки программного обеспечения, доказавшими эффективность. Основной акцент сделан на практических занятиях в формате ролевых игр с активным участием слушателей.</li><li><a href="https://experts2.ru/ajuDEv?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Professional Scrum Master</a> от Scrum.ru. Курс направлен на освоение принципов и методов эффективного управления проектами в Scrum. Выпускники получат инструменты для повышения результативности команд и достижения проектных целей.</li><li><a href="https://experts2.ru/JfyHis?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile Fundamentals Certification</a> от ICAgile. Данная программа позволяет не только пройти обучение, но и получить международную сертификацию по основам Agile. Участники курса формируют глубокое понимание принципов гибкой методологии и immediately применяют полученные знания на практике через серию практических упражнений и разбор реальных кейсов.</li><li><a href="https://experts2.ru/tlGsoQ?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile и Scrum</a> от ScrumTrek. В рамках этого обучения участники осваивают не только теорию, но и проходят полный цикл сертификации. Курс охватывает практическое применение различных гибких методологий разработки, включая Scrum, Kanban и XP. Особое внимание уделяется развитию навыков управления командой, анализа проектных показателей, а также техникам планирования и организации эффективного рабочего процесса.</li><li><a href="https://experts2.ru/fuwMIs?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile и управление проектами</a> от Mike Pritula. Эта программа предлагает комплексное изучение ключевых концепций и инструментов Agile-подхода. Слушатели детально разбирают такие аспекты как управление проектными рисками, построение эффективной коммуникации, обеспечение качества продукции и адаптацию к изменениям. Все теоретические модули подкрепляются практическими заданиями, которые можно immediately применять в реальной работе.</li><li><a href="https://experts2.ru/ebtsUF?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Professional Scrum Master I: курс и симулятор</a> от PmClub. Professional Scrum Master (PSM I) — профессиональный сертификат от scrum.org, которым обладают более 360 000 cкрам-мастеров по всему миру. Входных требований у PSM I нет, поэтому сертификат можно получить, даже если нет опыта работы скрам-мастером.</li><li><a href="https://experts2.ru/mNcSsh?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Управление проектами по Agile</a> от Rocket. Программа фокусируется на практическом применении Agile в управлении проектами. Слушатели учатся выстраивать рабочие процессы, распределять роли в команде, проводить все типы скрам-мероприятий: планирование спринтов, ежедневные стендапы, обзоры результатов и ретроспективы. Каждый модуль содержит практические задания для закрепления навыков.</li><li><a href="https://experts2.ru/eOmdbS?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">SAFe® Release Train Engineering</a> от Agile LAB. Этот курс знакомит с принципами масштабирования Agile в больших организациях через методологию Scaled Agile Framework. Участники осваивают техники планирования и управления выпусками продуктов, а также инструменты эффективного взаимодействия со всеми заинтересованными сторонами проекта. Программа включает множество практических примеров из реальных проектов.</li><li><a href="https://experts2.ru/vAawXk?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile.Scrum</a> от центра Андрея Плетнева. Практико-ориентированный курс, где участники учатся работать в скрам-команде, распределять задачи, проводить ежедневные встречи, планировать спринты и анализировать их результаты. Отдельные модули посвящены управлению проектными рисками и методам адаптации к изменениям в процессе разработки.</li><li><a href="https://experts2.ru/OipJhd?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Базовый Agile</a> от ScrumTrek. Программа предназначена для начинающих и представляет собой первый этап международной сертификации ICAgile. Курс дает фундаментальное понимание Agile-методологии и prepares участников к дальнейшему профессиональному развитию в этом направлении. После завершения выдается сертификат ICAgile ICP.</li><li><a href="https://experts2.ru/yZiIkt?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Методология Scrum</a> от PM Exspert. Интенсивный трехдневный курс teaches эффективному сочетанию классического проектного управления по PMBOK® с гибкостью Scrum. Участники получают не только теоретические знания, но и практический опыт применения скрам-методологии в симуляции реального проекта.</li><li><a href="https://experts2.ru/swrXlU?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile и Scrum</a> от Scrum Alliance. Программа Certified Scrum Master позволяет глубоко освоить ключевые концепции скрам-методологии. Обучение помогает улучшить коммуникационные процессы внутри команды и между командами, а также дает инструменты для проведения организационных изменений независимо от текущей роли в компании.</li><li><a href="https://experts2.ru/EnomeG?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Применение гибких технологий</a> от Академии Айти. Курс помогает понять важность системного подхода в управлении разработкой IT-решений. Участники знакомятся с методологией Kanban, изучают техники визуализации рабочих процессов и инструменты управления ресурсами. Особое внимание уделяется практическому применению полученных знаний.</li><li><a href="https://experts2.ru/WGhedc?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile Project Management</a> от Onagile Academy. Программа позволяет сравнить подходы к созданию команд в классическом проектном управлении и Agile-среде. Участники изучают методы подбора участников проекта, формирования эффективных рабочих групп и инструменты управления распределенными командами. Курс содержит множество кейсов из реальной практики.</li></ul><h2>Бесплатные курсы Agile и Scrum</h2><p>В этом разделе собрала несколько бесплатных программ, которые позволяют начать обучение Agile бесплатно. Это отличная возможность составить собственное мнение о методологии, а затем решить, стоит ли углубляться в тему с платными курсами.</p><ol><li><a href="https://experts2.ru/KkhuzZ?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Изучаем основы управления проектами по Agile за 3 дня</a> от Skillbox. Если вам проще учиться короткими рывками — этот интенсив идеален. За три дня вы не только разберетесь в основах, но и сразу примените их в реалистичных рабочих ситуациях. Преподаватели-практики будут комментировать ваши решения — как если бы вы работали в настоящей команде.</li><li><a href="https://experts2.ru/afwuRP?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Что такое Agile и зачем он нужен бизнесу</a> от Нетологии. Этот курс — для тех, кто хочет понять саму суть гибких подходов. Вы узнаете, почему компании переходят на Agile, как это меняет работу команд, и какие роли появляются в процессе. Все объясняют на конкретных примерах, без заумных терминов.</li><li><a href="https://experts2.ru/hNfiVd?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Гибкое управление: как помочь бизнесу в условиях неопределенности </a>от ScrumTrek. Отличный вариант для тех, кто работает в быстро меняющейся среде. Курс учит не просто следовать методологии, а гибко подстраиваться под обстоятельства — как раз то, что нужно в современном бизнесе.</li><li><a href="https://experts2.ru/IkbheA?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Бесплатный мини-курс: Agile, Scrum, Kanban</a> от Product Lab. Если хотите за один присест разобраться в трех основных подходах — вам сюда. Вс разложено по полочкам: что выбрать для ваших задач, как организовать команду и как управлять процессом от идеи до результата.</li><li><a href="https://experts2.ru/fczXDd?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile. Вводный курс</a> от Stepik. Для тех, кто любит учиться в своем темпе. Материалы доступны круглосуточно, можно возвращаться к сложным темам снова и снова. Отлично подходит для знакомства с темой.</li><li><a href="https://experts2.ru/MNhgzc?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile Product Owner Career Guide</a> от Udemy. Мечтаете о роли владельца продукта? Этот курс покажет вам изнутри, что это за работа. Авторы делятся реальными вопросами с собеседований из крупных компаний — такая информация бесценна для тех, кто планирует карьерный рост.</li><li><a href="https://experts2.ru/hfVxDk?sub1=tproger-kf&amp;sub2=agile-obuchenie&amp;sub4=netop">Agile Project Management</a> от Coursera. Для основательных людей, которые хотят разобраться до мелочей. Здесь вы поймете не только как работать по Scrum, но и почему именно так нужно работать. Отлично подходит для будущих скрам-мастеров и тех, кто хочет научиться вести команду через сложные проекты.</li></ol><h2>Бесплатные видеоуроки Agile и Scrum</h2><p>Если вам нужна более гибкая и наглядная форма занятий, обратите внимание на подборку бесплатных курсов по Agile и Scrum в формате видеоуроков. Они позволяют изучать материал в удобном темпе, возвращаясь к сложным моментам. Этот вариант идеален для визуалов и тех, у кого нет возможности привязываться к жесткому учебному графику.</p><ol><li><a href="https://youtu.be/djO9Hiey0dk?si=VeXIR_X9Tg_ZV1Vm">Весь СКРАМ за 14 минут</a> от Dmitry Blinov. Автор обозревает такие темы, как PO, Developers, SM, продукт, Sprint, Backlog, инкремент, Daily, демо, ретро и так далее.</li><li><a href="https://youtu.be/UzeSGWAICYw?si=m8fNEee_NJzUeoxL">Что такое Agile? Scrum VS Kanban ДЛЯ НОВИЧКОВ</a> от GeekBrains. СМ помощью полезного видеоурока вы с автором погрузитесь в историю и узнаете, как создавался Agile. Также вам расскажут про Scrum и Kanban — методы, по которым работают многие компании.</li><li><a href="https://youtu.be/5RiudDgvlBw?si=Q9ByRZrGY8LWciwO">Что такое AGILE и SCRUM?</a> от Noukash. В этом видео автор обозревает данные системы. Просмотр будет полезен всем, кто метит на карьеру в IT — специалистам и студентам.</li><li><a href="https://youtu.be/cDvZaXzQezs?si=jhnbDMt4d7BbF1DS">Agile и Scrum на пальцах</a> от АйТиБорода. В этом видео автор постарался простыми словами рассказать о гибких методологиях разработки программного обеспечения.</li><li><a href="https://youtu.be/Y0GxPwXtavo?si=UibuEKm53rtbjiiv">Рождение Scrum-команды</a> от ScrumTrek. В своем докладе на AgileDays Елена поделилась несколькими важными выводами, которые помогли выстроить грамотную систему построения успешной Scrum-команды.</li><li><a href="https://www.youtube.com/live/2uFA3f74D0Q?si=uPyVpnD2jFpx1qJy">Agile &amp; Scrum – знакомство и легкое погружение</a> от ITVDN. В видео затрагивается отличие проектов, ориентированных на выпуск четкого объема работ в определенный срок, и реальностью. Выпуск будет полезен разработчикам и тестировщикам, работающим в Agile &amp; Scrum, тимлидам и менеджерам, бизнес-аналитикам и другим специалистам, желающим лучше понять суть Agile подходов.</li><li><a href="https://youtu.be/T_YUJGoWhfA?si=KZw6QRH7YdOPt_II">Гибкие методологии. Agile, Scrum, Kanban, Lean, Экстремальное программирование</a> от Аспро Cloud. В некоторых отраслях важно подстраиваться под ситуацию. И в этом видео вы как раз рассмотрите семейство гибких методологий.</li><li><a href="https://youtu.be/gFKhmXrxpLc?si=MEiG7r8jzhp6KNBC">Кейсы применения Agile</a> от ScrumTrek. Вводный вебинар курса Certified Agile Professional Online, на котором вы разберете кейсы применения Agile.</li></ol><h2>Что такое Agile и Scrum и в чем их основные отличия</h2><p><b>Agile</b> — это, по сути, просто здравый смысл, оформленный в принципы. Представьте, что вы делаете ремонт квартиры. Если вы заранее, на год вперед, распишете, какого цвета будут обои 15 октября, и будете слепо следовать этому плану, это не будет Agile. Скорее всего, за это время ваши предпочтения изменятся, появятся новые материалы, а сосед сверху затопит вас, и часть работы придется переделывать.</p><p>Agile — это когда вы решили делать ремонт поэтапно. Сначала — кухня. Сделали, пожили, поняли, что розетки надо было расположить иначе, а вытяжку — посильнее. Внесли изменения, когда приступили к ремонту ванной. Потом — гостиная. Вы постоянно сверяетесь с реальностью, а не с устаревшим планом. Главная идея Agile — признать, что мир меняется, и настаивать на неподобающем плане — это глупо. Вместо этого лучше показывать результат, получать feedback и гибко адаптировать курс. Это не методология, а скорее набор убеждений о том, как лучше работать.</p><p><b>Scrum</b> — это уже конкретная методология, которая помогает воплотить эти убеждения в жизнь. Если Agile — это философия «ремонт лучше делать поэтапно», то Scrum — это конкретный график с чёткими ролями и действиями.</p><p>В Scrum работа делится на короткие отрезки, обычно по 1-2 недели, называемые спринтами. В начале каждого спринта команда договаривается: «Что мы можем реально сделать за эти две недели?» Они берут задачи из общего списка пожеланий, называемого бэклогом, и обещают завершить выбранный кусок к установленной дате.</p><p>Каждое утро команда проводит 15-минутную летучку, где каждый участник отвечает на три вопроса: что я сделал вчера, что планирую сделать сегодня и что мне мешает. Это не отчетность, а способ убедиться, что все в курсе и могут помочь, если возникли проблемы.</p><p>В конце спринта происходят два важных события. Сначала команда показывает готовый результат заказчику или пользователям и спрашивает: «Вам то, что получилось? Как двигаться дальше?» Затем команда проводит встречу без начальства, чтобы обсудить: «Как улучшить наш процесс? Что пошло не так? Может, мы взяли на себя слишком много задач или часто отвлекались?» Эта встреча называется ретроспективой и необходима для постоянного улучшения работы команды.</p><p>В Scrum есть чёткие роли: Владелец Продукта (отвечает за «что» делать, представляет интересы заказчика), Scrum-мастер (следит за процессом, помогает команде работать по правилам Scrum, устраняет препятствия) и Команда разработки (делает работу).</p><h2>Как понять, что команде пора пробовать Agile-подходы</h2><p>Вы наверняка узнаете эту ситуацию: только вы составили красивый, детальный план на полгода вперед, как приходит заказчик или руководство и говорит: «Мы тут подумали, давайте сделаем вот так вместо этого». Или на рынке выходит продукт конкурента, и все приходится переделывать на ходу. Ваша команда тратит кучу времени не на саму работу, а на бесконечные перепланирования и исправления старых документов. Если вы постоянно чувствуете, что догоняете уходящий поезд и работаете по устаревшим вводным, это первый звоночек. Agile как раз построен на идее, что изменения — это нормально, и нужно уметь к ним адаптироваться, а не бороться с ними.</p><h2>Когда непонятно, что в итоге получится и доволен ли заказчик</h2><p>Вы несколько месяцев упорно трудились, сдали проект, а заказчик смотрит на результат и говорит: «Ну, это не совсем то, что я хотел»? Или вы сами в процессе понимаете, что создаете что-то бессмысленное, но останавливаться уже поздно. Это классическая ловушка долгосрочного планирования без обратной связи. Agile предлагает показывать результаты работы часто — например, раз в одну-две недели. Это позволяет быстро понять, туда ли вы движетесь, и вовремя скорректировать курс, пока не потратили полгода на не тот продукт.</p><h2>Когда команда теряет мотивацию и тонет в рутине</h2><p>Если ваши сотрудники чувствуют себя винтиками в большой машине, не видят цели своей работы и завалены бессмысленными отчетами, пришло время что-то менять. Agile, и в частности Scrum, делают процесс работы прозрачным для всех. Каждый член команды видит общую цель, понимает, какой вклад он вносит, и может напрямую влиять на организацию своей работы. Короткие циклы, четкие цели на каждый спринт и регулярные обсуждения «как нам улучшить наш процесс» (ретроспективы) возвращают людям ощущение осмысленности и контроля, а это — лучший мотиватор.</p><h2>Когда все идет по плану, но результат никого не радует</h2><p>Это, пожалуй, самый коварный сценарий. Команда работает как часы, соблюдает все сроки, выполняет KPI, но итоговый продукт оказывается посредственным, неинновационным или не находит отклика у пользователей. Это сигнал, что вы оптимизировали процесс ради процесса, забыв о главном — ценности для конечного потребителя. Agile заставляет постоянно задавать себе вопрос: «Делаем ли мы то, что действительно нужно людям?» Работа короткими циклами с регулярной демонстрацией результатов помогает сверяться с реальностью и не позволяет надолго уходить в «автономное плавание», отрываясь от потребностей рынка.</p><p>Неважно, какой путь вы выберете — полноценную программу или короткий бесплатный модуль. Главное, чтобы старт вашего обучения Agile был практико-ориентированным, ведь суть этих методологий — в постоянном совершенствовании и применении знаний. Начните с комфортного для себя формата, чтобы не бросить на полпути, и не стремитесь объять необъятное. Сосредоточьтесь на базовых принципах и пробуйте внедрять их в текущие задачи.</p><p><i>Как вы начали изучать Agile? Какие курсы или материалы стали для вас наиболее полезными? Поделитесь своим опытом в комментариях — это поможет другим сделать правильный выбор и начать обучение с уверенностью.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>5 технологий, которые через три года станут стандартом для бэкенда: прогноз на основе данных</title>
      <link>https://tproger.ru/articles/5-tehnologij--kotorye-cherez-tri-goda-stanut-standartom-dlya-bekenda--prognoz-na-osnove-dannyh</link>
      <comments>https://tproger.ru/articles/5-tehnologij--kotorye-cherez-tri-goda-stanut-standartom-dlya-bekenda--prognoz-na-osnove-dannyh?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/5-tehnologij--kotorye-cherez-tri-goda-stanut-standartom-dlya-bekenda--prognoz-na-osnove-dannyh</guid>
      <description><![CDATA[<p>Анализируем отчеты Gartner, Stack Overflow и GitHub о будущем бэкенд-разработки. Обзор AI-ассистентов, cloud-native решений, Security as Code и других технологий, которые изменят подход к разработке. </p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/5-tehnologij--kotorye-cherez-tri-goda-stanut-standartom-dlya-bekenda--prognoz-na-osnove-dannyh">5 технологий, которые через три года станут стандартом для бэкенда: прогноз на основе данных</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Бэкенд]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 12 Sep 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Ежедневная рутина убивает креатив. Пока одни тратят часы на ручное развёртывание инфраструктуры или отладку монолитных систем, другие уже проектируют отказоустойчивые облачные архитектуры, которые масштабируются одним щелчком.</p><p>Мир бэкенда стремительно меняется под влиянием искусственного интеллекта, облачных платформ и новых парадигм разработки. Через три года эти технологии превратятся из модных трендов в привычные инструменты каждого разработчика.</p><p>На основе анализа отчётов Gartner, Stack Overflow Developer Survey и открытых данных GitHub мы выделили пять ключевых технологий, которые определят стандарты бэкенд-разработки к 2028 году.</p><h2>Ключевые тренды в современном бэкенде</h2><p>Бэкенд-разработка переживает фундаментальную трансформацию. <a href="https://www.ndtvprofit.com/technology/cloud-computing-will-become-a-business-necessity-by-2028-gartner">По данным Gartner</a>, к 2028 году облачные вычисления превратятся из прорывной технологии в критически важный компонент для поддержания конкурентоспособности бизнеса. Это означает, что компании, не перешедшие на новые инструменты в облаках, окажутся в заведомо проигрышном положении.</p><p>Другой важный тренд — интенсивное внедрение ИИ в разработку. Stack Overflow Developer Survey 2025 <a href="https://survey.stackoverflow.co/2025/technology">показывает</a>, что 82% разработчиков уже используют GPT-модели OpenAI в своей работе. И это не просто дань моде — AI кардинально меняет процессы создания кода, тестирования и отладки. Например, GitHub Copilot не только предлагает фрагменты кода, но и генерирует unit-тесты, а также исправляет уязвимости прямо в процессе написания программы.</p><p>Российский IT-рынок демонстрирует особую динамику. После впечатляющего роста на 46% в прошлом году, он продолжает <a href="https://adpass.ru/prognoz-razvitiya-rossijskogo-it-rynka-do-2028-goda/">развиваться</a>, хотя и более умеренными темпами — около 12% в год. Акцент на импортозамещение создаёт уникальную среду для развития отечественных бэкенд-решений, что особенно заметно в сегменте заказной разработки ПО с <a href="https://adpass.ru/prognoz-razvitiya-rossijskogo-it-rynka-do-2028-goda/">ежегодным приростом</a> около 14%.</p><p>Особое значение <a href="https://integrator.nota.media/blog/articles/trendy-zakaznoy-razrabotki-v-2025-godu/">приобретает</a> гиперперсонализация бэкенд-систем. Современные платформы всё чаще анализируют поведение пользователей и автоматически адаптируют API-ответы, бизнес-логику и уровни доступа под индивидуальные потребности. Это позволяет создавать гибкие системы, в которых каждый юзер получает персонализированную версию функционала без изменения базового кода.</p><p>Ещё один значимый тренд — развитие IoT-интеграций. Промышленные предприятия, логистические и медицинские компании активно внедряют системы, объединяющие бэкенд с устройствами интернета вещей. Это требует новых подходов к обработке потоковых данных, обеспечению низкой задержки и созданию отказоустойчивых архитектур, способных работать с тысячами подключенных устройств одновременно.</p><p>Кроме того, растёт спрос на low-code решения для бэкенда. Бизнес-аналитики и продакт-менеджеры получают возможность самостоятельно настраивать бизнес-логику с помощью визуальных конструкторов, что сокращает нагрузку на разработчиков и ускоряет процесс. Это особенно актуально для российского рынка, где <a href="https://blog.cortel.cloud/2025/04/15/it-trendy-chto-budet-s-otechestvennym-softom-v-2025-2027-godah/">сохраняется</a> дефицит квалифицированных бэкендеров.</p><p>Далее — подробный разбор технологий, которые станут привычными инструментами прогеров в ближайшем будущем.</p><h2>Технология 1: AI-ассистенты для разработки и DevOps</h2><p>Искусственный интеллект теперь — эффективный помощник почти каждого программиста. AI такой же незаменимый инструмент, как IDE или система контроля версий.</p><h3>Почему это станет стандартом</h3><p>AI-ассистенты решают одну из главных проблем разработки — рутинные операции. Современные системы на базе больших языковых моделей способны генерировать шаблонный код, предлагать варианты оптимизации, находить уязвимости и даже помогать в рефакторинге.</p><p>Год назад Gartner <a href="https://www.advsyscon.com/blog/gartner-it-automation/">прогнозировал</a>, что к 2025 году 50% предприятий будут использовать платформы оркестрации AI для операционализации искусственного интеллекта. В бэкенд-разработке это выразится в интеграции AI-помощников непосредственно в DevOps-процессы — от автоматического написания тестов до оптимизации запросов к базам данных.</p><p>Современные ИИ-инструменты уже могут создавать сложные приложения по текстовым описаниям. В 2025 году платформа Replit <a href="https://habr.com/ru/articles/907122/">показала</a> впечатляющий пример: она сгенерировала полноценный клон игры Zelda с боями, ландшафтом и ИИ-противниками всего по одному запросу. При этом инструмент сам тестировал результат через скриншоты, имитируя цикл обратной связи разработчика.</p><p>ИИ-системы теперь применяют новые методы тестирования:</p><ul><li>автоматически проверяют код через скриншоты и визуальную верификацию;</li><li>сравнивают результаты с эталонными решениями на сложных эталонных тестах (бенчмарках) вроде SWE-bench;</li><li>используют метаморфное тестирование для поиска скрытых ошибок .</li></ul><p>При отладке ИИ не только находит ошибки, но и предлагает исправления с пояснениями. Однако 66% разработчиков <a href="https://stackoverflow.blog/2025/07/29/developers-remain-willing-but-reluctant-to-use-ai-the-2025-developer-survey-results-are-here/">отмечают</a> проблему «почти правильного» кода, который всё же требует доработки . Это доказывает: ИИ не заменяет программистов, а меняет их работу — теперь они больше фокусируются на сложных архитектурных задачах.</p><p>Ключевое преимущество современных AI-ассистентов — способность интегрироваться в полный цикл разработки. Например, такие инструменты, как GitHub Copilot, не только генерируют код, но и помогают создавать конфигурации для Infrastructure as Code (IaC), включая YAML-файлы, шаблоны Terraform и конфигурации Ansible. Это значительно снижает ошибки при настройке CI/CD-пайплайнов и ускоряет развёртывание инфраструктуры.</p><p>Кроме того, AI-ассистентов всё чаще <a href="https://habr.com/ru/sandbox/246908/">используют</a>, чтобы автоматического анализировать логи и выявлять аномалии, что позволяет проактивно устранять проблемы заранее.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-09/4930f2f6-aac3-49c1-a430-e3463be29694.png" alt="" /></figure><p><i>Практическая польза уже очевидна: разработчики, применяющие AI-инструменты, сообщают о сокращении времени на рутинные задачи на 30-40%. Это подтверждается <a href="https://survey.stackoverflow.co/2025/technology">данными</a> Stack Overflow о том, что профессиональные разработчики всё чаще используют Claude Sonnet от Anthropic.</i></p><h2>Технология 2: Cloud-native и отраслевые облачные платформы</h2><p>Облачные технологии прошли путь от популярного тренда до бизнес-необходимости. Gartner <a href="https://www.ndtvprofit.com/technology/cloud-computing-will-become-a-business-necessity-by-2028-gartner">предсказывает</a>, что более 50% предприятий будут использовать отраслевые облачные платформы к 2028 году. Это означает переход от общих cloud-решений к специализированным платформам, созданным для конкретных индустрий.</p><h3>Ключевые изменения в подходе</h3><p>Современные cloud-native решения — это не просто перенос приложений в облако, а принципиально иная архитектура. Контейнеризация стала де-факто стандартом: Docker показал рекордный рост +17% за год с 2024 по 2025 — это наибольший показатель среди всех технологий в <a href="https://survey.stackoverflow.co/2025/technology">опросе</a> Stack Overflow.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-09/4ff8e817-cb17-4d03-bbb5-bc019c64e2bf.png" alt="" /></figure><p>Важным элементом экосистемы cloud-native становятся инструменты оркестрации вроде Kubernetes и Service mesh (например, Istio), которые автоматически развертываются, масштабируются и управляют контейнеризованными приложениями.</p><p>Результат этих технологий  — сквозная отказоустойчивость и безопасность на уровне отдельных сервисов, что особенно критично для распределённых систем. Интеграция с CI/CD-системами непрерывно вносит изменения без остановок — такой подход полностью преобразует циклы разработки и эксплуатации приложений.</p><p>В России этот тренд имеет особую специфику. Активный рост облачного рынка (<a href="https://habr.com/ru/companies/finam_broker/news/931988/">прогнозируемые</a> +18% в год до 2029 года) сочетается с процессами импортозамещения. Российские ИТ-компании, такие как «Группа Астра» (76% рынка ОС), создают собственные облачные решения и уникальные экосистемы для разработчиков.</p><p><i>Преимущества cloud-native подхода очевидны: автоматическое масштабирование, отказоустойчивость, сниженные операционные затраты. <a href="https://www.advsyscon.com/blog/gartner-it-automation/">По данным</a> Gartner, гиперавтоматизация снижает операционные затраты на 30% при оптимизации процессов. Бэкенд-разработчики теперь сосредотачиваются на бизнес-логике вместо управления инфраструктурой.</i></p><h2>Технология 3: Безопасность как код (Security as Code)</h2><p>Кибербезопасность — уже не отдельная функция, а неотъемлемая  часть процесса разработки. Почти 80% руководителей, опрошенных Gartner, <a href="https://habr.com/ru/companies/finam_broker/news/931988/">уделяют</a> защите данных и процессов максимум внимания. Это напрямую влияет на подходы к бэкенду.</p><h3>Интеграция безопасности в жизненный цикл разработки</h3><p>Концепция «Security as Code» (SaC) означает встроенную защиту  на всех этапах жизненного цикла разработки и развёртывания программного обеспечения. В рамках этого подхода реализуется автоматизированная проверка на уязвимости, анализ зависимостей, настройка политики доступа и шифрования. Все параметры безопасности определяются декларативными описаниями и сохраняются вместе с исходным кодом..</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-09/d5077556-2d40-4bd5-a121-16713726e2e8.png" alt="" /></figure><p>Ключевой элемент SaC — автоматизация security-проверок на всех этапах разработки. Политики безопасности, описанные в виде кода (например, с использованием языка Rego), интегрируются непосредственно в CI/CD-пайплайны.</p><p>Система автоматически блокирует развертывание, если обнаруживает уязвимости или нарушение стандартов, и обеспечивает постоянный контроль безопасности без участия человека.Такие инструменты, как <a href="https://www.checkpoint.com/downloads/products/cloudguard-spectral-code-solution-brief.pdf">CloudGuard Spectral</a>, предоставляют готовые решения для внедрения SaC, сканируя исходный код, конфигурации и зависимости в реальном времени.</p><p>На российском рынке интерес к решениям в области безопасности стабильно растет. Компания Positive Technologies — один из лидеров на российском рынке кибербезопасности — показывает рост объема заказов на 111% в первом квартале 2025 года. Это свидетельствует о высоком спросе на решения для защиты информации.</p><p><i>Практическая ценность подхода «безопасность как код» — в предотвращении уязвимостей на ранних этапах, а не в их исправлении постфактум. Это сокращает затраты на безопасность на 40-60% согласно уже упомянутому в нашей статье <a href="https://www.advsyscon.com/blog/gartner-it-automation/">исследованию</a> Gartner. Для разработчиков это означает необходимость осваивать новые инструменты и практики, но результат стоит того — более надёжные и безопасные приложения с меньшими усилиями.</i></p><h2>Технология 4: Бессерверные архитектуры (Serverless)</h2><p>Бессерверная архитектура преодолела стадию экспериментальных внедрений и становится актуальным решением для отдельных типов рабочих нагрузок. Её основное преимущество — разработчики не управляют инфраструктурой, что позволяет сконцентрироваться на реализации бизнес-логики.</p><h3>Эволюция подходов к архитектуре</h3><p>Современные бессерверные платформы предлагают не просто Function-as-a-Service (FaaS), а комплексные решения для построения событийно-ориентированных архитектур. Это позволяет создавать системы, которые автоматически масштабируются до тысяч одновременных исполнений и обратно до нуля, когда нагрузки нет.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-09/1a3f8a2f-9717-4580-8da0-c7a8cefaf740.png" alt="" /></figure><p>Особенность современных бессерверных платформ — их глубокая интеграция с экосистемой облачных сервисов. Такие решения, как AWS Lambda, Azure Functions и Yandex Cloud Functions, предоставляют готовые триггеры для обработки событий от баз данных, очередей сообщений, систем хранения и API-шлюзов.</p><p>Разработчики создают сложные распределённые системы, не беспокоясь о низкоуровневой инфраструктуре, мониторинге и проблемах с отказоустойчивостью.</p><p>Stack Overflow <a href="https://survey.stackoverflow.co/2025/technology">отмечает</a> значительный рост популярности FastAPI (+5 процентных пунктов), что говорит об устойчивом тренде на Python для производительных API. Многие из этих API развёртываются именно в бессерверных средах, что обеспечивает им автоматическое масштабирование и высокую доступность.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-09/2ef00e84-e355-421f-b682-28d8f757af4f.png" alt="" /></figure><p>Выгоды serverless-архитектур особенно очевидны для стартапов и компаний с переменной нагрузкой. Они экономят до 70% затрат на инфраструктуру по сравнению с традиционными подходами.</p><p><i>Переход к бессерверной модели требует от бэкендов пересмотра подхода: вместо монолитных приложений необходимо осваивать микросервисную архитектуру, основанную на асинхронной обработке событий в распределённых системах. Однако результат в виде сниженной операционной нагрузки того стоит.</i></p><h2>Технология 5: Платформенная инженерия (Platform Engineering)</h2><p>Платформенная инженерия возникла как ответ на растущую сложность DevOps-практик в крупных организациях. Суть подхода в том, чтоб создавать внутренние платформы, которые предоставляют разработчикам готовые инструменты и сервисы для самостоятельного развертывания и управления приложениями.  Например, платформа <a href="https://backstage.io/">Backstage</a> от Spotify объединяет инструменты разработки в единый портал с каталогом сервисов, шаблонами проектов и системой самообслуживания.</p><h3>Внутренние developer-платформы</h3><p>Вместо того чтобы каждый раз настраивать CI/CD-пайплайны, системы мониторинга и логирования, разработчики получают доступ к стандартизированной платформе, которая предоставляет все эти возможности через простое API или пользовательский интерфейс.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-09-09/4f5722a2-5edc-4322-9bbd-332b58c08557.jpg" alt="" /></figure><p>Gartner <a href="https://www.advsyscon.com/blog/gartner-it-automation/">отмечает</a>, что поставщики решений для автоматизации всё чаще обращаются к платформенной инженерии, чтобы получить курируемый набор инструментов и функциональных возможностей. Это снижает нагрузку на разработчиков, позволяя им сосредоточиться на бизнес-ценности, а не на операционных задачах.</p><p>В России необходимость импортозамещения ускорила развитие платформенных решений. Компании типа «Хэдхантер» и «Группа Астра», которые показали рост выручки в первом квартале 2025 года, <a href="https://habr.com/ru/companies/finam_broker/news/931988/">инвестируют</a> в собственные платформы, чтобы ускорить разработку и повысить надежность сервисов.</p><p><i>Главное преимущество платформенной инженерии — ускоренный вывод продукта на рынок и стандартизация процессов. Разработчики могут самостоятельно запускать сервисы и не ожидать помощи DevOps-инженеров, что сокращает циклы разработки на 30-50% согласно данным Gartner.</i></p><h2>Итоги: готовьтесь к новому стандарту</h2><p>К 2028 году эти пять технологий станут базовым минимумом для бэкенд-разработки, поскольку уже доказали свою ценность. Они решают реальные бизнес-задачи: снижают затраты, ускоряют разработку, повышают надежность и безопасность.</p><p>Российский рынок имеет свою специфику, но развивается в том же направлении. Рост выручки и акцент на импортозамещение создают уникальные возможности для разработчиков, готовых осваивать новые технологии.</p><p>Ключевой вывод: успех в бэкенд-разработке через три года будет определяться не знанием конкретного фреймворка или языка, а способностью интегрировать AI-инструменты, работать с cloud-платформами, встраивать безопасность в процесс разработки, проектировать бессерверные архитектуры и эффективно использовать внутренние платформы. Начинайте осваивать эти технологии сейчас — и будете на шаг впереди.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как выстроенный процесс помогает  структурировать команду и увеличить маржинальность</title>
      <link>https://tproger.ru/articles/kak-vystroennyj-process-pomogaet--strukturirovat-komandu-i-pomoch-biznesu-uvelichit-marzhinalnost-257565</link>
      <comments>https://tproger.ru/articles/kak-vystroennyj-process-pomogaet--strukturirovat-komandu-i-pomoch-biznesu-uvelichit-marzhinalnost-257565?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-vystroennyj-process-pomogaet--strukturirovat-komandu-i-pomoch-biznesu-uvelichit-marzhinalnost-257565</guid>
      <description><![CDATA[<p>От хаоса к системности: почему отсутствие процессов приводит к выгоранию сотрудников и потерям бизнеса. Как мониторинг задач, code review, тестирование и автоматизация помогают команде структурироваться и повышать маржинальность продукта.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-vystroennyj-process-pomogaet--strukturirovat-komandu-i-pomoch-biznesu-uvelichit-marzhinalnost-257565">Как выстроенный процесс помогает  структурировать команду и увеличить маржинальность</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Практика]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Sep 2025 12:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вы когда-либо участвовали в создании цифрового продукта — будь то мобильное приложение, веб-сервис или корпоративная система? Наверняка сталкивались с одной и той же картиной: проект запускается с энтузиазмом, через пару месяцев начинаются задержки, нагрузка на команду растёт, а качество становится ниже ожиданий. Вините разработчиков? Увы, чаще всего корень зла глубже — это системный хаос, маскирующийся под «гибкость». В мире, где скорость и неопределённость правят балом, надежда на интуицию и подвиги отдельных героев — билет в один конец. Особенно когда проект растёт, а масштабируется только стресс.</p><p>Что мы видим в реальности?</p><ul><li>Руководители перегружены задачами, вместо того чтобы стратегически развивать продукт.</li><li>Разработчики работают сверхурочно, потому что никто не знает, кто чем занят.</li><li>Тестировщики ловят ошибки, которые можно было предотвратить на ранних этапах, или пропускают их в релиз.</li><li>Заказчики недовольны сроками, а менеджеры проекта постоянно «тушат пожары».</li></ul><p>И всё это — следствие одного и того же: отсутствия системного подхода к управлению процессами.</p><p>Я постараюсь рассказать, как внедрение процессов помогает оптимизировать работу, сократить авралы и переработки и вывести бизнес на новый уровень. Можете последовать нашему примеру из <a href="https://www.webit.ru/?utm_source=tproger&amp;utm_medium=article&amp;utm_content=process">Webit</a>.</p><h2>«Хороший продукт рождается не только из кода, но и из чётко выстроенных процессов»</h2><p>Многие разработчики и даже руководители до сих пор считают, что успех продукта зависит исключительно от таланта команды. Мол, если в проекте работают опытные программисты, хороший архитектор и умелый менеджер — всё обязательно получится. Но практика показывает обратное: даже команда звёзд может потерпеть фиаско, если процессы не налажены.</p><h3>Почему процесс важнее человека?</h3><p>Представьте: ваш лучший разработчик, тот самый, кто «держит всё в голове», уходит. Или просто выгорает. Что остаётся? Паника, недели (а то и месяцы) простоя; знания, унесенные в никуда. Человек — не железный. Процесс — да. Именно он — ваш истинный страховой полис. Не набор бюрократии, а живая система, которая стандартизирует рутину, позволяет безопасно делегировать, превращает новичка в бойца за дни, а не недели, и наконец-то делает прогнозы не гаданием, а осознанным планом. Клиент перестает дергаться, менеджер — дышать в бумажный пакет. Это ли не мечта?</p><p>Ситуация: на проекте всё время задерживают релиз фич. Злятся все — от владельца бизнеса до тестировщиков. Подключаем процессы к команде и проверяем, все ли заняты своим делом и оптимально ли расходуют время.</p><h4>Целевое использование времени: зачем нужен мониторинг?</h4><p>У вас есть команда из пяти человек, и вы платите им, чтобы создать цифровой продукт. Кажется, что всё логично: задачи распределены, дедлайны установлены, работа идёт. Но спустя пару месяцев оказывается, что половина времени ушла на исправление ошибок, треть — на согласования, а оставшаяся часть — на «то, что не входит в ТЗ». И при этом никто не отдыхал.</p><p>Это типичная ситуация, когда время тратится, но результат остаётся непредсказуемым.</p><p>В таких случаях говорят: «Работали много, работали качественно… но почему-то ничего не готово».</p><p>Многие руководители полагаются на интуицию или еженедельные отчёты, но практика показывает: без мониторинга мы видим лишь 30–40% реальной картины. Остальное скрыто в деталях:</p><ul><li>Сколько времени ушло на согласование одного экрана?</li><li>Сколько раз задача меняла статус из «готова» в «переделать»?</li><li>Как часто разработчики переключались между задачами?</li><li>Сколько часов ушло на объяснение, что именно нужно заказчику?</li><li>Сколько раз задача возвращалась на доработку после нахождения багов на «проде».</li></ul><p>Мониторинг рабочего времени — это не про шпионаж, а про прозрение. Он отвечает на больные вопросы: сколько реально длится интеграция платежной системы? Почему задача трижды возвращалась из тестирования? Кто в команде — скрытый гений верстки, а кому нужна поддержка по сложным API? Это не просто цифры. Это карта компетенций и потерь, ваш компас в океане хаоса.</p><p>Процесс позволяет:</p><ul><li>стандартизировать работу,</li><li>делегировать задачи без потери качества,</li><li>обучать новых сотрудников,</li><li>масштабировать команду,</li><li>прогнозировать результаты.</li></ul><p><b>Перегруз сотрудника: симптомы и причины</b></p><p>В рамках мониторинга вы можете выявить такую неприятную штуку как перегруз сотрудника. Разберёмся в признаках перегруза и что делать с этой напастью.</p><p>Каждый из нас знает, что такое выгорание. Но не все понимают, как оно начинается. Часто это происходит незаметно — постепенно.</p><p>Вот несколько симптомов перегрузки сотрудника:</p><ul><li>Постоянное чувство усталости, даже после выходных.</li><li>Снижение концентрации, забывчивость, рассеянность.</li><li>Раздражительность, конфликты в команде.</li><li>Задачи выполняются медленнее, чем раньше.</li><li>Работа занимает всё больше времени, включая сверхурочные.</li><li>Увеличение количества ошибок и багов.</li><li>Снижение интереса к проекту, отсутствие инициативы.</li><li>Появление фраз вроде: «Мне всё надоело» или «Я не вижу смысла».</li></ul><p>Почему горим? Пять смертных грехов процесса (или его отсутствия):</p><ul><li>Культ героя</li></ul><p>«Вася один сделает, ему проще!» Знакомо? Вася превращается в незаменимого, а его знания — в риски для всей компании. Уйдет Вася — рухнет всё.</p><ul><li>Документация? Не, не слышали</li></ul><p>Расплывчатые ТЗ — это минное поле. Каждая неясность — десятки вопросов, часов уточнений и неизбежных переделок. Нет регламентов? Каждый делает как бог на душу положит — дублирование, трение, ошибки.</p><ul><li>Ад многозадачности</li></ul><p>Встречи, срочные запросы, прыжки между задачами каждые полчаса… Фокус размыт, эффективность падает. Мозг не резиновый!</p><ul><li>Бег по кругу</li></ul><p>Задача «сделана»? Не спешите радоваться! Вот она вернулась — дизайн перепридумали, бэкенд не стыкуется, ТЗ «немного» изменилось. Нет чёткого «Done» — есть бесконечный марафон.</p><ul><li>Не по Сеньке шапка</li></ul><p>Человеку дали задачу не по его скиллам. Он молчит, боится признаться, бьётся как рыба об лед, тратит уйму времени… Результат — стресс, ошибки, ощущение собственной неполноценности.</p><h2>Как мониторинг помогает понять, кто что может?</h2><p>Итак, перейдем уже наконец-то к сути. Одним из главных процессов выступает мониторинг. Рассмотрим мониторинг анализа команды.</p><p>Когда вы начинаете собирать данные о том, сколько времени уходит на выполнение задач, вы получаете ценные инсайты:</p><figure><img src="https://media.tproger.ru/user-uploads/117350/2025-08-26/a82b49fc-bfad-4de0-9f5c-a26d46cd729f.jpg" alt="" /></figure><p>На основе таких данных можно сделать несколько выводов:</p><ul><li>Иван сильнее других в вёрстке.</li><li>Марии нужна поддержка при работе с API.</li><li>Петру стоит пройти обучение по DevOps-процессам.</li><li>Ольга хорошо справляется с автономной работой.</li></ul><p>Это уже не просто статистика, а точка роста для всей команды.</p><p>На основе этих данных можно распределить задачи, согласно компетенциям сотрудников, а это, в свою очередь, позволит ускорить процесс выполнения задач и проекта в целом. Также знания позволят уже строить более понятные и точные прогнозы по проекту, спринтам и так далее.</p><p><b>Советы по интерпретации данных:</b></p><ul><li>Не сравнивайте людей напрямую: у всех разный уровень подготовки и скорость работы.</li><li>Фокусируйтесь на динамике: например, если задача, которая ранее занимала 12 часов, теперь занимает 7 — это прогресс.</li><li>Смотрите на то, какие задачи решает сотрудник: если он берётся за сложные и новые — это тоже успех.</li><li>Обсуждайте результаты в команде, а не в одностороннем порядке: пусть сам сотрудник объяснит, почему задача заняла столько времени.</li></ul><h2>В чем соль? Какие могут быть итоги мониторинга</h2><p>Если спросить команду, почему задача заняла больше времени, чем ожидалось, чаще всего звучат такие ответы:</p><ul><li>«Мне нужно было подождать ответ от дизайнера».</li><li>«Потом QA вернула на доработку».</li><li>«Заказчик поменял требования».</li><li>«Сначала я делал одно, потом оказалось, что нужно совсем другое».</li></ul><p>Все эти ситуации — скрытые потери времени, которые не всегда видны на первый взгляд, но влияют на:</p><ul><li>сроки,</li><li>качество,</li><li>нагрузку сотрудников,</li><li>маржинальность продукта.</li></ul><p>Вот самые распространенные «точки утечки»:</p><figure><img src="https://media.tproger.ru/user-uploads/117350/2025-08-26/711637f0-9808-4c3c-a9cb-d846f48094df.jpg" alt="" /></figure><p>Эти проблемы могут существовать годами и съедать время и деньги компании, пока кто-то не начнёт их анализировать и менять.</p><p>Рассмотрим более детально каждый кейс</p><ul><li>ТЗ — всему голова (или нет)?</li></ul><p>Написано на салфетке без техкоманды — разработчики стартуют в тумане.</p><p>Решение: Technical Discovery — священный ритуал перед стартом задачи. Все за столом, все поняли, все согласны.</p><ul><li>Тестирование</li></ul><p>Баги ловят уже после релиза, чек-листов нет — стоимость исправлений зашкаливает.</p><p>Решение: чёткие критерии приемки в начале задачи. Автотесты — не роскошь, а страховка. Регресс — не наказание, а норма.</p><ul><li>Согласования</li></ul><p>Вечный двигатель правок? «Ой, а давайте ещё вот это…», — звучит как приговор сроку.</p><p>Решение: жёсткий процесс Change Request. Хочешь изменить? Оцени трудозатраты, согласуй с клиентом цену/сроки. Никакого «ну это же быстро!».</p><ul><li>Деплой</li></ul><p>Русская рулетка? Ручные костыли, нет CI/CD — каждый релиз как прыжок с парашютом в неизвестность. Ошибки, откаты, ночные бдения. Решение: автоматизация — ваш друг.</p><h2>Полезные советы: как выкрутиться из обнаруженных проблем</h2><p>Не все процессы одинаково полезны. Есть те, которые напрямую влияют на качество продукта.</p><p>Code Review</p><ul><li>Позволяет находить ошибки до того, как они попадут в прод.</li><li>Повышает уровень знаний в команде.</li><li>Формирует культуру ответственности: каждый знает, что его код будет проверен.</li></ul><p>Тестирование (manual / automated)</p><ul><li>QA-инженеры проверяют, что функционал работает корректно.</li><li>Автотесты ловят регрессии на раннем этапе.</li><li>Без тестирования сложно понять, что новый функционал не сломал старый.</li></ul><p>Чек-лист завершённости задачи</p><ul><li>Например, все поля валидируются? Есть ли обработка ошибок? Проверено ли поведение на разных устройствах?</li><li>Такие списки позволяют стандартизировать проверку и исключить «случайные» проблемы.</li></ul><p>Автоматическое тестирование (CI/CD pipeline)</p><ul><li>Запуск тестов перед каждым деплоем.</li><li>Проверка покрытия тестами.</li><li>Линтинг кода, анализ производительности.</li></ul><p>User Acceptance Testing (UAT)</p><ul><li>Показывает продукт заказчику до релиза.</li><li>Позволяет найти несоответствия ожиданиям.</li><li>Уменьшает количество доработок после релиза.</li></ul><p>Post-release monitoring</p><ul><li>Логирование ошибок в реальном времени.</li><li>Использование инструментов вроде Sentry, LogRocket, Bugsnag.</li><li>Быстрое реагирование на инциденты.</li></ul><h2>Выгода для бизнеса</h2><p>Многие руководители IT-компаний считают, что процессы — это внутреннее дело, которое не влияет на бизнес. Но опыт показывает обратное: хорошо организованные процессы — это прямая инвестиция в рентабельность продукта.</p><p>Когда вы улучшаете процессы, вы:</p><ul><li>снижаете трудозатраты,</li><li>сокращаете количество ошибок и переделок,</li><li>ускоряете вывод продукта на рынок,</li><li>повышаете удовлетворённость клиентов,</li><li>увеличиваете повторные продажи.</li></ul><p>А всё это напрямую влияет на маржинальность — долю выручки, остающуюся после вычета переменных издержек.</p><p>Одна из самых больших статей расходов в разработке — это зарплата команды. И если весомая часть времени уходит на согласования, поиск информации, исправление багов и доработки — вы платите за то, чтобы «тушить пожары», а не создавать ценность.</p><p>Время — деньги. Особенно, если вы работаете в конкурентной нише.</p><p>Снижение количества багов и их стоимости. Один из ключевых факторов, влияющих на маржинальность — стоимость бага.</p><p>И она тем выше, чем позже ошибка обнаружена.</p><figure><img src="https://media.tproger.ru/user-uploads/117350/2025-08-26/cdf3d785-c00d-4a18-aac5-66eabcab38b6.jpg" alt="" /><figcaption>Чем больше показатель относительной стоимости, тем тяжелее исправить баги и тем больше они повлияют на репутацию компании</figcaption></figure><p>Если пользователь доволен качеством и скоростью работы вашего продукта, он будет рекомендовать его другим. Это уже не просто снижение затрат, а прямое увеличение выручки.</p><p>В статье я постарался показать, что отсутствие процессов или их нечёткая организация могут привести к выгоранию сотрудников, перегрузке, снижению эффективности работы команды. В результате компания теряет кадры, время, клиентов и, что особенно важно, деньги.</p><p>Здесь я лишь обозначил проблему. Надеюсь, эта статья поможет вам взглянуть на процессы в своей компании по-новому, выявить слабые места и сделать шаг в правильном направлении.</p>]]></content:encoded>
    </item>
    <item>
      <title>Что можно накодить на телефоне и какие приложения для этого подходят</title>
      <link>https://tproger.ru/articles/chto-mozhno-nakodit-na-telefone-i-kakie-prilozheniya-dlya-etogo-podhodyat</link>
      <comments>https://tproger.ru/articles/chto-mozhno-nakodit-na-telefone-i-kakie-prilozheniya-dlya-etogo-podhodyat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вадим Егорцев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chto-mozhno-nakodit-na-telefone-i-kakie-prilozheniya-dlya-etogo-podhodyat</guid>
      <description><![CDATA[<p>Подборка топовых мобильных IDE и редакторов, которые помогают фронтенд и бэкенд разработчикам писать код прямо со своего телефона.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chto-mozhno-nakodit-na-telefone-i-kakie-prilozheniya-dlya-etogo-podhodyat">Что можно накодить на телефоне и какие приложения для этого подходят</a>»</p>]]></description>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Бэкенд]]></category>
      <category><![CDATA[Смартфоны]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 11 Aug 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>К сожалению, в смартфонах нет среды разработки по типу VS Code, которая одинаково хорошо работает с Python, C++, Java и другими ЯП. Приходится выбирать между десятками приложений, упираясь в ограниченный функционал.</p><p>Мы собрали лучшие инструменты для мобильного программирования: от простых редакторов до IDE с компиляторами и отладчиками. Вы узнаете про приложения для фронтенда и бэкенда. Мы затронем тему вайб-кодинга и даже расскажем, как установить Linux-терминал поверх Android или iOS.</p><p><i>Ссылки на приложения опубликовали в комментариях.</i></p><h2>CodePen</h2><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/360b9812-798c-4579-a75e-f7d86bc630b4.jpg" alt="" /></figure><ul><li>Приложение для браузера: ✅</li><li>Приложение для Android: ✅</li><li>Приложение для iOS: ❌</li></ul><p>Обзор начнём с онлайн-платформы для фронтендеров <b>CodePen</b>. Песочница работает с HTML, CSS, JS. С её помощью разработчики обмениваются идеями, создают прототипы и обучаются вёрстке. CodePen ценят за простоту – открыл песочницу, написал код, увидел результат.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/561609f4-d3be-44bf-9849-6abb016e0934.jpg" alt="" /><figcaption>Страница разработчика с популярными пэнами</figcaption></figure><p>Проекты называются «пэнами», ими можно делиться с другими пользователями. Ещё есть лента, где публикуют интересные работы с открытым кодом. Проекты можно копировать себе, оценивать и комментировать.</p><p>CodePen поддерживает 7 фреймворков, 5 библиотек и 24 набора UI-компонентов. Возможности ограничены только мощностью устройства: превью тяжёлых пэнов на телефоне будет лагать.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/45678e1b-f327-4666-90b7-467485a3da08.jpg" alt="" /><figcaption>Пример тяжёлого пэна, его превью не тянет даже ноутбук с 16 Гб ОЗУ</figcaption></figure><p>На бесплатном тарифе можно создавать неограниченное количество пэнов, коллекций и шаблонов. Единственное неудобство – добавлять картинки нужно через альтернативный хостинг. За $8 в месяц можно грузить картинки напрямую, работать в команде с коллегами, создавать личные пэны, которые закрыты от других пользователей.</p><h2>Code Editor</h2><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/7c54b2a9-24e2-432c-b1dd-2273b30bf749.jpg" alt="" /></figure><ul><li>Веб-приложение: ❌</li><li>Приложение на Android: ✅</li><li>Приложение на iOS: ✅</li></ul><p>Универсальный редактор <b>Code Editor</b> подсвечивает синтаксис 110+ языков. В приложении есть поиск и замена символов, отображение и скрытие строк, выделение совпадающих скобок, автоматические отступы.</p><p>Фронтендеры скачивают Code Editor  ради предпросмотра HTML и плагина <a href="https://tproger.ru/articles/kak-plagin-emmet-pomogaet-uskorit-rabotu-s-programmnym-kodom">Emmet</a>. Также через встроенную консоль удобно тестировать и отлаживать JS-скрипты.</p><p>Приложение распознает комбинации клавиш, поэтому к телефону можно подключить физическую клавиатуру и кодить как за маленьким монитором.</p><p>Code Editor поддерживает FTP, FTPS, SFTP и WebDAV для работы с удалёнными серверами. Ещё в приложение добавили Google Диск, Dropbox и GitHub, чтобы синхронизировать файлы между устройствами.</p><h2>Acode</h2><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/75cf8fe0-b50f-409d-ae14-e452e2c8b833.jpg" alt="" /></figure><ul><li>Веб-приложение: ❌</li><li>Приложение на Android: ✅</li><li>Приложение на iOS: ❌</li></ul><p>Редактор <b>Acode </b>охватывает 100+ языков программирования. Приложение оптимизировано для работы с файлами до 50000 строк. Acode выбирают для мобильной разработки, быстрых правок и обучения программированию.</p><p>Встроенный просмотр HTML и Emmet ускоряет вёрстку. В JS-консоли можно тестировать код фрагментами без создания отдельных файлов. Веб-сайты запускаются прямо в браузере приложения. Ещё редактор поддерживает GitHub, FTP/SFTP для работы с удалёнными серверами.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/b4a7cd0d-144f-48a8-83ba-d33d8068be6d.jpg" alt="" /><figcaption>Acode на планшете</figcaption></figure><p>Плагины расширяют функционал Acode. Например, можно установить эмулятор терминала или добавить ИИ-агента от популярных провайдеров.</p><h2>Pydroid, Cxxdroid, Jvdroid</h2><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/1bb83185-6c33-425a-93ba-6962bf94ca3b.jpg" alt="" /></figure><ul><li>Веб-приложение: ❌</li><li>Приложение на Android: ✅</li><li>Приложение на iOS: ❌</li></ul><p>Приложения от одного разработчика не случайно объединили в один раздел – это лучшие мобильные IDE для Python, C/C++ и Java. Каждое заточено под конкретный ЯП, но все построены на одной архитектуре и предлагают схожий функционал.</p><p>IDE работают автономно – интернет нужен только для скачивания дополнений. В каждом приложении есть терминал, примеры кода для обучения, система управления пакетами и библиотеками.</p><p>Редакторы поддерживают:</p><ul><li>подсветку синтаксиса,</li><li>работу с вкладками,</li><li>расширенную клавиатуру,</li><li>быструю публикацию кода на Pastebin.</li></ul><p><b>Pydroid 3</b> – самое функциональное приложение из тройки. Это интерпретатор Python 3 с менеджером пакетов pip и готовыми библиотеками для data science:</p><ul><li>numpy,</li><li>scipy,</li><li>matplotlib,</li><li>scikit-learn,</li><li>jupyter.</li></ul><p>В премиум-версии доступны OpenCV, TensorFlow и PyTorch.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/e88e3e40-26f7-45e7-9fde-a8b7902622c2.jpg" alt="" /><figcaption>IDE для Python</figcaption></figure><p>Есть поддержка GUI-приложений через Tkinter, Kivy с SDL2-бэкендом и PySide 6. Также встроен компилятор C/C++/Fortran для сборки нативных библиотек и Cython.</p><p>Отладчик PDB работает с точками останова. Приложение определяет используемые библиотеки и переключается на соответствующий режим выполнения. Ещё редактор автоматически ставит отступы и предлагает навигацию по методам.</p><p><b>Cxxdroid </b>– это компилятор C/C++ на базе Clang с поддержкой ассемблера. В менеджере пакетов есть популярные библиотеки:</p><ul><li>Boost,</li><li>SQLite,</li><li>ncurses,</li><li>libcurl.</li></ul><p>Графические библиотеки SDL2, SFML и Allegro доступны в премиум-версии.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/5104e1cb-3cc4-4aa3-8a81-391e933244f6.jpg" alt="" /><figcaption>IDE для C/C++</figcaption></figure><p>Разработчики заморочились над системой кэширования, которая ускоряет сборку в среднем в 3 раза, а при использовании Boost – до 33 раз. Также есть режим интерпретатора (REPL) на основе CERN Cling для интерактивной работы с кодом.</p><p>Архитектура приложения исключает падения IDE из-за ошибок в пользовательском коде – анализ и компиляция выполняются одним компилятором.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/10db4050-fa2c-4f2f-830d-592b43f3422a.jpg" alt="" /><figcaption>IDE для Java</figcaption></figure><p><b>Jvdroid </b>работает на OpenJDK 11 – редактор поддерживает стандарты Java и jar-библиотек. Интегрирован с Maven для управления проектами и зависимостями. Компилятор оптимизирован с помощью Nailgun.</p><p>Приложение включает JShell для интерактивной работы с Java. Есть компиляция программ на Kotlin, Scala и Clojure через Maven. Ещё редактор показывает Javadoc для методов и классов.</p><h2>Replit</h2><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/043f2475-978b-4e3e-bcac-bc5140d757d3.png" alt="" /></figure><ul><li>Веб-приложение: ✅</li><li>Приложение на Android: ✅</li><li>Приложение на iOS: ✅</li></ul><p><b>Replit </b>– облачная IDE с ИИ-агентом. Вы получаете помощника, который создаёт проекты по промпту: описываете идею приложения, агент предлагает функции, генерирует код и деплоит в облако.</p><p>Ассистент автоматически разбивает большие файлы на части, оптимизирует работу с API, добавляет нужные библиотеки. Есть поддержка основных языков:</p><ul><li>Python,</li><li>JavaScript,</li><li>TypeScript,</li><li>C++,</li><li>HTML/CSS,</li><li>Java,</li><li>Ruby и десятки других.</li></ul><p>До 100 человек могут одновременно редактировать код. Готовые проекты деплоятся одним кликом. Доступна выделенная VM, автоскейлинг, деплой по запросу.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/e3884f7c-bd41-4369-a705-beb9b44ced6c.jpg" alt="" /></figure><p>Встроенные инструменты:</p><ul><li>Автодополнение кода через Ghostwriter.</li><li>Поиск и исправление ошибок в реальном времени.</li><li>Модульное тестирование без настройки.</li><li>Интеграция с GitHub (автосинхронизация).</li><li>Аутентификация пользователей через Repl Auth.</li></ul><p>ИИ-агент поддерживает ограниченный набор технологий – Flask и Node.js. С React и другими фронтенд-фреймворками могут быть проблемы. Интеграции доступны только с OpenAI, Google, PostgreSQL и S3.</p><p>Официальные приложения для iOS и Android позволяют кодить прямо с телефона. Интерфейс адаптирован под сенсорные экраны, поддерживается голосовой ввод для общения с ассистентом.</p><p>Replit подходит для быстрого прототипирования, обучения и создания простых веб-приложений. ИИ-агент понравится тем, кто хочет воплотить идею в код без знаний разработки. Для сложных проектов не подойдет, но для MVP и экспериментов – хороший выбор.</p><h2>Termux (iSH Shell)</h2><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-07-25/6df9c91d-c8dd-45de-b277-25abc5d28f97.jpg" alt="" /></figure><ul><li>Веб-приложение: ❌</li><li>Приложение на Android: ✅</li><li>Приложение на iOS: ✅</li></ul><p><b>Termux </b>– это полноценный Linux-терминал для Android. В отличие от редакторов кода, вы получаете ОС со всеми инструментами программиста. Можно работать с любыми языками программирования, компилировать код, устанавливать библиотеки, подключать базы данных, настраивать веб-серверы.</p><p>После установки в приложении вы увидите только чёрный экран – это Linux-терминал. Графического интерфейса нет, всё управляется командами.</p><p>Перед работой обновите систему:</p><p>Первая команда проверяет доступные обновления, вторая их устанавливает. На все вопросы отвечайте «Y».</p><p>Termux используют системные администраторы, разработчики, студенты IT-специальностей и все, кому нужна мобильная среда разработки. Единственный нюанс – нужно время на изучение bash, но это справедливая цена за мощный и гибкий инструмент.</p><h2>Подведём итоги</h2><p>Выбор мобильного редактора зависит от ваших задач:</p><ul><li>Для фронтенда подойдут CodePen (веб-разработка и прототипирование), Code Editor и Acode (универсальные редакторы с поддержкой HTML/CSS/JS).</li><li>Для бэкенда есть отдельные IDE: Pydroid для Python, Cxxdroid для C/C++, Jvdroid для Java. Они работают автономно и включают все необходимые инструменты.</li><li>Для экспериментов с ИИ попробуйте Replit – облачную IDE с умным ассистентом, который создаёт приложения по описанию.</li><li>Для профессиональной разработки установите Termux (Android) или iSH Shell (iOS) – это полноценные Linux-терминалы с неограниченными возможностями.</li></ul><p><i>Знаете классное приложение, которое не попало в подборку? Расскажите в комментариях о его плюсах и минусах! Ваши советы помогут коллегам в поисках идеального инструмента для работы с кодом на смартфоне.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>BPM, BPMN и Camunda: язык процессов, который понимает и бизнес, и код</title>
      <link>https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod</link>
      <comments>https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Максим Павлов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod</guid>
      <description><![CDATA[<p>Рассматриваем, как BPM и BPMN превращают процессы в управляемые сценарии, а Camunda позволяет исполнять их в реальных системах — от микросервисов до ML-интеграций.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/bpm--bpmn-i-camunda--yazyk-processov--kotoryj-ponimaet-i-biznes--i-kod">BPM, BPMN и Camunda: язык процессов, который понимает и бизнес, и код</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Автоматизирование]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 04 Aug 2025 06:50:02 GMT</pubDate>
      <content:encoded><![CDATA[<p><i>BPM, BPMN и Camunda: язык процессов, который понимает и бизнес, и код</i></p><p>Привет, меня зовут Максим Павлов, руководитель направления архитектуры в компании Axenix</p><p>Бизнес-процессы в компании на определенном этапе её существования происходят как будто сами по себе. Пока компания маленькая, это может сработать — «все всё знают». Но как только бизнес начинает расти, такая спонтанность тормозит развитие. Сотрудники теряются, клиенты ждут, ошибки множатся, контроль ускользает. И в этот момент в дело вступают специальные инструменты управления процессами.</p><h2>Руководства и чертежи</h2><p>BPM (Business Process Management) — это управление бизнес-процессами как системой: постановка, оптимизация, автоматизация. BPMN (Business Process Model and Notation) — язык и нотация для графического описания этих процессов.Иными словами: BPM — это методология, а BPMN — инструмент её визуализации и реализации.</p><p>BPM можно сравнить с общим руководством по сборке конструктора, в котором описываются шаги, необходимые для получения нужного результата. А вот BPMN — это как чертёж или схема конструктора, где видно, в какой последовательности соединять детали и кто за что отвечает. Такая схема помогает всем участникам понять процесс одинаково. Приведём пример с кофейней: клиент делает заказ → кассир его принимает → бариста готовит → клиент получает напиток. Всё достаточно просто. Но стоит лишь немного усложнить: добавить доставку, оплату бонусами, акции, возвраты — и без формализации уже не обойтись. Где что начинается, кто за что отвечает, что делать при исключении?</p><figure><img src="https://media.tproger.ru/user-uploads/116654/2025-07-16/1c8e22b6-9104-4f7d-80a2-ff74d5d7d5e0.png" alt="" /><figcaption>Рис.1 Процесс обслуживания клиентов в BPMN</figcaption></figure><p>BPM отвечает на эти вопросы, превращая каждую бизнес-ситуацию в управляемый сценарий. А чтобы описывать такие сценарии, нужен универсальный язык. Таким языком стал BPMN.</p><p>Нотация BPMN появилась как ответ на потребность в схеме, одинаково понятной и бизнесу, и техническим специалистам. До BPMN в ходу были либо слишком «технические» языки вроде UML Activity Diagram, понятные только архитекторам, либо простые блок-схемы, которые не годились для автоматизации.</p><p>BPMN стал золотой серединой. Это строгая визуальная система: кружки, стрелки, ромбики, прямоугольники — все чётко определено. Каждый элемент имеет однозначную трактовку и может быть интерпретирован машиной. И самое главное — такую схему можно превратить в работающий процесс.</p><p>Именно это и делает Camunda — одна из самых популярных open-source платформ для исполнения процессов, описанных в BPMN.</p><h2>Camunda: движок процессов нового поколения</h2><p>Camunda — не просто визуальный редактор. Это полноценный исполняющий движок, который «читает» BPMN-схемы и превращает их в действия. Camunda подключается к вашей инфраструктуре и запускает процессы, отслеживает их выполнение, взаимодействует с API, ставит задачи людям и логирует все, что происходит.</p><p>На уровне архитектуры Camunda может работать в двух режимах: как отдельный сервер или встраиваемый компонент (embedded mode). Последний особенно удобен для микросервисной архитектуры — процесс запускается прямо внутри сервиса, без внешних зависимостей. При этом возможна тесная интеграция с Kafka, REST, базами данных и другими системами.</p><p>Преимущество Camunda не только в гибкости и масштабируемости, но и в универсальности. Он одинаково хорошо справляется как с короткими потоковыми процессами, так и с тяжелыми пакетными расчетами, охватывающими тысячи записей.</p><h2>Два типа процессов: потоковые и пакетные</h2><p>Одно из ключевых понятий в работе с Camunda — различие между потоковой и пакетной обработкой. Это неформальное, но важное деление, от которого зависит структура процесса и подход к его проектированию.</p><p><b>Потоковая обработка</b> характерна для ситуаций, когда каждый запрос обрабатывается отдельно и в реальном времени. Например, клиент подает заявку на кредит. Система в течение 30–40 секунд проверяет данные, запрашивает скоринг, получает ответ, принимает решение и сообщает результат. Каждый запрос — это отдельный экземпляр процесса, который проходит всю цепочку действий.</p><p>Такой подход требует высокой параллельности (до 10–15 RPS), устойчивости к ошибкам, быстрой реакции. Иногда в цепочку попадают ручные этапы — например, дополнительная проверка менеджером (примерно в 5% случаев). Потоковые процессы отлично вписываются в event-driven архитектуру и легко масштабируются, особенно при использовании Kafka в качестве шины событий.</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/cffb461c-ea49-4ed9-9154-e5162548e260.png" alt="" /><figcaption>Рис. 2 Суть потокового процесса</figcaption></figure><p><b>Пакетная обработка</b>, напротив, работает с большими массивами данных, поступающими периодически. Например, раз в месяц запускается расчет предодобренных предложений. На вход поступают данные из нескольких десятков источников, которые разбиваются на пакеты (батчи). Процесс проходит через подготовку (валидация, фильтрация), основную обработку (расчет), завершение (отправка, отчеты).</p><p>Такие процессы могут длиться часами, включать десятки этапов и сложную логику обработки ошибок: от откатов до компенсаций и Dead Letter Queue. При проектировании приходится учитывать параллельную обработку батчей, конфликты доступа к источникам, индивидуальные требования к формированию пакетов.Рис. 3 Суть пакетного процесса</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/af59544f-1bf1-4ac0-84a4-81d1c354124e.png" alt="" /><figcaption>Рис. 3 Суть пакетного процесса</figcaption></figure><p>Важно понимать: обе модели — потоковая и пакетная — могут сосуществовать в одной системе. Более того, сложные системы используют гибридные подходы, когда потоковая часть инициирует пакетную обработку или наоборот.</p><p>В основном с помощью BPMN автоматизируются процессы, где важен порядок шагов и взаимодействие между людьми и системами. Например, обработка клиентских заявок, согласования, интеграция микросервисов и ИТ-систем и др.</p><p>Один из классических примеров — автоматизация обработки клиентских заявок в банке. Каждый клиент подает заявку, запускается потоковый процесс, система взаимодействует с внешними сервисами (скоринг, KYC, верификация), принимает решение и сохраняет результат. Весь процесс прозрачен, логируем, можно настроить алерты и отчеты для бизнес-пользователей.</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/ca107881-2358-4c02-bafd-08f9eb88bcbd.png" alt="" /><figcaption>Рис. 4 Процесс обработки заявки на кредит</figcaption></figure><h2>Прозрачность и контроль</h2><p>Одним из плюсов BPMN-систем является возможность мониторинга. Camunda предлагает встроенные инструменты (например, Cockpit), а также легко интегрируется с Prometheus и Grafana. Это позволяет DevOps-команде видеть текущую картину: сколько процессов активны, где возникли ошибки, какие этапы «висят», сколько времени занимают ключевые шаги.</p><p>Для бизнеса доступны BI-дэшборды и email-уведомления — можно получать отчеты о «застрявших» задачах, несанкционированных отклонениях и задержках. Все это повышает управляемость и доверие к автоматизации.</p><h2>Оркестрация микросервисов и ML-модели</h2><p>Camunda отлично вписывается в современную микросервисную архитектуру. Каждый микросервис выполняет атомарную задачу, а orchestration layer — в виде процесса BPMN — управляет последовательностью. Это снижает связность, упрощает внесение изменений и повышает надёжность.</p><p>Дополнительно, процессы могут вызывать внешние ML-сервисы — например, для скоринга, классификации, предсказаний. Camunda не ограничивает формат интеграции: это может быть REST, gRPC, Kafka: зависит от ваших технических предпочтений. Возможна реализация механизма принятия решений на лету, где модель принимает решение, а BPMN описывает, что с этим решением делать дальше.</p><p>При использовании Camunda как оркестратора микросервисов уменьшается объём инфраструктурного кода. Сами сервисы становятся проще, потому что они больше не содержат в себе бизнес-процессы — они отвечают только за конкретные атомарные действия.</p><p>Появляется возможность быстро добавлять новые задачи без риска нарушить целостность общего процесса. Отладка упрощается, мониторинг становится прозрачным, а время внесения изменений резко сокращается. Это меняет сам подход к разработке: теперь оркестрация выносится в отдельный слой, а не размазывается по коду приложений.</p><p>Такие аргументы становятся все более очевидными, особенно для крупных организаций. Camunda в этом контексте уже не требует специального «продавливания» — в финансовом и телеком-секторах она становится стандартом де-факто, в том числе за счёт своей совместимости с современными стеком решений, открытого кода и широкой базы экспертизы.</p><h2>Что будет дальше</h2><p>Один из главных аргументов в пользу BPMN-систем заключается в снижении сложности разработки. Код сервисов фокусируется на бизнес-логике, а не на маршрутах, условиях и транзакционности. Оркестратор берет на себя управление порядком, обработку исключений, разруливание ветвлений. Это упрощает поддержку, ускоряет внедрение новых функций и дает команде наглядную картину процессов.</p><figure><img src="https://media.tproger.ru/user-uploads/116516/2025-07-24/b3eece89-6423-4474-967c-a556755f0388.png" alt="" /><figcaption>Рис. 5 Пример сетапа Camunda</figcaption></figure><p>Дальнейшее развитие BPMN-систем сегодня тесно связано с трансформацией архитектурных подходов в сторону событийной (event-driven) и облачной (cloud-native) парадигмы. Это особенно заметно на примере эволюции Camunda, где новая версия Zeebe уже ориентирована именно на такие сценарии. Если классические BPM-движки предполагали более линейное, централизованное исполнение процессов, то современный подход позволяет строить распределенные, масштабируемые пайплайны, реагирующие на события из множества источников — будь то Kafka, REST-вызовы или внутренние системные сигналы.</p><p>Параллельно развивается и пользовательский уровень взаимодействия с процессами. Визуальные редакторы становятся всё более интуитивными, появляются ИИ-ассистенты, предлагающие оптимальные ветвления, проверку ошибок, шаблоны и даже автогенерацию схем на основе описаний.</p><p>Всё это формирует тренд на low-code/no-code — попытку упростить процесс создания процессов, дать возможность бизнесу напрямую формулировать логику, не обращаясь к разработчикам. Однако на практике это упрощение работает лишь в определённом диапазоне. Как только процессы становятся сложными, с несколькими ветками, исключениями, внешними интеграциями и транзакционными требованиями — без архитектурной работы и инженерного подхода не обойтись. Low-code подходит для простых согласований и прототипов, но реальный бизнес требует устойчивых решений.</p><p>Вопрос о полном исчезновении ручных процессов остается скорее философским. Технически, всё, что можно формализовать, можно автоматизировать. Но бизнес живёт в мире неопределенности, исключений и человеческих решений. Проверка по субъективным критериям, согласование с учетом контекста и живая коммуникация пока не поддаются полной алгоритмизации.</p>]]></content:encoded>
    </item>
    <item>
      <title>Четыре дня вместо пяти: крупнейшее исследование доказывает, что сотрудники стали счастливее, здоровее и продуктивнее</title>
      <link>https://tproger.ru/news/chetyre-dnya-vmesto-pyati--krupnejwee-issledovanie-dokazyvaet--chto-sotrudniki-stali-schastlivee--zdorovee-i-produktivnee</link>
      <comments>https://tproger.ru/news/chetyre-dnya-vmesto-pyati--krupnejwee-issledovanie-dokazyvaet--chto-sotrudniki-stali-schastlivee--zdorovee-i-produktivnee?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Даровская Маша]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/chetyre-dnya-vmesto-pyati--krupnejwee-issledovanie-dokazyvaet--chto-sotrudniki-stali-schastlivee--zdorovee-i-produktivnee</guid>
      <description><![CDATA[<p>Исследование с участием 141 компании в шести странах показало: переход на четырёхдневную рабочую неделю без снижения зарплаты снижает стресс и выгорание, улучшает здоровье и повышает продуктивность.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/chetyre-dnya-vmesto-pyati--krupnejwee-issledovanie-dokazyvaet--chto-sotrudniki-stali-schastlivee--zdorovee-i-produktivnee">Четыре дня вместо пяти: крупнейшее исследование доказывает, что сотрудники стали счастливее, здоровее и продуктивнее</a>»</p>]]></description>
      <category><![CDATA[Для мотивации]]></category>
      <category><![CDATA[Новости]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 23 Jul 2025 08:41:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Самое масштабное на сегодняшний день <a href="https://www.nature.com/articles/s41562-025-02259-6.epdf?sharing_token=4w_wJbeaRYKB5I0_wO5VrtRgN0jAjWel9jnR3ZoTv0NXNg7f1WLtO1_IrRdwKTDkgIQJMDNPCYgk0gXJ1Sh9DHeDJ8ELOwgohv6ucyEWwyTsuDI6Qk_ZdUg9Nc2Hte2f-dk1nX9t4ZfkNWHMjIdf3iGuXAZS_nVwvT921RAKMl3Emn1CVIzm3M2d0_19O-Xnr0bruZFDjr3YHjkiTURqbZmYWLKFUIohF3wIkZS_2L4%3D&amp;tracking_referrer=www.scientificamerican.com">исследование</a> четырёхдневной рабочей недели охватило 141 компанию в шести странах — от США до Австралии. И результаты говорят сами за себя: 90% работодателей решили оставить новый режим и после завершения эксперимента.</p><p>По данным, опубликованным в журнале Nature Human Behaviour, трёхдневные выходные без снижения зарплаты:</p><ul><li>снижают выгорание и стресс,</li><li>повышают удовлетворённость работой,</li><li>укрепляют психическое и физическое здоровье сотрудников.</li></ul><p>«Мы опасались, что люди будут спешить и только сильнее выматываться», — говорит социолог Вэнь Фань из Бостонского колледжа, ведущий автор исследования. — «Но этого не произошло. Напротив, стресс снизился».</p><h2>Пандемия как триггер перемен</h2><p>Исследование стало ответом на кризис морального состояния и рост увольнений после пандемии COVID-19. Массовое выгорание, открытые вакансии и переоценка жизненных приоритетов подтолкнули компании к экспериментам с гибким графиком.</p><p>В исследовании участвовали 2896 сотрудников. Им дали 8 недель на перестройку процессов: меньше встреч и рутинных задач, больше смысла. За две недели до старта и через полгода участники заполняли опросники: «Насколько работа вас раздражает?» и «Как вы оцениваете своё психическое здоровье?» Ответы показали заметное улучшение всех метрик.</p><p>В целом работники были более удовлетворены своей работой и сообщали об улучшении психического здоровья после шести месяцев сокращенной рабочей недели.</p><h2>Немного критики</h2><p>Четырёхдневную рабочую неделю часто критикуют за то, что сотрудники не могут за это время добиться того же результата, что за стандартную. Исследование не анализировало производительность труда в масштабах всей компании, но предлагает объяснение того, как сотрудники могут работать эффективнее за меньшее количество часов.</p><p>«Когда люди лучше отдохнули, они совершают меньше ошибок и работают интенсивнее», — говорит Педро Гомеш, экономист из Лондонского университета Биркбек. Однако Гомеш хотел бы увидеть более глубокий анализ влияния на производительность.</p><p>Вэнь Фань отмечает, что более 90% компаний решили сохранить четырёхдневную рабочую неделю после окончания эксперимента, что свидетельствует об отсутствии опасений по поводу падения прибыли.</p><p>Авторы также изучили, снизится ли положительное влияние сокращенных рабочих недель после того, как система потеряет свою новизну. Они собрали данные после 12 месяцев, проведенных работниками после начала эксперимента, и обнаружили, что уровень их благополучия оставался высоким.</p><p>Однако, поскольку компании добровольно согласились на участие в исследовании, результаты могли преувеличить истинный эффект четырёхдневной рабочей недели в ряде компаний. А поскольку все результаты были получены в результате самоотчётов, сотрудники могли преувеличить преимущества в надежде сохранить дополнительный выходной. Авторы исследования призывают к проведению рандомизированных исследований для проверки этой схемы.</p><p>А что вы думаете о четырёхдневной рабочей неделе? Успевали бы справляться со своими задачами? Если вы — менеджер, то поделитесь, как бы вы отнеслись к такому решению в отношении вашей команды?</p>]]></content:encoded>
    </item>
    <item>
      <title>Как разработчику повысить прозрачность своей работы</title>
      <link>https://tproger.ru/articles/kak-razrabotchiku-povysit-prozrachnost-svoej-raboty</link>
      <comments>https://tproger.ru/articles/kak-razrabotchiku-povysit-prozrachnost-svoej-raboty?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ксения Андреева]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-razrabotchiku-povysit-prozrachnost-svoej-raboty</guid>
      <description><![CDATA[<p>В условиях, когда вся работа переведена в онлайн, прозрачность рабочего процесса разработчика становится крайне важной. Каждый разработчик сталкивается с задачей демонстрации своей работы для повышения прозрачности. Что здесь важно и как разработчику повысить прозрачность своей работы — разберёмся в этой статье.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-razrabotchiku-povysit-prozrachnost-svoej-raboty">Как разработчику повысить прозрачность своей работы</a>»</p>]]></description>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 26 Nov 2024 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В условиях, когда команды одного проекта разбросаны по всему миру и вся работа переведена в онлайн, прозрачность рабочего процесса разработчика становится крайне важной. Каждый прогер сталкивается с задачей не только выполнения, но и демонстрации своей работы для повышения прозрачности. Что важно в этом вопросе и как разработчику повысить прозрачность своей работы — разберёмся в этой статье.</p><h2>Почему работа должна быть прозрачной</h2><p>Во-первых, повышение «видимости» работы разработчика позволяет лучше отслеживать этапы выполнения проекта: от постановки задачи до её завершения. В Agile и Scrum, например, прозрачность вовсе считается базой: все члены команды видят прогресс каждого сотрудника, вовремя обнаруживают проблемы и устраняют их в моменте.</p><p>Во-вторых, высокая степень прозрачности = более эффективная коммуникация между членами команды и стейкхолдерами. Менеджеры проектов могут быстро оценивать статус задач, а разработчики — получать своевременные отзывы о своей работе. Это снижает риск возникновения конфликтов и недопонимания внутри команды.</p><p>Кроме того, для самого разработчика прозрачность работы помогает демонстрировать свои компетенции: умение демонстрировать свои достижения и прогресс способствует карьерному росту.</p><p>Использование инструментов управления задачами и календарей позволяет структурировать рабочий процесс и делиться информацией с коллегами в реальном времени. Trello, Jira, Asana и другие решения для управления проектом помогают визуализировать этапы выполнения задач, распределять ответственность и устанавливать сроки выполнения задач. Это упрощает контроль над проектом и позволяет всем участникам оставаться в курсе происходящего.</p><p>Синхронизация календарей помогает координировать встречи и совещания, избегая конфликтов расписаний и гарантируя присутствие всех ключевых участников на обсуждениях.</p><p>А использование единого пространства для хранения документации (например, GitHub или Confluence) также способствует повышению видимости: все изменения фиксируются автоматически, что упрощает отслеживание прогресса по проекту.</p><h2>Почему важно понимать текущие рабочие процессы</h2><p>Для повышения прозрачности стоит начать с анализа текущих рабочих процессов и используемых инструментов —    оценки того, как задачи распределяются, отслеживаются и контролируются в команде. Анализируя процессы, разработчикам важно понимать, как они влияют на видимость работы и какие улучшения можно провести для оптимизации работы.</p><p>Следующий шаг — выявление узких мест в процессе разработки и проблем в коммуникации между членами команды. Например, нечётко сформулированные требования могут привести к недопониманию задач, а отсутствие регулярных проверок прогресса — к задержкам в разработке. Проблемы в общении также «стопорят» работу: недостаточная вовлечённость членов команды в обсуждение важных технических моментов проекта или вовсе полное отсутствие обратной связи.</p><p>Решением этих проблем может стать проведение регулярных встреч команды, где каждый участник может поделиться своим прогрессом и возникшими трудностями: так повышается не только видимость работы каждого разработчика, но в целом настроение внутри команды.</p><h2>Что выбрать для повышения прозрачности работы</h2><p>Вопрос здесь не столько к разработчику, сколько к руководителям отделов, CTO и CEO. Нужно выбрать систему для совместной работы, которая будет комфортна каждому сотруднику.</p><h3>Jira</h3><p><a href="https://www.atlassian.com/software/jira">Jira</a> — один из самых популярных инструментов для управления проектами и отслеживания задач, особенно в разработке. С помощью Jira можно планировать спринты, распределять задачи между участниками команды и отслеживать прогресс. Возможность интеграции с другими сервисами делает его одним из наиболее мощных инструментов для команд, которые работают по методологиям Agile и Scrum.</p><h3>Trello</h3><p><a href="https://trello.com/">Trello</a> — это упрощённый инструмент, который идеально подходит для небольших команд или личных проектов. С помощью досок и карточек можно быстро организовать задачи, расставить приоритеты и следить за выполнением задач в режиме реального времени. Простота интерфейса Trello делает его привлекательным для тех, кто только начинает работать с системами управления проектами.</p><h3>Slack</h3><p><a href="https://slack.com/">Slack</a> — основной инструмент для общения в команде; платформа для обмена мгновенными сообщениями, файлами и поддержки групповых чатов. Slack позволяет создавать каналы по отдельным темам или проектам.</p><p>Ещё есть <a href="https://www.atlassian.com/ru/software/confluence">Confluence</a> (для «документирования» процессов), <a href="https://github.com/">GitHub</a> (для управления версиями кода) и всем известный <a href="https://www.zoom.com/ru">Zoom</a> (для видеоконференций) или его старший брат <a href="https://www.skype.com/ru/">Skype</a>.</p><p><b>Выбор подходящих инструментов должен основываться на:</b></p><ol><li><b>Совместимости с текущими процессами. </b>Инструменты должны легко интегрироваться с уже существующими системами и подходами к работе в команде.</li><li><b>Удобстве использования и обучении.</b> Интерфейс должен быть интуитивно понятным как для новых пользователей, так и для опытных сотрудников, а время на обучение должно быть минимальным.</li><li><b>Возможностях масштабирования. </b>Любой инструмент управления проектами должен поддерживать рост команды или проекта без потери производительности и удобства использования.</li><li><b>Возможных интеграциях со сторонними сервисами. </b>Подключение других популярных сервисов с системой управления проектами позволяет создать единую экосистему решений для контроля всех аспектов проекта.</li><li><b>Безопасности данных. </b>Это должно быть «закрытое» решение, доступ к которому получат только текущие сотрудники проекта.</li></ol><h2>Шаги для бесшовной интеграции нескольких систем</h2><ol><li><b>Первый шаг</b> здесь всё тот же — анализ существующих инструментов и понимание их совместимости друг с другом. Важно учитывать, какие системы уже используются командой: системы управления проектами, платформы для контроля версий и коммуникационные инструменты.</li><li><b>Второй шаг</b> — это определение API-возможностей каждого инструмента. Практически все современные платформы имеют API-интерфейсы, которые позволяют настраивать интеграцию с другими системами. Разработка скриптов или использования готовых решений передачи данных между системами может значительно сократить время работы вручную.</li><li><b>Третий шаг</b> — обучение команды работе с новыми интегрированными инструментами в виде тренингов и формирования регламентов работы. Всё это поможет сотрудникам быстро адаптироваться к изменениям и использовать новые возможности для повышения своей эффективности.</li></ol><p>Например, использование Slack в сочетании с GitHub Actions для автоматизации уведомлений о статусе сборки проекта и результатах тестирования позволяет разработчикам оперативно получать информацию о том, на каком этапе находится проект, какие ошибки требуют внимания и как быстро были устранены проблемы.</p><p>Ещё один пример: Jira в сочетании Confluence для создания единой системы управления знаниями. Разработчики могут отслеживать прогресс задач в Jira, а в Confluence делиться документацией и отчётами.</p><h2>Как улучшить взаимодействие с другими сотрудниками</h2><ol><li>Создание подробной документации по проекту даёт возможность каждому члену команды быстро находить необходимую информацию без необходимости отвлекать коллег;</li><li>Регулярный обмен обратной связью помогает разработчикам понимать, как их работа воспринимается внутри команды и какие области требуют улучшения;</li><li>Совместное программирование (с другим разработчиком) способствует не только быстрому решению сложных задач, но и передаче знаний между участниками команды.</li></ol><p>Регулярные встречи особенно важны для повышения прозрачности всех этапов разработки. Вот только не многочасовые и не ежедневные. И не без заранее подготовленного плана созвона. А чёткие и точечные.</p><figure><img src="https://media.tproger.ru/user-uploads/106063/2024-11-20/2fce0408-05c7-42c6-88c1-94d59f6eb3f9.png" alt="" /></figure><ol><li><a href="http://attentiv.com/america-meets-a-lot/">63%</a> совещаний и онлайн-встреч с командой проводятся без предварительного подготовленного плана. Важно указывать все детали: кто будет на встрече, какие вопросы должны решиться по окончанию встречи, время созвона, темы для обсуждения.</li><li>Справочные материалы, как и план встречи, нужно отправлять заранее. Все ссылки, доступы, скрины и скринкасты, вопросы — всё это должно быть отправлено до встречи, а не во время.</li><li>Важно следить за таймингом и не уходить от заданной темы. Нужно обсудить что-то ещё с другим сотрудником? Запланируйте отдельную встречу, чтобы не тратить время всех членов команды одновременно.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/106063/2024-11-20/0b580c58-e3c9-47ec-9f88-b71e887dee01.png" alt="" /><figcaption>Пирамида М̶а̶с̶л̶о̶у̶ Скотта Хансельмана, разработчика Microsoft</figcaption></figure><h2>Отслеживание прогресса и достижений</h2><p>Метрики важны для измерения продуктивности и выявления областей для улучшения. <b>Сюда относятся: </b></p><ul><li><b>Скорость (Velocity)</b> показывает скорость выполнения задач командой за определённый промежуток времени. Она помогает оценить темп работы и планировать будущие спринты.</li><li><b>Cycle Time</b> — время от начала работы над задачей до её завершения позволяет понять, насколько быстро команда может адаптироваться к изменениям.</li><li><b>Метрики кода</b> — сюда относятся такие показатели, как количество ошибок или покрытие кода тестами. Эти показатели помогают отслеживать качество выпускаемого продукта.</li></ul><p>Дашборды помогут объединить эти метрики на одном экране и помогут быстро оценить текущую ситуацию проекта. С их помощью руководители и члены команды могут мгновенно увидеть отклонения от плана, равно как и определить задачи и процессы, которые выполняются быстрее и успешнее всего.</p><p>Кстати, <b>именно признание достижений (и, конечно же, хорошая оплата труда) помогает разработчикам понимать, что они ценны в команде</b>. Когда их усилия замечены и оценены по достоинству, это способствует укреплению духа команды.</p><p>Например, раз в месяц можно устраивать встречи с признанием успехов каждого отдела, который работает над проектом. Часто на таких совещаниях говорят об успехах отдела продаж и маркетинга, а разработчики остаются в тени. Важно публично заявлять об успехах отдела разработки — именно программисты создают сам продукт, которым будут пользоваться.</p><p>Понимание важности повышения прозрачности вашей работы как разработчика, предложение руководству новых инициатив и инструментов работы — это первый шаг на пути к успешной реализации этой стратегии в команде и проекте. Разработчику важно показывать всем ключевым сотрудникам процесс и результаты своей работы и подкреплять их фактами, цифрами, скриншотами. Тогда вас абсолютно точно заметят и вполне вероятно вы даже получите повышение.</p><p>Работа разработчика буквально неоценимо важна, а потому нужно уметь отстаивать себя и показывать всё, что вы делаете для проекта. Мы прекрасно понимаем вас и желаем, чтобы ваша работа всегда шла легко и без багов!</p>]]></content:encoded>
    </item>
    <item>
      <title>Как внедрить систему безопасной разработки ПО</title>
      <link>https://tproger.ru/articles/kak-vnedrit-sistemu-bezopasnoj-razrabotki-po-opyt-korporativnogo-messendzhera-tada</link>
      <comments>https://tproger.ru/articles/kak-vnedrit-sistemu-bezopasnoj-razrabotki-po-opyt-korporativnogo-messendzhera-tada?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Artem Kazantsev]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-vnedrit-sistemu-bezopasnoj-razrabotki-po-opyt-korporativnogo-messendzhera-tada</guid>
      <description><![CDATA[<p>Как организовать систему безопасной разработки ПО в компании и с какими самыми частыми ошибками приходится сталкиваться.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-vnedrit-sistemu-bezopasnoj-razrabotki-po-opyt-korporativnogo-messendzhera-tada">Как внедрить систему безопасной разработки ПО</a>»</p>]]></description>
      <category><![CDATA[Безопасный код]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 22 Jan 2024 10:33:46 GMT</pubDate>
      <content:encoded><![CDATA[<p>Привет! Меня зовут Артем Казанцев, я эксперт по информационной безопасности в Tada (Proscom). Работаю в сфере ИБ более 9 лет. С 2016 по 2019 год занимался консалтингом в части обеспечения защиты информации государственных информационных систем и информационных систем персональных данных. С 2019-го начал приводить в соответствие разработку программного обеспечения, реализующего функции защиты информации, требованиям по сертификации с последующей сертификацией.</p><p><i>Эта статья пригодится разработчикам, которые, как и мы когда-то, задумываются об ИБ в продуктах и не знают, с чего начать.</i></p><p>Поскольку нашим продуктом будут пользоваться многие компании, в том числе те, которые должны соответствовать требованиям в части обеспечения ИБ, хранить и обрабатывать конфиденциальную информацию, нам было важно минимизировать вероятность реализации угроз информационной безопасности.</p><h2>Как мы проверяли безопасность разработки в компании</h2><p>Логичен вопрос, зачем вообще внедрять систему разработки безопасного ПО в компании? Регуляторы требуют — это понятно. Но есть ли другие, более насущные предпосылки? Разумеется:</p><ul><li>это снизит риск внезапного появления критических уязвимостей;</li><li>повысит стабильность продукта и унификацию в языках, пакетах, внешних зависимостях;</li><li>улучшит качество кода, компетенций команды инженеров в части безопасной разработки;</li><li>компания сможет продавать продукт, не переживая за его безопасность.</li></ul><p>Я пришел в Tada в конце 2022 года. На тот момент о безопасной разработке ПО (БРПО) в ней «слышали, но не погружались». Поэтому для начала мне нужно было понять:</p><ol><li>Какие меры уже реализованы и насколько хорошо?</li><li>Действительно ли продукт безопасно разработан, и какие уязвимости, недочеты есть в ПО и в инфраструктуре разработки?</li></ol><p>Поскольку у меня уже был опыт прохождения сертификационных испытаний по требованиям ФСТЭК России к уровням доверия (одно из требований – наличие у разработчика-изготовителя процедур БРПО и проведение анализа уязвимостей и недекларированных возможностей), я понимал, какие процедуры, меры и инструментальные виды анализа должны быть реализованы.</p><p>Кроме того, можно и нужно воспользоваться документами, которые помогают облегчить внедрение процедур разработки безопасного ПО:</p><ul><li>ГОСТ 56939-2016;</li><li>Методика выявления уязвимостей и недекларированных возможностей в ПО ФСТЭК России (чтобы сертифицировать продукт).</li></ul><p>И иными источниками: данными с конференций, презентациями компаний, в которых они делятся опытом (ТБ Форум, Kaspersky Certification Day и др.)</p><p><i>Дисклеймер: мы не претендуем на звание гуру MegaNanoExpertDevSecOpsGeneral и цель статьи не пытаться научить, а поделиться нашим опытом, который, возможно, окажется полезен тем, кто находится в начале ИБ-пути.</i></p><p>Вернемся к проверке компании. На тот момент команда уже проводила unit-тесты и функциональное тестирование ПО, что было уже хорошо и позволяло выявить явные ошибки в ПО, которые могут привести к угрозам безопасности:</p><ul><li>недостаточная аутентификация и авторизация;</li><li>уязвимости ввода данных;</li><li>утечка конфиденциальных данных;</li><li>недостаточная обработка ошибок и другие.</li></ul><p>Что касается оценки безопасности продукта, мы решили провести:</p><ol><li>Статический анализ исходного кода.</li><li>Ручное тестирование (что-то типа функционального), чтобы выявить реальные баги в функциях ИБ ПО.</li><li>Анализ уязвимостей заимствованных компонентов и компонент среды функционирования ПО.</li><li>Динамический анализ и тестирование на проникновение.</li></ol><p>Для этого мы выбрали следующие инструменты:</p><figure><img src="https://media.tproger.ru/user-uploads/96702/2024-01-19/0904d5f5-8fc5-4e6b-bbae-32032e1617a6.png" alt="" /></figure><p>Результаты анализа оказались довольно интересными и местами даже неожиданными. Мы выявили около 200 critical и major (статический анализ) и 90 critical и high (анализ заимствованных компонент, динамический анализ и пентест).</p><figure><img src="https://media.tproger.ru/user-uploads/96702/2024-01-19/a3871fc5-b497-4f4b-a308-ee0b013e7386.png" alt="" /></figure><p>Уязвимостей было много, и вот несколько наиболее интересных примеров:</p><h3>1. Неправильная конфигурация turn-сервера</h3><figure><img src="https://media.tproger.ru/user-uploads/96702/2024-01-19/23ef9519-8c16-48db-8e07-35a4ba688e34.png" alt="" /></figure><p>Для обеспечения обмена трафиком (видео/голос) мы используем turn-сервер. В ходе анализа мы выявили реквизиты доступа в открытом виде в файле features.json.</p><p>Что могло случиться? Злоумышленник мог построить socks-прокси (из-за неправильной конфигурации turn-сервера). В нашем случае сервер не проверяет, что адрес, по которому нужно подключиться, находится в локальной сети. Таким образом злоумышленник смог бы получить доступ ко внутренним ресурсам.</p><h3>2. Хранимая XSS</h3><p>Хранимая XSS (англ. Stored XSS) – это тип атаки на веб-приложение, при котором злоумышленник вводит вредоносный код (обычно JavaScript) на страницу веб-приложения, который сохраняется на сервере и затем отображается на странице для всех пользователей, которые обращаются к этой странице.</p><p>Здесь все просто: Cookie защищены флагом httponly от перехвата с помощью XSS. Однако злоумышленник может воспользоваться этой уязвимостью для переадресации пользователей на фейковый домен, чтобы получить учетные данные.</p><p>Достаточно вставить следующий payload XSS в некоторые формы ввода ПО, сгенерировать ссылку – приглашение и отправить жертве: \"--&gt;&lt;img src=x onerror=alert("XSS")&gt;.</p><figure><img src="https://media.tproger.ru/user-uploads/96702/2024-01-19/6169c588-050f-4bdb-a216-b0dd079c416a.png" alt="" /></figure><p>При переходе по ссылке-приглашению устанавливается cookieinvitation_token. Затем ПО проверяет ее на наличие этого cookie. Если оно существует, то переадресовывает пользователя в асинхронном режиме независимо от того, где в веб-приложении находится пользователь. Это позволяет внедрять вредоносный скрипт в любом чате и месте веб-приложения с целью перехвата нажатий клавиш (кейлоггер).</p><figure><img src="https://media.tproger.ru/user-uploads/96702/2024-01-19/d2d39ae7-39f6-4b5c-9b0b-9fe61bc09e23.png" alt="" /></figure><p>Эти и другие уязвимости дали нам понять, что:</p><ul><li>необходимо внедрять БРПО на раннем этапе разработки;</li><li>важно регулярно анализировать и обновлять уже имеющееся ПО и контролировать заимствованные компоненты.</li></ul><p>Чтобы устранить эти уязвимости и обеспечить безопасность нашего ПО, необходимо было принять соответствующие меры: исправить код, обновить зависимые компоненты, изменить архитектуру ПО.</p><h2>Что мы сделали по итогам проверки</h2><p>Поиск и устранение недостатков и уязвимостей в ПО – это малая и далеко не самая приоритетная часть на раннем этапе внедрения разработки безопасного ПО.</p><p>Главная задача – заинтересовать команду и бизнес в необходимости такой разработки, чтобы все участники двигались в одном направлении и стремились сделать продукт безопаснее. И не появились те, кто пытается плыть против течения.</p><h2>Как это прошло у нас</h2><p>Отмечу, что руководство компании изначально было заинтересовано в сертификации продукта. А это возможно только в случае корректно внедренных мер БРПО. Нам оставалось только показать и доказать эту причинно-следственную связь.</p><p>Кроме того, команда действительно любит продукт, который разрабатывает, сама им пользуется и хочет сделать его лучше. В этом случае перед нами стояла задача показать, что безопасная разработка ПО будет только плюсом и поможет в создании хорошего сервиса.</p><p>Мы составили и презентовали руководству дорожную карту с шагами и этапами, которые необходимо выполнить, чтобы получить сертификат соответствия. Каждый шаг и этап – это перечень мероприятий по приведению инфраструктуры и процесса разработки ПО в безопасный.</p><p>Затем мы провели цикл лекций для всей команды:</p><ul><li>обсудили пользу безопасной разработки для нашего продукта;</li><li>рассказали об основных мерах, которые предстоит реализовать;</li><li>поговорили о проблемах, которые есть в нашем продукте и которые нужно решить.</li></ul><p>Вернемся к уязвимостям. Их было очень много. Мы с командой разработки провели экспертизу и «разметку» результатов анализа, определили степень критичности и возможности реализации угроз, связанных с этими недостатками ПО.</p><p>Так у нас появился приоритизированный список уязвимостей и задачи, связанные с устранением этих уязвимостей. Для устранения некоторых из них потребовалось переписать почти половину кодовой базы (это еще один из поводов внедрять безопасную разработку на раннем этапе) — очень много времени ушло на правки, переконфигурирование компонентов среды функционирования.</p><h2>Что будем делать дальше</h2><p>После проверок и подведения результатов мы активно занимаемся повышением квалификации команды инженеров в части безопасной разработки и проводим семинары по ИБ.</p><h3>Обучаемся и внедряем процедуры проведения фаззинг-тестирования</h3><p>Фаззинг-тестирование — вид тестирования, который позволяет выявить уязвимости в ПО путем подачи на вход большого количества входных данных (отслеживание утечки памяти, аварийных завершений и так далее).</p><h3>Изучаем порядок и способ определения поверхности атаки, включая использование Natch</h3><p>Natch — полезный инструмент для определения поверхности атаки от наших коллег ИСП РАН.</p><p>Поверхности атаки — это интерфейсы и их модули в ПО, при использовании которых могут быть реализованы угрозы безопасности.</p><h3>Разрабатываем метрики и сценарии реагирования на инциденты ИБ</h3><p>Гарантировать 100% защищенности нельзя, всегда нужно быть готовым оперативно и правильно реагировать на инциденты ИБ.</p><h3>Планируем полностью автоматизировать инструментальные виды анализа</h3><p>Состав используемых инструментов и видов анализа достаточно объемный и нет необходимости руками делать рутинную работу, которую можно автоматизировать и внедрить в процессы жизненного цикла ПО.</p><h3>Планируем сократить кодовую базу и базу зависимостей</h3><p>Унификация в языках программирования, исключение «мертвого кода», контроль используемых зависимостей нам в этом помогут.</p><h3>Стремимся реализовать меры, которые позволят сертифицировать наше ПО и пройти процедуру оценки соответствия безопасной разработки ПО.</h3><p>Скажем сразу, эта статья вводная. И основная ее идея — показать, насколько важно внедрять процедуры разработки безопасного ПО, особенно на раннем этапе разработки, когда это менее трудозатратно.</p><p>В следующих материалах мы расскажем о вопросах выбора и внедрения инструментальных средств и организационных мер, о проблемах, с которыми сталкивались и и вариантах их решения.</p>]]></content:encoded>
    </item>
    <item>
      <title>Переезд со Scrum на Kanban. Бенефиты и подводные камни</title>
      <link>https://tproger.ru/articles/pereezd-so-scrum-na-kanban-benefity-i-podvodnye-kamni</link>
      <comments>https://tproger.ru/articles/pereezd-so-scrum-na-kanban-benefity-i-podvodnye-kamni?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Yuri Nedre]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pereezd-so-scrum-na-kanban-benefity-i-podvodnye-kamni</guid>
      <description><![CDATA[<p>Обсудили, какие недостатки есть у Kanban о сравнению со Scrum, зачем вообще нужен Scrum и какие шаги помогут перейти на него.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pereezd-so-scrum-na-kanban-benefity-i-podvodnye-kamni">Переезд со Scrum на Kanban. Бенефиты и подводные камни</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 22 Jan 2024 08:40:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Переход от Scrum к Kanban – это процесс изменения методологии управления проектом. Оба метода ориентированы на управление разработкой программного обеспечения, но у них есть различия в подходе к планированию, управлению задачами и контролю над процессом работы.</p><p>Давайте представим, что вы задумались о смене методолигии и перевезти команду с фреймворка Scrum на метод Kanban.</p><p>Для начала обсудим, какие есть преимущества у Scrum перед Kanban.</p><p>Обе методологии, Scrum и Kanban, имеют свои преимущества и недостатки, и выбор между ними зависит от конкретных потребностей команды и характера проекта. Вот некоторые минусы Kanban по сравнению с Scrum.</p><h2>Минусы Kanban по сравнению с Scrum</h2><h3>Отсутствие структуры итераций</h3><p>Одним из основных отличий между Scrum и Kanban является отсутствие фиксированных итераций в Kanban. Это может привести к менее четкому планированию и более сложному прогнозированию времени завершения работ.</p><h3>Неясность в отношении времени выполнения задач</h3><p>Поскольку Kanban не имеет фиксированных сроков (как у Scrum-спринтов), предсказание времени выполнения конкретных задач может быть сложным. Это может создавать проблемы при необходимости предоставить оценки сроков.</p><h3>Большая свобода может привести к недисциплинированности</h3><p>Отсутствие строгой структуры итераций может привести к тому, что команда столкнется с проблемами в управлении временем и приоритетами. Команде может не хватать дисциплины и структуры, что Scrum обеспечивает.</p><h3>Менее явное планирование</h3><p>Scrum предоставляет четкий итеративный процесс с фиксированными спринтами и запланированными моментами обзора. В Kanban планирование менее формализовано, что может вызывать сложности в управлении и предсказании хода проекта.</p><h3>Ограниченный фокус на улучшении</h3><p>В Scrum встроен цикл непрерывного улучшения (ретроспективы), который происходит после каждого спринта. В Kanban подобные события не так явно встроены, что может затруднить постоянное улучшение процесса.</p><h3>Неясность в отношении приоритетов</h3><p>Scrum обеспечивает четкую иерархию задач в рамках спринта, где продуктовый владелец определяет приоритеты. В Kanban менее ясно, какие задачи более приоритетны, что может привести к путанице в распределении ресурсов.</p><h3>Трудности в управлении большими проектами</h3><p>Когда проект становится большим и сложным, некоторым командам может быть сложнее управлять процессами без четких итераций и структуры, предоставляемых Scrum.</p><p>Теперь давайте посмотрим, когда вообще есть смысл перехода на Kanban после работы по Scrum.</p><h2>Зачем переходить на Kanban после Scrum</h2><h3>Гибкость в управлении задачами</h3><p>Если ваша команда сталкивается с изменениями требований и приоритетов задач, а Scrum-итерации оказываются слишком жесткими для адаптации, Kanban, ориентированный на поток работ, может предоставить большую гибкость.</p><h3>Постоянная потребность в поставке продукта</h3><p>Если у вас есть продукт с постоянным потоком новых требований или постоянной потребностью в поставке, Kanban может лучше подходить для непрерывной разработки и поставки.</p><h3>Низкая предсказуемость итераций</h3><p>Если Scrum-спринты часто не достигают своих целей из-за внезапных изменений или непредсказуемости задач, Kanban, фокусирующийся на управлении потоком, может помочь улучшить предсказуемость процесса.</p><h3>Необходимость визуализации рабочего процесса</h3><p>Если ваша команда чувствует необходимость лучше визуализировать свой рабочий процесс, следить за потоком задач и обнаруживать возможные узкие места, то Kanban, с его упором на визуализацию и управление WIP, может быть полезным.</p><h3>Работа с техническим долгом</h3><p>Когда есть постоянная необходимость управлять техническим долгом или выполнять обслуживание продукта параллельно с разработкой новых функций, Kanban может быть более подходящим, поскольку не требует строгих итераций.</p><h3>Команды поддержки и обслуживания</h3><p>Если ваша команда занимается поддержкой продукта, а не разработкой новых функций в рамках фиксированных итераций, Kanban может лучше соответствовать ее потребностям.</p><h3>Предпочтение непрерывной оптимизации</h3><p>Если команда предпочитает непрерывную оптимизацию процесса разработки, а не периодическое изменение в конце каждого спринта, то Kanban может поддерживать более постоянное улучшение.</p><p>Теперь пора обсудить, как сделать этот переезд. Оба подхода ориентированы на управление разработкой программного обеспечения, но у них есть различия в подходе к планированию, управлению задачами и контролю над процессом работы.</p><h2>Шаги, которые могут помочь вам перейти от Scrum к Kanban</h2><h3>Понимание основных принципов Kanban</h3><p>Канбан ориентирован на непрерывное потоковое производство, в отличие от итеративной модели Scrum.</p><p>Основной акцент в Kanban делается на визуализации рабочего процесса и ограничении рабочего объема (WIP – Work in Progress).</p><p>В отличие от Scrum, в Kanban нет фиксированных итераций (спринтов), и задачи могут быть добавлены или удалены в любое время.</p><h3>Визуализация рабочего процесса</h3><p>Создайте доску Kanban, на которой будут отображены все задачи вашей команды.</p><p>Разделите доску на столбцы, представляющие различные этапы рабочего процесса (например, “В ожидании”, “В процессе”, “Готово”).</p><h3>Установка лимитов WIP</h3><p>Определите максимальное количество задач, которые ваша команда может обрабатывать одновременно на каждом этапе процесса.</p><p>Установите лимиты WIP для каждого столбца на доске.</p><h3>Анализ и оптимизация</h3><p>Регулярно проводите обзоры и анализируйте процесс работы.</p><p>Используйте данные Kanban для выявления узких мест и оптимизации потока работы.</p><h3>Постепенное внедрение изменений</h3><p>Переходите постепенно, пошагово, чтобы смягчить процесс адаптации для команды.</p><p>Поддерживайте команду и обучайте их новым аспектам Kanban.</p><h3>Контроль и улучшение</h3><p>Внедряйте изменения на основе обратной связи и опыта команды.</p><p>Контролируйте процесс, чтобы гарантировать его эффективность.</p><p>Эти шаги помогут вам начать переход от Scrum к Kanban. Помните, что эффективность методологии зависит от контекста команды и проекта, поэтому рассматривайте внедрение Kanban как итеративный процесс, который можно настраивать и оптимизировать. Перед принятием решения о переходе, важно провести обдуманный анализ потребностей вашей команды и особенностей проекта. Иногда также полезно провести пилотный проект, чтобы оценить, как новая методология работает для вашей конкретной ситуации. Каждая из этих методологий имеет свои сильные и слабые стороны, и выбор между ними должен зависеть от конкретных условий проекта, предпочтений команды и уровня готовности к изменениям.</p>]]></content:encoded>
    </item>
    <item>
      <title>Используем ChatGPT для анализа работы Scrum-команды</title>
      <link>https://tproger.ru/articles/ispolzuem-chatgpt-dlya-analiza-raboty-scrum-komandy</link>
      <comments>https://tproger.ru/articles/ispolzuem-chatgpt-dlya-analiza-raboty-scrum-komandy?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Yuri Nedre]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ispolzuem-chatgpt-dlya-analiza-raboty-scrum-komandy</guid>
      <description><![CDATA[<p>Как рассчитать среднеквадратичное отклонение для анализа работы Scrum-команды при помощи ChatGPT. Привели промпты и вывод нейросети.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ispolzuem-chatgpt-dlya-analiza-raboty-scrum-komandy">Используем ChatGPT для анализа работы Scrum-команды</a>»</p>]]></description>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 03 Nov 2023 13:23:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>В <a href="https://tproger.ru/articles/kak-schitat-effektivnost-komandy-razrabotki-v-it">прошлой статье</a> мы с вами попробовали применить высшую математику, а конкретно среднеквадратичное отклонение для результата анализа нескольких спринтов. Используя данный метод, мы взяли результаты velocity последних спринтов и спрогнозировали результат следующего спринта, а также вычислили погрешность, выходя за которую мы получаем сигнал, что в процессе что-то изменилось или появилась проблема.</p><p>На первый взгляд данный подход довольно сложный, особенно если вы не сильны в высшей математике. Но хорошо, что мы живем в технологичное время, и сегодня из каждого утюга мы слышим нейросети, искусственный интеллект и, конечно, ChatGPT.</p><p>Давайте на примере прошлой статьи попросим этот AI сделать нам быстрый расчет.</p><p>Дальше я привожу пример общения с ChatGPT.</p><p>Мой запрос:</p><p>Ответ ChatGPT:</p><p>Как вы видите, мы не получили ответ. Но ChatGPT сам подсказал, как нужно вычислить результат.</p><p>Меняем запрос.</p><p>Мой запрос:</p><p>Ответ ChatGPT:</p><p>Как вы видите, мы снова не получили точный ответ, а инструкцию, как выполнить расчеты. Нас это не устраивает. Давайте попробуем разбить запросы по частям.</p><p>Дальше приложу скриншоты запросов и ответов:</p><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-11-02/d87f0389-6df4-4a88-8e3e-2489617f3bf8.png" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-11-02/446ebfa9-c813-4fe1-a39d-325bb3f0b835.png" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-11-02/b66474e5-df37-4fec-93a3-99d3f830e2ca.png" alt="" /></figure><p>Наконец-то мы получили точную сумму стандартного отклонения, поменяв формулировки наших запросы.</p><p>Как вы видите, ChatGPT это мощный инструмент, который может быстро выполнять сложные расчеты и представлять в нужном нам виде. Нужно лишь корректировать и уточнять свои запросы.</p>]]></content:encoded>
    </item>
    <item>
      <title>Применение нормального распределения для прогнозирования результативности в Scrum</title>
      <link>https://tproger.ru/articles/primenenie-normalnogo-raspredeleniya-dlya-prognozirovaniya-rezultativnosti-v-scrum</link>
      <comments>https://tproger.ru/articles/primenenie-normalnogo-raspredeleniya-dlya-prognozirovaniya-rezultativnosti-v-scrum?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Yuri Nedre]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/primenenie-normalnogo-raspredeleniya-dlya-prognozirovaniya-rezultativnosti-v-scrum</guid>
      <description><![CDATA[<p>Как нормальное распределение или распределение Гаусса помогает в моделировании и анализе производительности разработки (velocity) в Scrum.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/primenenie-normalnogo-raspredeleniya-dlya-prognozirovaniya-rezultativnosti-v-scrum">Применение нормального распределения для прогнозирования результативности в Scrum</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 30 Oct 2023 12:21:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>В современном мире, где программное обеспечение становится основополагающим элементом практически каждого бизнес-процесса, способность точно прогнозировать временные рамки и результаты разработки ПО становится критически важной. Однако динамичная природа проектов по разработке программного обеспечения часто приводит к значительным колебаниям в производительности и прогрессе, что затрудняет точное прогнозирование результатов.</p><p>Применяя концепции и методологии, зародившиеся в теории вероятностей и статистическом анализе, давайте попробуем понять, как нормальное распределение (также известное как распределение Гаусса) может быть использовано для моделирования и анализа производительности разработки (velocity) в методологиях Agile и Scrum, а конкретно – предположить результат, который команда сможет получить в будущем. Но так же понять, является ли полученный результат нормой или есть отклонения, на которые команда должна реагировать.</p><p>Эта статья будет полезна как новичкам, так и опытным специалистам в области управления проектами по разработке ПО, предоставляя им новые инструменты и перспективы, необходимые для достижения успеха в постоянно меняющемся и высоко конкурентном технологическом мире.</p><p>Для наших изысканий возьмем реальные данные из одного моего реального проекта и его реальных результатов.</p><p>У нас имеется результаты последних спринтов в Story Points:</p><p>Давайте попробуем рассчитать среднее отклонение от нормы. То есть поймём, при каких результатах спринта нам надо задуматься и постараться понять есть ли проблема и в чем она состоит, а при каких результатах у нас все хорошо в работе команды.</p><p>Для прогнозирования результатов следующих спринтов на основе нормального распределения, нам необходимо провести статистический анализ имеющихся данных и использовать эти параметры для создания прогноза. Давайте разберем этот процесс пошагово.</p><p>Для начала представим наши результаты в таблице и на графике:</p><ol><li>Спринт 1 – 75.</li><li>Спринт 2 – 40.</li><li>Спринт 3 – 68.</li><li>Спринт 4 – 60.</li><li>Спринт 5 – 94.</li><li>Спринт 6 – 71.</li><li>Спринт 7 – 55.</li><li>Спринт 8 – 101.</li><li>Спринт 9 – 74.</li><li>Спринт 10 – 13.</li><li>Спринт 11 – 183.</li></ol><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-10-25/07505268-da32-424d-8e01-ad3fca252b9e.png" alt="" /></figure><p>При анализе данных, особенно если они содержат экстремальные значения (как, например, 13 или 183 в вашем наборе данных), важно рассмотреть, не являются ли эти точки выбросами, вызванными необычными обстоятельствами, и не должны ли они быть исключены из анализа.</p><p>Для расчета стандартного отклонения без учета экстремальных значений, нам нужно сначала идентифицировать, какие значения можно считать экстремальными. В контексте вашего набора данных, значения, такие как “13” и “183”, кажутся аномально низким и высоким соответственно. Давайте исключим их из наших расчетов.</p><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-10-25/9ef397c5-3295-4c87-af0a-d6376443d936.png" alt="" /></figure><p>Далее нам нужно пересчитать среднее значение без учета этих экстремальных значений. У нас есть следующие значения: 75, 40, 68, 60, 94, 71, 55, 101, 74 (исключены “13” и “183”).</p><p>Подсчитаем среднее:</p><p>Теперь вычислим квадраты отклонений от среднего и найдем их сумму:</p><p>Проведем подсчет:</p><p>Таким образом, сумма квадратов отклонений для данного набора данных (исключая экстремальные значения) составляет примерно 2801.17.</p><p>Теперь найдем исправленную дисперсию – среднюю сумма квадратов отклонений каждого значения от среднего значения. Мы уже вычислили сумму квадратов отклонений. Теперь, чтобы найти дисперсию, нам нужно разделить эту сумму на количество наблюдений.</p><p>Из предыдущих расчетов у нас есть:</p><ul><li>Сумма квадратов отклонений: 2801.17.</li><li>Количество наблюдений (N): 9 (поскольку мы исключили два экстремальных значения).</li></ul><p>Таким образом, дисперсия для данного набора данных составляет примерно 311.24.</p><p>Стандартное отклонение является мерой разброса значений относительно среднего значения (математического ожидания) и вычисляется как квадратный корень из дисперсии. Таким образом, стандартное отклонение для вашего набора данных составляет примерно 17.64. Это значит, что в среднем значения отклоняются от среднего (70.89) на 17.64 единицы.</p><p>Теперь давайте сделаем наложим тренд (красная линия) на наш график с учетом всех спринтов и попытаемся предсказать результат следующего спринта</p><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-10-25/d2e42f09-8a7e-474e-82b9-3372dd8b1477.jpeg" alt="" /></figure><p>Выходит мы можем ожидать результатом следующего спринта примерно 102 SP. Давайте учетом того, что стандартное отклонение для вашего набора данных составляет примерно 17.64 наш нормальный результат, округленный до целых SP, который будет в пределах нормы составит 84-120 SP.</p><figure><img src="https://media.tproger.ru/user-uploads/90130/2023-10-25/7e3c2c27-2ad9-4d64-a85c-e48f7539c578.png" alt="" /></figure><p>Применив математический анализ, мы смогли предсказать результат нашего следующего спринта с учетом данных за прошлый период и добавить к ним возможную погрешность, которая является нормой.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как использовать метрики для повышения эффективности команды разработки</title>
      <link>https://tproger.ru/articles/kak-ispolzovat-metriki-dlya-povyweniya-effektivnosti-komandy-razrabotki</link>
      <comments>https://tproger.ru/articles/kak-ispolzovat-metriki-dlya-povyweniya-effektivnosti-komandy-razrabotki?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Yuri Nedre]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-ispolzovat-metriki-dlya-povyweniya-effektivnosti-komandy-razrabotki</guid>
      <description><![CDATA[<p>Рассмотрим, как метрики Lead Time, Cycle Time, Velocity, Flow Efficiency и Test Coverage могут повысить эффективность команды разработки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-ispolzovat-metriki-dlya-povyweniya-effektivnosti-komandy-razrabotki">Как использовать метрики для повышения эффективности команды разработки</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 03 Oct 2023 13:22:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Метрики — это инструменты, которые помогают нам измерить и улучшить производительность. В области разработки программного обеспечения существует несколько ключевых метрик, которые могут помочь командам оптимизировать процесс и достигать лучших результатов.</p><p>Рассмотрим, как метрики Lead Time, Cycle Time, Velocity, Flow Efficiency и Test Coverage могут быть использованы для повышения эффективности вашей команды разработки.</p><h2>Lead Time и Cycle Time для повышения эффективности команды разработки</h2><p>Lead Time, представляет собой общее время, которое проходит от момента возникновения идеи или получения требования до момента, когда продукт или функционал готов к использованию конечными пользователями.</p><p>Cycle Time, или время на доставку, — это метрика, показывающая, сколько времени требуется для прохождения задачи от начала работы над ней и до её завершения.</p><p>Внимательное отслеживание и оптимизация Lead Time и Cycle Time может привести к заметному улучшению производительности команды разработки.</p><h3>1. Выявление проблемных мест</h3><p>Измеряя Lead Time и Cycle Time, команда может выявить узкие места и задержки в процессе разработки. Например, если задачи часто “зависают” на этапе тестирования или проверки кода, это может указывать на нехватку ресурсов или проблемы в самом процессе.</p><h3>2. Оптимизация рабочего процесса</h3><p>Понимание того, каков обычный Lead Time и Cycle Timeдля задач, позволяет командам внедрять изменения в рабочий процесс. Это может включать в себя:</p><ul><li>Разбиение больших задач на меньшие, чтобы ускорить их выполнение.</li><li>Введение автоматизации на этапах, где это возможно (например, автоматическое тестирование или интеграция).</li><li>Улучшение коммуникации между отделами или командами, чтобы уменьшить время ожидания.</li></ul><h3>3. Приоритизация задач</h3><p>Если команда знает свой средний Lead Time и Cycle Time, она может лучше управлять ожиданиями стейкхолдеров и более точно прогнозировать сроки выполнения задач.</p><p>Это также может помочь в приоритизации задач: срочные задачи могут быть поставлены в начало очереди, чтобы минимизировать общий Lead Time.</p><h3>4. Улучшение обратной связи</h3><p>Сокращение Lead Time и Cycle Time часто означает, что пользователи или стейкхолдеры быстрее получают результаты работы команды. Это ускоряет получение обратной связи и позволяет команде быстрее адаптироваться к изменяющимся требованиям или условиям рынка.</p><h3>5. Мотивация команды</h3><p>Непрерывное сокращение Lead Time и Cycle Time может служить отличной мотивацией для команды. Ведь каждое сокращение времени выполнения — это показатель того, что процессы становятся более эффективными и команда работает продуктивнее.</p><p>Метрика Lead Time и Cycle Time — это не просто показатель времени, которое требуется для выполнения задачи. Это инструмент для анализа и оптимизации рабочего процесса, который, при правильном использовании, может стать ключом к повышению эффективности команды разработки.</p><h2>Velocity для повышения эффективности команды разработки</h2><p>Velocity, или скорость, представляет собой метрику, которая показывает, сколько единиц работы (чаще всего “сторипоинтов” или “задач”) команда завершила за определённый временной интервал, например, за спринт в Scrum. Используя метрику Velocity, команды могут не только измерять свою производительность, но и находить способы её оптимизации.</p><h3>1. Предсказуемость и планирование</h3><p>Используя исторические данные по Velocity, команды могут лучше прогнозировать, сколько задач они смогут завершить в следующем спринте. Это позволяет более реалистично планировать объём работы и управлять ожиданиями стейкхолдеров.</p><h3>2. Выявление проблем</h3><p>Если Velocity команды резко падает, это может указывать на проблемы в рабочем процессе, технические трудности или другие препятствия. Регулярное отслеживание этой метрики позволяет быстро выявлять и решать такие проблемы.</p><h3>3. Рефлексия и улучшение</h3><p>Velocity может служить поводом для дискуссии на ретроспективе спринта. Команда может обсудить, что помогло увеличить Velocity и что стало причиной его снижения. Это позволяет выявлять лучшие практики и области для улучшения.</p><h3>4. Оптимизация процессов</h3><p>Если команда видит, что её Velocity стагнирует или снижается, это может стать стимулом для пересмотра и оптимизации рабочих процессов, введения новых инструментов или технологий.</p><h3>5. Мотивация</h3><p>Улучшение Velocity может служить мотивационным фактором для команды. Однако важно не делать акцент исключительно на увеличении этой метрики, так как это может привести к ухудшению качества работы.</p><h3>6. Управление ресурсами</h3><p>Понимание своего Velocity позволяет команде определить, требуются ли дополнительные ресурсы (люди, оборудование, обучение) для достижения целей проекта.</p><p>Хотя метрика Velocity является мощным инструментом для мониторинга производительности команды, важно помнить о её ограничениях. Она должна использоваться в сочетании с другими метриками и практиками, чтобы получить полное представление о состоянии проекта и производительности команды.</p><h2>Flow Efficiency для повышения эффективности команды разработки</h2><p>Flow Efficiency (эффективность потока) – это метрика, которая показывает, какая часть времени задачи действительно затрачивается на активную работу, в сравнении с общим временем, проведенным в системе. Измеряется как процент активной работы от общего времени Lead Time.</p><p>Допустим, задача провела в системе 100 часов, из которых на активную работу ушло 25 часов. Эффективность потока составит 25%.</p><p>Рассмотрим, как с помощью этой метрики можно повысить эффективность команды разработки:</p><h3>1. Выявление "мёртвого времени"</h3><p>С помощью Flow Efficiency команды могут точно определить, сколько времени задачи “провисают” в ожидании. Это может быть время ожидания ревью, автоматизированного тестирования, утверждения от клиента и т.д. Понимание этого позволяет сосредоточить усилия на устранении простоя.</p><h3>2. Оптимизация процессов</h3><p>Если эффективность потока низкая, это может указывать на необходимость пересмотра рабочих процессов. Возможно, команде следует внедрить методику непрерывной интеграции, ускорить процесс ревью или улучшить коммуникацию между отделами.</p><h3>3. Улучшение планирования</h3><p>Понимание времени активной работы и времени ожидания помогает командам более точно планировать свою работу, распределяя ресурсы и задачи так, чтобы минимизировать простои.</p><h3>4. Фокус на узкие места</h3><p>С помощью Flow Efficiency можно выявить узкие места в процессе разработки. Например, если задачи долго ожидают тестирования, возможно, стоит увеличить число тестировщиков или автоматизировать часть тестов.</p><h3>5. Улучшение коммуникации</h3><p>Очень часто простои происходят из-за задержек в общении или непонимания между командами. Работа над улучшением коммуникации может существенно повысить эффективность потока.</p><p>Метрика Flow Efficiency – это мощный инструмент для анализа производительности команды. Она позволяет не только выявить “болевые точки” в процессе разработки, но и предоставляет конкретные данные для оптимизации рабочих процессов. Однако, как и любая метрика, эффективность потока должна рассматриваться в контексте и использоваться совместно с другими метриками для получения полного представления о производительности команды.</p><h2>Test Coverage для повышения эффективности команды разработки</h2><p>Test Coverage (покрытие тестами) — это метрика, которая показывает, какая часть кода программы была проверена тестами. Обычно выражается в процентах. Хотя высокий уровень покрытия тестами не гарантирует отсутствия ошибок, он может служить индикатором того, насколько хорошо код проверен.</p><h3>1. Выявление непроверенных участков кода</h3><p>Одно из основных преимуществ метрики Test Coverage — возможность быстро определить, какие части кода ещё не покрыты тестами. Это может подсказать команде, где потенциально могут скрываться ошибки, и направить усилия на дополнительное тестирование.</p><h3>2. Улучшение качества кода</h3><p>При написании тестов разработчики часто находят и исправляют ошибки ещё до того, как код попадёт в продакшен. Таким образом, улучшая покрытие тестами, команда автоматически повышает качество своего кода.</p><h3>3. Уверенность в изменениях</h3><p>С хорошим покрытием тестами команда может быть уверена, что внесённые изменения или рефакторинг кода не вызовут регрессию в уже существующем функционале.</p><h3>4. Быстрое выявление ошибок</h3><p>При изменении кода или добавлении нового функционала тесты могут быть запущены автоматически. Если что-то сломается, команда узнает об этом сразу, что позволяет быстро найти и исправить проблему.</p><h3>5. Оптимизация усилий по тестированию</h3><p>Понимание того, какие части кода хорошо покрыты тестами, позволяет команде эффективнее распределять усилия. Вместо написания избыточных тестов на уже покрытые участки, можно сосредоточиться на “слабых местах”.</p><h3>6. Документация и понимание кода</h3><p>Тесты также могут служить документацией к коду. Новые члены команды могут ознакомиться с тестами, чтобы лучше понять, как работает та или иная функция или компонент.</p><p>Хотя метрика Test Coverage является полезным инструментом для повышения эффективности команды разработки, важно не увлекаться ею слепо. Стремление к 100% покрытию может быть неоправданно затратным и не всегда целесообразным. Важнее сосредоточиться на покрытии ключевых, критичных и сложных участков кода, а также убедиться, что тесты действительно качественные и проверяют различные сценарии работы программы.</p><h2>Заключение</h2><p>Эффективность команды разработки — сложный и многогранный аспект, который зависит от множества факторов. Метрики, такие как Lead Time, Velocity, Flow Efficiency, Test Coverage и другие, предоставляют инструменты для измерения, мониторинга и оптимизации процессов разработки. Каждая из этих метрик дает уникальный взгляд на различные аспекты работы команды:</p><ul><li>Lead Time позволяет понять, как быстро команда откликается на требования и доставляет результаты.</li><li>Velocity отражает производительность команды и помогает в планировании будущих итераций.</li><li>Flow Efficiency акцентирует внимание на “болевых точках” в рабочем процессе, выявляя простои и зоны ожидания.</li><li>Test Coverage показывает, насколько хорошо код проверен тестами, что напрямую влияет на качество продукта.</li></ul><p>Однако следует помнить, что эти метрики — лишь инструменты, и их эффективность зависит от того, как их использовать. Основной акцент должен быть сделан на качественной интерпретации данных и принятии обоснованных решений на основе них.</p><p>Нельзя ориентироваться исключительно на метрики, игнорируя другие аспекты разработки — такие как качество кода, удовлетворенность команды, обратная связь от пользователей и многие другие. Только комплексный подход, объединяющий качественный и количественный анализ, позволит по-настоящему повысить эффективность команды разработки и достичь высоких результатов в работе.</p>]]></content:encoded>
    </item>
    <item>
      <title>Сделаем bugreport чуточку полезней</title>
      <link>https://tproger.ru/articles/kak-podruzhit-razrabotku-s-menedzharami</link>
      <comments>https://tproger.ru/articles/kak-podruzhit-razrabotku-s-menedzharami?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[ihor]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-podruzhit-razrabotku-s-menedzharami</guid>
      <description><![CDATA[<p>СТО команды Tproger рассказал, как оформлять репорт багов так, чтобы сэкономить время разработчиков и ускорить исправление ошибок.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-podruzhit-razrabotku-s-menedzharami">Сделаем bugreport чуточку полезней</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Баги и ошибки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 03 Oct 2023 12:06:10 GMT</pubDate>
      <content:encoded><![CDATA[<p>Привет, меня зовут Игорь, я СТО команды Tproger.ru. Расскажу, как мы оформляем отчёты об ошибках.</p><h2>Зачем нужны отчёты</h2><p>Зачем менеджеру составлять какой-то отчёт об ошибке и тратить на него своё время, а не просто написать о проблеме?</p><p>Дело в том, что исправление ошибки напрямую зависит от того, кто с ней пришёл, и насколько эффективно он про неё сообщит. Если отчёт описан максимально корректно, то и шансы на исправление ошибки становятся больше, а времени, соответственно, меньше.</p><p>Посмотрим на примере: допустим, наш продукт успешно работает, и ничего не предвещало беды, как вдруг вылез баг.</p><figure><img src="https://media.tproger.ru/user-uploads/10203/2023-10-02/cf8f730c-94f5-47a7-9b0a-c5a4a8be42c6.jpeg" alt="" /><figcaption>Разработчик, у которого работает сайт без багов</figcaption></figure><p>Он может быть незначительный, а может быть и критическим. В любом случае, его, скорее всего, придется исправить во избежание проблем в будущем.</p><p>В идеальном мире существуют системы багрепорта с полноценными формами с обязательными полями, которые падают готовыми задачами в таск-менеджер.</p><p>Но, по разным причинам, не у всех команд есть полноценный таск-менеджер для этих целей. Зачастую это отдельный канал или чат, куда всё сваливают разработке.</p><p>Пример того, как зачастую происходит коммуникация между разработчиками и менеджерами при неотлаженных процессах:</p><blockquote>Эй, разработчик, у нас не работает кнопка для формирования отчета!</blockquote><p>В таком случае команда разработки выделяет ресурсы на анализ ситуации и действует по алгоритму:</p><ol><li>Проверяет работу кнопки, пытаясь опытным путём повторить ошибку.</li><li>Находит ошибку, описывает спецификацию, оценивает сроки.</li><li>Ошибка берется в работу.</li></ol><p>Когда ошибка пойдет в работу, зависит от её сложности, приоритета и того, как она влияет на работу продукта.</p><p>Но казалось бы, это такой простой путь, и что вообще может пойти не так, и почему бы просто не исправить ошибку. Проблема в пункте №1: из-за отсутствия достаточного количества информации поиск проблемы может занять неопределённое время, что естественно повлияет на весь срок выполнения.</p><p><b>Итого: </b>разработчики тратят полезные ресурсы только на поиск ошибки, затягивая время правки, а менеджеры, в свою очередь, недовольны медленной работой разработки.</p><p>Чтобы избежать никому не нужной затяжки исправлений или хотя бы сократить это время, необходимо выстроить между разработчиками и менеджерами систему отчётности по ошибкам.</p><p>Для себя мы вывели несколько правил-рекомендаций написания хорошего отчёта. Они подходят как при простом багрепорте через каналы, так и для форм таск-менеджеров.</p><h2>Рекомендации написания отчёта об ошибке</h2><ol><li><b>Воспроизведение:</b> прежде чем передать ошибку в разработку, убедиться, что она повторяется, желательно несколько раз. Воспроизвести процесс и описать действия шаг за шагом.</li><li><b>Проверка на существование:</b> перед созданием отчёта поищите в бэклоге. Возможно, кто-то уже нашел ошибку, и разработчики уже знают о ней.</li><li><b>Краткое описание:</b> минимум слов, только по делу. Одна проблема, один отчёт. По краткому описанию удобно вести навигацию среди большого бэклога.</li><li><b>Полное описание:</b> описать ошибку и путь её достижения. Чем подробнее будет описан путь, тем легче будет повторить ошибку, найти и исправить.</li><li><b>Окружение:</b> ОС, браузер, устройство, иные технические моменты, которые могли повлиять на баг (VPN, режим Инкогнито, Adblock и прочее).</li><li><b>Вместо тысячи слов:</b> приложить к отчёту скриншоты или запись с экрана. Зачастую такая информация содержит больше полезной информации, нежели текстовое описание.</li><li><b>Ожидание и результат:</b> описать, как все должно работать, какое поведение и результат были получены, какой ожидаемый результат и путь к нему.</li><li><b>Место происшествия: </b>указать источник ошибки. Если это веб-приложение, указать полный url. Если иное, указать окно\вкладку и т.д.</li><li><b>Журналы ошибок:</b> любые локальные логи помогут быстрее разобраться в ошибке. Сообщения в консоли браузера, ошибки в системе, любые alert’ы.</li><li><b>Приоритет:</b> указать, насколько ошибка влияет на работу продукта. Исходя из приоритета, команда разработки сможет принять решение, как быстро приступить к её исправлению.</li></ol><p>Плохой пример:</p><ul><li>Не могу подписаться на тег.</li><li>Нужно срочно починить.</li></ul><p>Хороший пример:</p><ul><li>Убедился несколько раз в ошибке, смог повторить.</li><li>В беклоге не нашел ничего похожего, можно создавать.</li><li>Не могу подписаться на тег java.</li><li>Залогинен, открываю любую статью с тегом java, кликаю на тег для подписки, но ничего не происходит. При этом на остальные теги могу подписаться без ошибок.</li><li>ОС linux mint, Google Chrome Версия 112.0.5615.165 (Официальная сборка), (64 бит), Адблок был и включен, и выключен.</li><li>Скриншот или видео.</li><li>Ожидаю, что после клика смогу подписаться на тег java и получать уведомления о выходе новых постов на сайте с этим тегом.</li><li><a href="https://tproger.ru/articles/kak-poyavilsya-s-i-pri-chyom-tut-konflikt-sun-i-microsoft">Статья с тегом java</a>.</li><li>Failed to load resource: the server responded with a status of 404 ()</li><li>Баг очень важный, его нужно сделать вчера.</li></ul><p>Таким образом, потратив не намного больше времени на подготовку отчёта, менеджер принимает непосредственное участие, создав понятную задачу, которую разработчик может сразу взять в работу, не тратя ресурсы на её изучение.</p><p>Поделитесь, как вы проводите обработку ошибок в своей команде.</p>]]></content:encoded>
    </item>
    <item>
      <title>Дашборд тестировщика, или Как мы собираем метрики в отделе тестирования</title>
      <link>https://tproger.ru/articles/dawbord-testirovshhika-ili-kak-my-sobiraem-metriki-v-otdele-testirovaniya-yumoney</link>
      <comments>https://tproger.ru/articles/dawbord-testirovshhika-ili-kak-my-sobiraem-metriki-v-otdele-testirovaniya-yumoney?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Диана Гомонова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/dawbord-testirovshhika-ili-kak-my-sobiraem-metriki-v-otdele-testirovaniya-yumoney</guid>
      <description><![CDATA[<p>В этой статье рассказываем, как мы измеряем эффективность тестирования, какие метрики собираем и какие это приносит результаты.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/dawbord-testirovshhika-ili-kak-my-sobiraem-metriki-v-otdele-testirovaniya-yumoney">Дашборд тестировщика, или Как мы собираем метрики в отделе тестирования</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 21 Sep 2023 13:03:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>В ЮMoney большой отдел тестирования — в нём почти 80 человек, которые каждый день проверяют качество продуктов и сервисов. В этой статье рассказываем, как мы измеряем эффективность тестирования, какие метрики собираем и какие это приносит результаты.</p><h2>Чтобы пообщаться с 80 сотрудниками, руководителю отдела тестирования нужно 40 часов</h2><p>Руководитель должен контролировать работу своего отдела, следить за процессами, понимать, где не хватает ресурсов, а где их с избытком. Для этого раз в две недели (спринт) ему нужно пообщаться с каждым тестировщиком, и одна такая встреча длится примерно 30 минут. Соответственно, чем больше отдел, тем больше времени руководитель на это тратит.</p><p>Раньше, когда в команде тестировщиков было пять человек, на такие встречи уходило 2,5 часа. Но теперь, когда отдел вырос до 80 человек, чтобы поговорить с каждым, руководителю нужно потратить 40 часов. А это целая рабочая неделя.</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/87216ed2-e1c7-4dd0-a292-53702015f181.png" alt="" /></figure><p>Как адекватно оценить обстановку в командах и отделе при такой загрузке руководителя? Нужно <b>делегировать задачи</b> и <b>автоматизировать процессы</b>.</p><h2>Кто такие кураторы в отделе тестирования и чем они занимаются</h2><p>Руководитель передаёт часть своих полномочий тестировщикам с лидерскими качествами — они становятся кураторами. Куратор — это старший или ведущий сотрудник отдела, который сопровождает тестировщиков из продуктовых команд:</p><ul><li>проводит с ними встречи каждый спринт;</li><li>обсуждает насущные проблемы;</li><li>помогает решать текущие задачи;</li><li>организует персональные ревью;</li><li>контролирует процесс, чтобы был баланс между временем тестирования и его качеством.</li></ul><p>Кураторы у нас, как правило, из смежных продуктовых команд. Мы уже <a href="https://habr.com/ru/companies/yoomoney/articles/750638/">рассказывали</a> об этом подробно.</p><p>Чтобы можно было быстро количественно оценивать состояние тестирования, мы начали собирать <b>метрики</b>. Это стало хорошей отправной точкой, чтобы начать обсуждать спринт с командой.</p><h2>Какие метрики мы собираем</h2><p>Поначалу мы опасались, что тестировщики не захотят, чтобы их работу оценивали с помощью каких-то общих алгоритмов. Но нам удалось объяснить команде, что метрики нужны не для санкций и штрафов. Они необходимы, чтобы:</p><ul><li>понимать текущее положение дел;</li><li>своевременно выявлять и решать проблемы;</li><li>отслеживать тенденции — улучшаются ли процессы со временем или ухудшаются;</li><li>повышать качество тестирования продуктов.</li></ul><p>Тестирование — важный шлюз на пути фичи к пользователю. Не хотелось бы, чтобы этот шлюз тормозил выкладку фичи на прод. Поэтому <b>время тестирования должно постоянно сокращаться</b>. Чем быстрее фича «доезжает» до пользователя, тем больше денег можно заработать. Поэтому в первую очередь мы решили сделать акцент на времени тестирования — сократить его без потери качества.</p><p>В каждой продуктовой команде стали собирать такие метрики:</p><ul><li><b>Testing Speed (TS)</b> — отношение количества протестированных задач к количеству задач, переданных в тестирование за один спринт. Считается по формуле:</li></ul><p>TS = Count (протестированные задачи) / Count (задачи, переданные в тестирование)</p><ul><li><b>Tasks Without Testing (TWT)</b> — задачи без тестирования, когда разработчик перетаскивает таск на продакшн в обход тестирования, что повышает риск багов на проде.</li><li><b>Production Found Defects (PFD)</b> — инциденты на проде, когда пользователи сами находят баги в продуктах и приносят их в техподдержку.</li><li><b>Integration Found Defects (IFD) </b>— дефекты, которые нашли на этапе приёмочного тестирования релиза автотестами. Тут выделили ещё три дополнительные метрики:</li></ul><ul><li><b>Test-cases</b> — количество тест-кейсов;</li><li><b>Autotests</b> — количество автотестов;</li><li><b>Coverage</b> — отношение Autotests к Test-cases.</li></ul><ul><li><b>Test Duration (TD)</b> — среднее время тестирования задач. Посчитать его можно по формуле:</li></ul><p>Общее время, которое все задачи провели в тестировании / Общее количество задач</p><p>Для всех метрик мы сделали цветовую индикацию — светофор.</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/2d835deb-bdb5-468b-89ba-3cc579f447dd.png" alt="" /></figure><p>Значение цветов:</p><ul><li><b>Зелёный</b> — всё хорошо.</li><li><b>Жёлтый </b>— скоро всё будет плохо, но пока нормально.</li><li><b>Красный</b> — уже вчера пора было вмешаться.</li></ul><p>Мы определили для себя, что если на тестирование одной фичи уходит меньше двух дней, то это нас устраивает. Если средний показатель метрики Test Duration не выходит за эти рамки, значит, в команде со временем тестирования всё хорошо, Time to Market не страдает и все довольны скоростью.</p><p>Но не все метрики мы оцениваем светофором. Иногда сложно сказать, какое количество тест-кейсов для команды считается хорошим. У всех команд разное количество бизнес-процессов и приложений, которые они развивают и поддерживают. Такие метрики мы окрашиваем в <b>серый</b> цвет и обращаем больше внимания на то, как они меняются со временем.</p><h2>Первые результаты команды тестирования после внедрения светофора</h2><p>Для каждой продуктовой команды мы сделали такую таблицу:</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/9e61a3a4-b690-423f-9f00-e4adcd39a593.png" alt="" /></figure><p>В верхней части видно, что большинство ячеек в таблице для этой конкретной команды — красные. Подобную картину мы увидели в нескольких командах отдела тестирования. С этим надо было что-то делать.</p><h2>Как мы проработали красные зоны</h2><ul><li><b>Провели ротацию</b> в некоторых продуктовых командах.</li><li><b>Начали оценивать тестирование</b> при планировании спринта.</li><li><b>Изменили флоу работы с задачами</b> — чтобы разработчик не мог протолкнуть задачу в продакшн без тестирования.</li><li><b>Сделали акцент на написание автотестов.</b> Это дорогой и трудоёмкий процесс. Мы вложили много ресурсов в то, чтобы начать писать автотесты, провели внутреннюю школу автоматизации и школу код-ревью, разными способами мотивировали тестировщиков писать автотесты.</li></ul><p>В итоге мы улучшили скорость тестирования в отделе, и метрики позеленели:</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/7531de96-e6b9-40a9-b912-31cc990b86d6.png" alt="" /></figure><p>Но ещё было над чем работать.</p><h2>Почему мы пересмотрели метрики: убрали одни и добавили другие</h2><p>За метриками нужно постоянно следить. Не получится просто добавить несколько штук и забыть о них. И надо понимать, что не всегда новая метрика принесёт пользу. Бывает, через некоторое время ты понимаешь, что она не даёт необходимой информации. Такие метрики нужно беспощадно удалять и искать альтернативу. Иначе будет много «мусорных» метрик, с которыми невозможно работать.</p><p>Мы убрали метрики, которые не давали нам полезной информации. Это <b>Testing Speed</b> и <b>Tasks Without Testing</b>. Вместо них мы добавили другие, на которые ориентируемся до сих пор:</p><ul><li><b>Unstable Tests (UT)</b> — количество нестабильных автотестов (тех, у которых Success Rate за две недели был ниже 70%).</li><li><b>Bad Tests (BT)</b> — «плохие» автотесты, то есть те, которые три раза за месяц требовали ручного вмешательства на этапе приёмочного тестирования релиза автотестами. Такие автотесты сильно снижают Time To Market, за который мы боремся.</li><li><b>Skipped Autotests (SA)</b> — количество заблокированных автотестов, тех, которые по каким-то причинам не могут пройти приёмочное тестирование релиза из-за отключенных бизнес-процессов, багов в системе, неготовой инфраструктуры или из-за кода самого автотеста.</li></ul><p>Мы регулярно пересматриваем и актуализируем свои метрики. Их развитие — эволюционный процесс. Каждый может предложить улучшить существующую метрику или добавить новую. Для нас это живой инструмент, на который может повлиять любой человек из QA или других отделов.</p><p>Но метрик может стать слишком много, и тогда на них перестанут обращать внимание. Поэтому, когда добавляете новую метрику, всегда задавайте следующие вопросы:</p><ul><li>С какой целью мы её добавляем?</li><li>Что планируем делать, если она будет красной?</li><li>Нет ли другой похожей метрики, которая будет дублировать информацию?</li></ul><p>И так далее. Также не забывайте собирать обратную связь от пользователей этих метрик.</p><h2>Метрики подсвечивают проблемы в отделе, но не показывают их причину и не подсказывают решение</h2><p>Рассмотрим один из кейсов по работе с метриками в тестировании. Вот метрики одной из QA-команд за восемь спринтов. Очерёдность спринтов считаем сверху вниз:</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/a22b3e23-ac32-422a-a45a-cda3019d7ee0.png" alt="" /></figure><p>В первом спринте года, <b>с 7 по 20 января</b>, значение метрики зелёное. Это значит, что всё было хорошо — задачи тестировали быстро.</p><p>В следующем спринте,<b> с 21 января по 3 февраля</b>, время тестирования задач резко увеличилось, метрика покраснела и очень долго приходила в норму. Случилось это из-за того, что самый опытный тестировщик на какое-то время выбыл из команды, а заменил его новичок, который долго адаптировался. К середине апреля метрика позеленела.</p><p>Это показывает, что метрики лишь подсвечивают проблему, но не отвечают на вопрос, почему она возникла и как её решить. С каждой проблемой нужно разбираться индивидуально, универсального решения для всех не существует.</p><h2>Как мы автоматизировали процесс сбора метрик</h2><p>Когда мы запустили метрики в отделе тестирования, кураторы команд вручную собирали их по фильтрам из Jira и TMS и складывали в Confluence в таблицу. Через какое-то время, когда процесс устоялся и все к нему привыкли, мы решили его автоматизировать.</p><p>Сначала автоматизация была очень простой: мы подняли бэкенд-сервис и сделали один обработчик. При его вызове сервис шёл в Jira, обрабатывал данные и отдавал их в виде JSON. Куратор каждой команды раз в спринт открывал Postman, вызывал обработчик и перекладывал данные с JSON в Confluence.</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/4b9f9b7a-d742-44cb-b4fb-e71f2387a680.png" alt="" /></figure><p>Команде с такой автоматизацией стало полегче, но хотелось упростить её ещё больше. Тогда мы прикрутили к сервису базу данных, добавили клиент для работы с Confluence и начали складывать данные в Confluence автоматически по расписанию — раз в спринт, то есть в две недели.</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/e48a4762-c232-4d72-836a-3cb55f5b0ff3.png" alt="" /></figure><p>Казалось бы: всё отлично, метрики собираем автоматически, их можно в любой момент посмотреть. Но была проблема — Confluence не покрывал все наши потребности.</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/93edc566-bb8c-42c5-b43d-68a6adf9ec7c.png" alt="" /></figure><p>Например, было сложно сравнивать несколько команд друг с другом. А когда данных накапливалось много, страницы долго загружались и тормозили. Мы подумали, что надо сделать свою визуализацию, потому что график в Confluence из коробки выглядел вот так:</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/565acef3-5476-4d4c-a077-54caaa6bd5b1.png" alt="" /><figcaption>Кстати, мы так и не научились его настраивать.</figcaption></figure><p>У нас уже был опыт написания фронтенда в отделе тестирования, поэтому к готовому бэкенду прикрутили самописный UI, подобрав библиотеку для построения графиков. Новый сервис мы назвали Metric Reporter.</p><p>И наши метрики стали выглядеть так:</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/cac6ddcd-87cd-4d34-b18d-65d2016772c2.png" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/99e2077f-5ffb-48b0-8f3d-27de41ef82de.png" alt="" /></figure><p>Через какое-то время мы с дизайнерами переработали внешний вид нового UI и добавили недостающую функциональность.</p><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/9658ef50-3351-47de-a02c-65847c226c25.png" alt="" /></figure><p>Мы подумали, что неплохо было бы работать с командой над метриками прямо в интерфейсе, поэтому добавили возможность комментировать отдельные метрики и спринты. Также добавили общие метрики по отделу из различных специализированных команд QA.</p><p>В итоге мы получили сервис, которым начал пользоваться не только руководитель, но и все коллеги из отдела тестирования. Мы смогли наблюдать за показателями и отслеживать сигналы, необходимые для анализа ситуации в команде и во всём отделе.</p><h2>Почему самописный инструмент</h2><p>Логично было бы взять какой-нибудь готовый инструмент визуализации метрик, например Grafana. Но:</p><ul><li>Grafana не покрывала все наши задачи. Например, там нет возможности комментировать.</li></ul><ul><li>Cрок хранения данных в Grafana ограничен по времени, а нам нужно смотреть метрики с учётом длительных сроков.</li></ul><ul><li>Своё решение легко кастомизировать под любые потребности. Особенно когда процессы постоянно развиваются и меняются.</li></ul><h2>Подведём итоги</h2><p>Какие возможности дали нам метрики:</p><ul><li>Объективно оценивать, что происходит в командах.</li><li>Своевременно выявлять и решать проблемы внутри отдела.</li><li>Выявлять зависимости. Например, если сравнивать метрики год к году, то видно, как возрастает нагрузка на тестировщиков перед новым годом, когда команды хотят закрыть свои квартальные планы в срок.</li><li>Следить за изменениями и трендами, например за внедрением новых процессов или технологий.</li><li>Находить точки роста. Одни метрики зеленеют после того, как мы над ними поработали, мы пересматриваем их, выделяем другие. Находим новые проблемы и решаем их.</li><li>Распределять ресурс тестирования по командам.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/88956/2023-09-21/be9a7bcb-2a3b-448e-a39c-e196cfe76332.png" alt="" /></figure><p>Это отзывы коллег из отдела тестирования, которые пользуются метриками. Они помогают им:</p><ul><li>Выполнять задачи.</li><li>Мониторить процесс тестирования и визуально определять тот самый баланс между качеством и количеством.</li><li>Улучшать процессы в отделе QA.</li></ul><p>Если вы до сих пор не измеряете ваше тестирование, то действуйте. Метрики могут вскрыть проблемы, о которых вы даже не подозревали.</p><h2>Как начать собирать метрики</h2><ol><li>Выявите проблему, которую хотите мониторить.</li><li>Соберите показатели, которые хотите считать.</li><li>Разработайте формулу подсчёта и индикаторы для светофора.</li><li>Поработайте с коллективом, продайте идею, что внедрить метрики — это круто.</li><li>Получите и проанализируйте результаты.</li><li>Проработайте красные зоны.</li><li>Ищите новые точки роста — постоянно актуализируйте метрики.</li></ol><p>Чтобы начать собирать метрики, не обязательно создавать сложную автоматизацию или пилить свои сервисы. Можно использовать любой инструмент, который умеет строить графики и таблицы. Начните с элементарного Excel или с Google-таблиц — через какое-то время вы точно заметите, что процесс тестирования улучшился.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как считать эффективность команды разработки в IT</title>
      <link>https://tproger.ru/articles/kak-schitat-effektivnost-komandy-razrabotki-v-it</link>
      <comments>https://tproger.ru/articles/kak-schitat-effektivnost-komandy-razrabotki-v-it?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Yuri Nedre]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-schitat-effektivnost-komandy-razrabotki-v-it</guid>
      <description><![CDATA[<p>В процессе определения эффективности команды разработки используются различные методы и метрики. Рассмотрели наиболее популярные из них.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-schitat-effektivnost-komandy-razrabotki-v-it">Как считать эффективность команды разработки в IT</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 21 Sep 2023 12:05:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Эффективность команды разработки в IT-секторе — ключевой параметр, от которого зависит успешность реализации проектов. В процессе определения этой эффективности используются различные методы и метрики. В данной статье мы рассмотрим наиболее популярные из них.</p><p>Автор статьи — Юрий Недре, ведущий менеджер проектов компании Самокат.</p><h2>1. Цикл разработки (Lead Time)</h2><p>Цикл разработки, или Lead Time, представляет собой общее время, которое проходит от момента возникновения идеи или получения требования до момента, когда продукт или функционал готов к использованию конечными пользователями. Данная метрика позволяет понять, насколько быстро команда может реагировать на изменения и реализовывать нововведения.</p><h3>Как считать Lead Time</h3><p>Определение начала и конца цикла.</p><p><b>Начало:</b> момент, когда требование или идея была впервые записана или зарегистрирована.</p><p><b>Конец:</b> момент, когда функционал полностью тестирован, документирован и готов к доставке пользователю.</p><h3>Трекинг времени</h3><p>Используйте системы учета задач (например, Jira, Trello или другие) для отслеживания времени прохождения задачи по различным стадиям.</p><h3>Учет всех этапов</h3><p>Включите в расчет все этапы разработки:</p><ol><li>Анализ требований;</li><li>Проектирование;</li><li>Кодирование;</li><li>Тестирование;</li><li>Ревью;</li><li>Деплой.</li></ol><h3>Сбор и анализ данных</h3><p>Соберите данные по множеству задач или функциональных блоков для получения среднего значения Lead Time. Это позволит увидеть общую динамику и исключить аномалии.</p><h3>Постоянный мониторинг</h3><p>Цикл разработки может меняться из-за внедрения новых процессов, изменения состава команды и других факторов. Поэтому рекомендуется регулярно контролировать и анализировать Lead Time.</p><h3>Как использовать Lead Time для повышения эффективности</h3><p>Идентификация “бутылочных горлышек”: Если какой-то этап регулярно вызывает задержки, это может указывать на проблемы, которые стоит решить в первую очередь.</p><h3>Оптимизация процессов</h3><p><b></b>Сокращение времени на определенные операции или автоматизация рутинных задач может значительно сократить Lead Time.</p><p>Lead Time — это важная метрика, которая помогает командам разработки оценить и улучшить свою эффективность. Тем не менее, следует помнить, что качество продукта не должно страдать ради сокращения времени разработки.</p><h2>2. Время на доставку (Cycle Time)</h2><p>Cycle Time, или время на доставку, — это метрика, показывающая, сколько времени требуется для прохождения задачи от начала работы над ней и до её завершения. Это время, в течение которого задача активно обрабатывается, исключая время ожидания или простоя. Он очень схожа с Lead Time, но несет другой смысл.</p><p><b>tОпределение: </b>Cycle Time начинает отсчет с момента, когда команда начинает активную работу над задачей, и заканчивается, когда задача завершена.</p><p><b>tЧто измеряет: </b>Эта метрика фокусируется на времени, которое команде действительно требуется для выполнения работы, без учета времени ожидания перед началом работы.</p><p><b>tФормула:</b></p><p>тогда как</p><p><b>Пример:</b> Представьте, что у вас есть задача по разработке нового функционала. Задача была создана 1-го числа, но команда начала работать над ней только 3-го числа и завершила 5-го числа. Тогда Lead Time составит 5 дней (с 1-го по 5-е), а Cycle Time — 3 дня (с 3-го по 5-е).</p><p>Используя эти две метрики, организации могут определить, сколько времени требуется для выполнения работы и где возникают задержки или “бутылочные горлышки” в процессе. Например, большой разрыв между Lead Time и Cycle Time может указывать на проблемы с приоритетами или процессами, которые приводят к длительным периодам ожидания перед началом работы над задачами.</p><h2>3. Производительность (Velocity)</h2><p>Velocity (или “скорость” на русском) — это ключевая метрика в методологиях Agile и Scrum, которая позволяет оценить производительность команды разработки. Она измеряется в “баллах” или “единицах работы”, и отражает объем работы, выполненной командой за одну итерацию (спринт).</p><h3>Оценка задач</h3><p>Перед началом спринта команда оценивает сложность каждой задачи в баллах (Story Point), используя, например, систему Fibonacci (1, 2, 3, 5, 8, 13 и т.д.) или любую другую систему оценки. Эти баллы отражают сложность и объем работы, а не конкретное количество времени.</p><h3>Реализация задач</h3><p>В течение спринта команда работает над задачами.</p><h3>Подсчет выполненных задач</h3><p>В конце спринта подсчитывается общее количество баллов задач, которые были завершены. Задача считается завершенной, если она прошла все этапы рабочего процесса: разработку, тестирование, ревью и т. д.</p><h3>Анализ данных</h3><p>Производительность команды за спринт равна сумме баллов всех завершенных задач. Например, если команда завершила задачи на 5, 8 и 13 баллов, их Velocity для этого спринта составит 26.</p><h3>Усреднение</h3><p>Чтобы получить более стабильное и предсказуемое значение Velocity, можно усреднить результаты за последние 3-5 спринтов. Это помогает сгладить возможные выбросы и аномалии.</p><h3>Прогнозирование</h3><p>Зная свою среднюю производительность, команда может более точно планировать, какое количество задач она сможет выполнить в следующем спринте.</p><p>Оценка эффективности: если Velocity резко упадет или возрастет, это может указывать на изменения в эффективности работы, проблемы в команде или изменение сложности задач.</p><h3>Улучшение процессов</h3><p>Регулярный анализ Velocity может помочь выявить потребность в оптимизации рабочих процессов или корректировке практик команды.</p><p>Velocity — это полезная метрика для команд, работающих по методологии Scrum или Agile, которая помогает контролировать производительность и планировать будущую работу. Однако важно использовать её с умом и не делать единственным критерием успешности, так как качество продукта и удовлетворенность команды также имеют большое значение.</p><h2>4. Flow Efficiency</h2><p>Flow Efficiency — это метрика, которая используется для измерения эффективности рабочего процесса, показывая, какая часть времени рабочего процесса действительно тратится на добавление ценности к задаче (активная работа) по сравнению с тем временем, когда задача просто ждёт обработки (пассивное ожидание).</p><p>Чтобы рассчитать Flow Efficiency, следует выполнить следующие шаги.</p><h3>Соберите данные о времени</h3><ol><li>Время активной работы (W) — общее время, затраченное на фактическое выполнение задачи. Это может включать в себя кодирование, ревью кода, тестирование и так далее.</li><li>Общее время прохождения (T) — это общее время, за которое задача прошла от начала до конца рабочего процесса, включая время активной работы и время ожидания.</li></ol><h3>Рассчитайте Flow Efficiency с помощью следующей формулы</h3><h3>Интерпретация</h3><ol><li>Если Flow Efficiency равна 100%, это означает, что задача всё время находилась в активной обработке, и не было времени ожидания. Это идеальный, но практически недостижимый сценарий.</li><li>Если Flow Efficiency низкая (например, 20%), это может указывать на большие периоды ожидания или простоя в рабочем процессе, что стоит рассмотреть и попробовать оптимизировать.</li></ol><p><b>Пример: </b>Если задача провела в системе 10 дней (240 часов), из которых на активную работу ушло 48 часов, тогда Flow Efficiency составит (48/240)*100 = 20%.</p><p>Flow Efficiency — еще один мощный инструмент для выявления “бутылочных горлышек” в вашем процессе разработки, так как он показывает, где именно в рабочем процессе возникают задержки и ожидания.</p><h2>5. Test Coverage (покрытие тестами)</h2><p>Test Coverage — это метрика, которая показывает, какая часть кода приложения покрывается автоматическими тестами. Эта метрика часто используется в разработке программного обеспечения для того, чтобы определить степень “защищенности” кода от регрессии и для выявления областей кода, которые могут нуждаться в дополнительных тестах.</p><p>Для расчета Test Coverage следуйте следующим шагам.</p><h3>Используйте инструменты для измерения покрытия</h3><p>Большинство современных языков программирования и фреймворков имеют инструменты или библиотеки для измерения покрытия тестами, такие как:</p><ol><li>Java: JaCoCo, Cobertura;</li><li>JavaScript: Istanbul, Jest;</li><li>Python: coverage.py;</li><li>C#: dotCover, OpenCover;</li><li>Ruby: SimpleCov;</li><li>и другие.</li></ol><h3>Запустите тесты с инструментом покрытия</h3><p><b> </b>Когда вы запускаете свои тесты с инструментом покрытия, он анализирует, какие строки или блоки кода выполнялись в процессе выполнения тестов.</p><h3>Анализируйте результаты</h3><p><b></b>После выполнения тестов инструмент предоставит отчет о покрытии, который покажет:</p><ol><li>Общий процент покрытия кода.</li><li>Покрытие по отдельным файлам или модулям.</li><li>Покрытие по различным метрикам (например, строки, ветвления, функции и т. д.).</li></ol><h3>Рассчитайте Test Coverage</h3><p>Используйте результаты для улучшения тестирования: Если вы обнаружите области с низким покрытием, это может быть индикатором того, что вам следует написать дополнительные тесты для этих частей кода.</p><p>Важно помнить, что хотя высокое покрытие тестами может быть индикатором качественного тестирования, оно само по себе не гарантирует качества тестов или отсутствия ошибок в программе. Покрытие тестами — это всего лишь одна из многих метрик, которые могут быть использованы для оценки качества кода и процесса тестирования.</p><h2>6. Качество кода</h2><p>Для измерения качества кода с точки зрения количества багов можно использовать многие метрики. Один из плюсов – эти метрики легко можно посчитать и они просто интерпретируются без каких либо подводных камней. К метрикам, которые оценивают качество кода и анализ багов можно отнести:</p><h3>Общее количество обнаруженных багов</h3><p><b></b>Это базовая метрика, которая просто подсчитывает общее количество багов, найденных в коде за определенный период времени.Или количество багов в вашем беклоге по отношению к общему количеству задач.</p><h3>Баги на тысячу строк кода (Bugs per KLOC)</h3><p><b></b>Это относительная метрика, которая позволяет сравнивать качество различных проектов или разных версий одного проекта.</p><h3>Баги по приоритетам</h3><p><b></b>Разделение багов по уровню критичности, например: критические, высокие, средние и низкие. Это помогает определить, насколько серьезны проблемы в коде.</p><h3>Время до обнаружения бага (Time to Discovery)</h3><p>Среднее время между внедрением бага и его обнаружением. Чем быстрее баги обнаруживаются, тем дешевле их исправление.</p><h3>Время на исправление бага (Time to Resolution)</h3><p><b></b>Среднее время, необходимое для исправления обнаруженного бага.</p><h3>Процент повторно открываемых багов</h3><p><b></b>Эта метрика показывает, какой процент багов был “исправлен”, но затем снова открыт из-за неполного или некорректного решения.</p><h3>Процент не воспроизводимых багов</h3><p><b></b>Процент багов, которые не могут быть воспроизведены при попытке тестирования.</p><h3>Процент багов, приведших к отказу (Crash Rate)</h3><p><b></b>Процент багов, которые вызвали аварийное завершение программы или системы.</p><h3>Покрытие кода тестами</h3><p><b></b>Хотя это не метрика багов напрямую, высокий процент покрытия кода тестами может помочь уменьшить количество ошибок, так как большая часть кода регулярно проверяется на наличие дефектов.</p><p>Эти метрики предоставляют качественное представление о состоянии кода с точки зрения багов. Однако следует помнить, что их следует использовать в сочетании с другими метриками качества для получения более полного представления о качестве кода.</p><h2>Заключение</h2><p>Оценка эффективности команды разработки в IT — сложный и многогранный процесс. Необходимо использовать комбинацию метрик, учитывая особенности команды и проекта. Главное — не забывать, что метрики должны нести пользу в виде “подсветки” проблем мест в процессе. Если метрика не несет информативности и ее пользы от нее нет, то от нее надо отказываться. Не надо плодить метрики ради метрик.</p><p>Также надо помнить, то настоящая эффективность достигается не только за счет технических показателей, но и благодаря слаженной работе, пониманию и мотивации каждого участника команды.</p>]]></content:encoded>
    </item>
    <item>
      <title>Лучшие бесплатные редакторы кода в 2023 году</title>
      <link>https://tproger.ru/articles/luchwie-besplatnye-redaktory-koda-v-2023-godu</link>
      <comments>https://tproger.ru/articles/luchwie-besplatnye-redaktory-koda-v-2023-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[МТС]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/luchwie-besplatnye-redaktory-koda-v-2023-godu</guid>
      <description><![CDATA[<p>Расскажем, чем они отличаются, и поможем выбрать подходящий.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/luchwie-besplatnye-redaktory-koda-v-2023-godu">Лучшие бесплатные редакторы кода в 2023 году</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Навыки]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 19 Sep 2023 12:11:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Писать код можно даже в «Блокноте», исполняя его через консоль, но это не совсем удобно. Разработчики используют специальные инструменты, в которых удобно писать, редактировать и отлаживать код.</p><p>В статье разберём самые популярные из бесплатных редакторов.</p><h2>Для чего нужен редактор кода</h2><ul><li><b>Автоматическая расстановка отступов. </b>Правильное выравнивание вложенных элементов — неотъемлемый стандарт программирования. Это делает код более читаемым и помогает избежать ошибок, связанных с неправильными отступами.</li></ul><ul><li><b>Подсветка синтаксиса. </b>Выделение элементов языка разными цветами и стилями облегчает навигацию, поиск ошибок, чтение и написание кода.</li></ul><ul><li><b>Автозаполнение.</b> Ускоряет написание кода и снижает вероятность синтаксических ошибок.</li></ul><ul><li><b>Быстрое переключение между файлами. </b>Часто разработчики работают над проектами, состоящими из нескольких файлов кода. Редакторы помогают быстро переключаться между ними.</li></ul><ul><li><b>Запуск, компиляция и отладка кода. </b>Полный цикл разработки в одной среде. Интегрированный отладчик помогает запускать программу, выявлять и устранять ошибки.</li></ul><h2>Типы редакторов кода</h2><ul><li><b>Текстовый редактор. </b>Предоставляет базовые функции для редактирования, включая подсветку синтаксиса и базовые операции с кодом как с текстом.</li></ul><ul><li><b>IDE (Integrated Development Environment).</b> Полноценная среда разработки, объединяющая редактор кода, компилятор, отладчик и другие инструменты. Обеспечивает более углублённую интеграцию для конкретного языка программирования.</li></ul><p>Рассмотрим популярные бесплатные IDE и редакторы кода.</p><h3>1. Visual Studio Code (VS Code)</h3><p><a href="https://code.visualstudio.com/">Лёгкий и быстрый редактор</a>, пользуется огромной популярностью среди разработчиков. В него встроена поддержка разных языков программирования, множество плагинов для настройки и расширения функциональности. Отличная интеграция с системами контроля версий, включая Git.</p><p><b>Минусы: </b>неполноценная IDE, нет встроенных интерпретаторов и компиляторов для запуска программ.</p><p><b>Языки программирования: </b>почти все.</p><p><b>Платформы: </b>Windows, macOS, Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/92f1279f-d234-4e01-90d0-67b036087c06.jpeg" alt="" /></figure><h3>2. PyCharm Community Edition</h3><p><a href="https://www.jetbrains.com/pycharm/">IDE для Python с простым и интуитивным интерфейсом для начинающих</a>. В комьюнити-версии можно учить Python и писать код для небольших проектов.</p><p><b>Минусы: </b>не поддерживает JavaScript, CSS и другие веб-технологии и интеграцию с базами данных (как в профессиональном платном издании PyCharm).</p><p><b>Языки:</b> только Python.</p><p><b>Платформы: </b>Windows, macOS, Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/e515c688-15ca-499a-b2a4-5b2b65a3c940.jpeg" alt="" /></figure><h3>3. Notepad++</h3><p><a href="https://notepad-plus-plus.org/downloads/">Компактный и быстрый текстовый редактор</a>, отлично подходит для редактирования кода. Не тормозит и запускается на любом компьютере.</p><p>Главные фишки: подсветка синтаксиса для большинства языков программирования, простой и интуитивный интерфейс и поддержка плагинов для расширения функциональности.</p><p><b>Минусы:</b> ограниченные возможности по сравнению с полноценными IDE — нет компилятора и встроенного файлового менеджера.</p><p><b>Языки:</b> почти все.</p><p><b>Платформы:</b> Windows.</p><h3>4. Atom</h3><p><a href="https://github.com/atom">Гибкий и настраиваемый текстовый редактор</a>, созданный GitHub (хотя в 2022-м GitHub сообщил, что отказался от дальнейшей поддержки и развития проекта). Atom до сих пор остается популярным, его хвалят за визуальную ориентированность и поддержку Git.</p><p><b>Минусы:</b> разработчики отмечают, что Atom работает медленнее, чем Notepad++.</p><p><b>Языки: </b>почти все.</p><p><b>Платформы:</b> Windows, macOS, Linux.</p><h3>5. Eclipse</h3><p><a href="https://eclipseide.org/">Гибкая и мощная платформа для разработки</a>. Хорошая интеграция с множеством языков программирования, чаще ценится в Java-комьюнити. Пошаговая сборка кода, удобные рабочие области, набор тем — вот за что её так любят.</p><p><b>Минусы:</b> достаточно запутанный интерфейс, в котором придётся разбираться.</p><p><b>Языки:</b> Java, C и C++, PHP, Perl, Python, Cobol и другие.</p><p><b>Платформы: </b>Windows, macOS, Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/121664b7-424a-44c0-80b3-5b786183ea68.jpeg" alt="" /></figure><h3>6. Brackets</h3><p><a href="https://brackets.io/">Лёгкий и удобный текстовый редактор</a>. Основные фишки — интеграция с веб-технологиями (HTML, CSS, JavaScript) и встроенный просмотрщик для визуализации изменений в CSS без перезагрузки страницы.</p><p>В 2021 году Adobe объявила о прекращении поддержки Brackets и предложила пользователям использовать исходные файлы с GitHub или установить Visual Studio Code, но часть пользователей Brackets продолжают работать в этом редакторе.</p><p><b>Минусы:</b> ориентирован в первую очередь на веб-разработку, не подойдёт для других проектов.</p><p><b>Языки: </b>HTML, CSS, JavaScript.</p><p><b>Платформы:</b> Windows, macOS, Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/d193a911-01ef-481c-a7cd-8d0ccbf65d17.jpeg" alt="" /></figure><h3>7. BlueJ</h3><p><a href="https://www.bluej.org/">Интегрированная среда разработки</a>, созданная специально для обучения программированию на Java. Простой интерфейс, ориентированный на новичков, удобные инструменты для создания и отладки Java-программ, визуализация объектов и классов — всё это делает BlueJ отличным помощником для джунов.</p><p><b>Минусы:</b> предназначен в первую очередь для обучения и не имеет всех возможностей для профессиональной разработки.</p><p><b>Языки:</b> Java.</p><p><b>Платформы: </b>Windows, macOS, Linux.</p><h3>8. Xcode</h3><p><a href="https://developer.apple.com/xcode/">Интегрированная среда разработки от Apple для создания приложений под iOS и macOS</a>. Основные фишки — интеграция с языками программирования Swift и Objective-C и все нужные инструменты для создания и отладки мобильных приложений.</p><p><b>Минусы:</b> доступен только для разработчиков, работающих на macOS.</p><p><b>Языки</b><b>:</b> Swift, Objective-C.</p><p><b>Платформы</b><b>: </b>macOS.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/793153f9-90de-4990-ad17-04ce3e7c1cc2.jpeg" alt="" /></figure><h3>9. Spyder</h3><p><a href="https://www.spyder-ide.org/">Научная интегрированная среда разработки на Python для анализа данных и научных вычислений</a>. Особенность IDE — интеграция с научными библиотеками, например, NumPy и Pandas.</p><p><b>Минусы:</b> это специализированный инструмент для научных целей.</p><p><b>Языки:</b> Python.</p><p><b>Платформы:</b> Windows, macOS, Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/a457fe16-e302-42cd-af96-1a9aad806a1e.png" alt="" /></figure><h3>10. IntelliJIDEA Community</h3><p><a href="https://www.jetbrains.com/idea/download/">Бесплатная версия популярной интегрированной среды разработки от JetBrains</a>. Предоставляет множество функций для разработки: интеллектуальные подсказки, автодополнение кода, интеграция с системами контроля версий.</p><p><b>Минусы:</b> нет встроенного HTTP-клиента, нельзя работать с базами данных, не поддерживается совместная работа и удалённый доступ.</p><p><b>Языки:</b> почти все.</p><p><b>Платформы: </b>Windows, macOS, Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/75379/2023-09-19/31a1aa5b-49cc-48a4-969e-9ce12fb3df97.png" alt="" /></figure><h3>11. Vim</h3><p><a href="https://www.vim.org/">Самый противоречивый редактор текста с 50-летней историей</a>. Основные фишки Vim: быстрая работа с текстом с помощью клавиатурных команд (если сможете выучить правила «игры», конечно), низкое потребление ресурсов и быстрый запуск.</p><p><b>Минусы: </b>сложно освоить из-за особенностей интерфейса (и глобальной концепции Vim в виде отказа от управления мышкой).</p><p><b>Языки:</b> почти все языки.</p><p><b>Платформы: </b>встроен в большинство Unix-подобных систем.</p><h3>12. Che (Eclipse Che)</h3><p><a href="https://eclipse.dev/che/">Среда разработки, работающая в облаке и предоставляющая возможность разработки приложений из любого браузера</a>. Подходит для большинства языков и имеет встроенные инструменты для разработки и отладки.</p><p><b>Минус</b>: требует подключения к интернету для работы.</p><p><b>Языки:</b> почти все.<b></b></p><p><b>Платформы:</b> веб-браузер.</p><h3>13. JupyterNotebook</h3><p><a href="https://jupyter.org/">Что-то между интерактивной средой разработки и «Блокнотом».</a> Используется для визуализации данных в основном в Big Data и Data Science, а также в машинном обучении. Имеет облачную и локальную версии.</p><p><b>Минусы:</b> ограничена в функциональности для разработки полноценных приложений.</p><p><b>Языки: </b>почти все, основные — Python, R.</p><p><b>Платформы</b><b>:</b> Windows, macOS, Linux.</p><h3>14. Code::Blocks</h3><p><a href="https://www.codeblocks.org/">Интегрированная среда разработки, ориентированная на языки программирования C и C++</a>. Очень простая и нетребовательная к ресурсам компьютера. Если нужно, можно расширить возможности бесплатными плагинами.</p><p><b>Минусы:</b> устаревший интерфейс.</p><p><b>Языки: </b>C, C++.</p><p><b>Платформы:</b> Windows, macOS, Linux.</p><h2>Как выбрать редактор кода</h2><ul><li>Новичкам на стадии обучения можно посоветовать <b>PyCharm Community Edition</b> (под Python) или <b>BlueJ</b> (под Java).</li><li>Для базовых задач большинству разработчиков достаточно <b>VS Code, Atom и Notepad++.</b></li><li>Для решения специфических задач и научных целей — обратите внимание на <b>Jupyter Notebook и Spyder</b>.<b>  </b></li><li>Разработчикам, которые работают над большими проектами, может подойти <b>Eclipse</b> или редакторы <b>Atom </b>и<b> VS Code.  </b></li><li><b>Под конкретные языки</b> и задачи стоит попробовать заточенные на это редакторы. Например, <b>Brackets</b> (для веб-разработки),<b> Xcode </b>(для macOS),<b> Code::Blocks</b> (для C, C++).</li><li><b>Vim </b>— если вам близка концепция, и есть время освоить работу в нём.<b>  </b></li></ul><h2>Подведём итоги</h2><p>При выборе инструмента многое зависит от личных предпочтений. Одним разработчикам нравится работать в интегрированных средах разработки (IDE), другим достаточно простых редакторов. Важно попробовать разные варианты и решить, что удобнее именно вам.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как организовать код в Laravel. Опыт PHP-разработчика Amiga</title>
      <link>https://tproger.ru/articles/kak-organizovat-kod-v-laravel-lichnyj-opyt-php-razrabotchika-amiga</link>
      <comments>https://tproger.ru/articles/kak-organizovat-kod-v-laravel-lichnyj-opyt-php-razrabotchika-amiga?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный Программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-organizovat-kod-v-laravel-lichnyj-opyt-php-razrabotchika-amiga</guid>
      <description><![CDATA[<p>Как организовать свой код в проектах, использующих Laravel. Рассмотрим практики организации кода проекта для начинающих разработчиков.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-organizovat-kod-v-laravel-lichnyj-opyt-php-razrabotchika-amiga">Как организовать код в Laravel. Опыт PHP-разработчика Amiga</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 05 Sep 2023 13:00:32 GMT</pubDate>
      <content:encoded><![CDATA[<p>Hola Amigos! На связи Евгений Шмулевский, PHP-разработчик в Amiga. Начал заниматься программированием с 2001 года, привет Basic и Express/Turbo Pascal. Веб-разработкой — с 2011 года, а профессионально в вебе с 2013 года. Работал продолжительное время с Битрикс, а с 2018 начал осваивать Laravel.</p><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-05/e0823016-f483-4ba6-881f-f19c47cd7ac5.png" alt="" /></figure><p>В посте я расскажу, как организую свой код в проектах, использующих Laravel. Решил немного структурировать, с чем удалось познакомиться после перехода в мир фреймворков из мира чудного (ударение можете сами поставить) Битрикс. Многие вещи стали для меня открытием и особенно переоткрыл для себя ООП. Начнем рассмотрение с практик организации кода проекта. Статья адресована начинающим разработчикам.</p><p>Давайте посмотрим, какие есть подходы к организации кода.</p><h2>Организация кода в контроллерах</h2><p>Когда я начал изучать Laravel (до этого еще знакомился с Zend/Yii/Phalcon), то писал всю бизнес логику в контроллерах. Так сделал пару своих пет-проектов (своя LMS, и CRM для HR) и особенно плохого в этом ничего не видел.</p><p>Действительно, организация кода в контроллерах является наиболее быстрым решением, но имеет ряд недостатков:</p><ul><li>сложность переиспользования кода;</li><li>вносит некоторую запутанность в код, т.к. у контроллера появляется множество ответственностей, помимо его основной роли;</li><li>читать и отлаживать код состоящий из большого количества строк достаточно проблематично (напомню, что вся бизнес логика в контроллерах);</li><li>из первых 2-х пунктов вытекает третий с проблемами масштабирования.</li></ul><p>Почему же этот подход остается популярным? Первая причина — это то, что во время изучения фреймворка во многих курсах преподается данный подход, т.к. его легче усваивать. И далее уже разработчик идет по накатанной. Вторая причина — то, что данный подход прост в реализации и подходит для небольших приложений.</p><h2>Использование команд (actions)</h2><p>Далее познакомился с подходом с использованием команд.  Команда — выполнение некоторого ОДНОГО действия. В таком случае бизнес-логика выносится в отдельный класс-команду.</p><p>В некоторых проектах сталкивался с тем, что весь код был вынесен из контроллера в команду просто через copy-paste. На входе у такого action объект Request. Считаю, что при использовании команд разработчику следует отвязаться от Request, либо через параметры, либо через DTO (о DTO напишу чуть ниже). Это позволяет использовать action вне контроллера и не зависеть от Request.</p><p>Второй момент, класс команды должен быть разбит на небольшие методы. Это позволит легче поддерживать код в будущем. Примеры наименования команд:</p><ul><li>AuthAction</li><li>RegisterAction</li><li>StoreCommentAction</li></ul><p>Ниже пример использования Action в упрощенном варианте (далее посмотрим, как сделать лучше):</p><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-01/7b35dd36-f34a-467f-be85-4fb0e1b5e18c.png" alt="" /></figure><ol><li>Controller обращается к action передавая DTO на вход.</li><li>Action обрабатывает данные и возвращает ResultDTO, либо ничего.</li><li>Грубо говоря, мы весь код из контроллера вынесли в action и поделили на методы.</li></ol><h2>Использование сервисов (services)</h2><p>Дальнейшее изучение вопроса навело меня на Сервисы. С понятием «сервиса» я познакомился, изучая <a href="https://laraveldaily.com/course/structure-laravel-projects">курс от Povilas Korop «How to Structure Laravel Projects»</a>.</p><p>Сервис, в отличии от action, может иметь несколько методов и является более крупным строительным блоком. Маттиас Нобак в книге «Объекты. Стильное ООП» приводит такое определение: сервисы — объекты, которые либо выполняют задачу, либо предоставляют информацию. Также автор отмечает, что сервисы не хранят свое состояние, т.к. для повторного использования сервиса придется заново его инициализировать, сбрасывая состояние.</p><p>Также сервисы могут реализовывать интерфейсы и внедряться через интерфейс. Сервис также как и команда должен иметь единственную ответственность.</p><p>Ниже схема использования сервисов:</p><ol><li>Controller обращается к Service/Repository передавая DTO на вход (либо просто параметры, если их количество менее 3).</li><li>Service обрабатывает данные и возвращает ResultDTO, либо ничего.</li><li>Service может внутри себя использовать другие Services (расчеты и сохранение данных) и Repository (выборка).</li></ol><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-01/25099e0e-d647-47bc-9288-d8c3bd0ab3bc.png" alt="" /></figure><p>Если нам необходима просто выборка, то можно не использовать сервисы, а обращаться напрямую к классу репозитория.</p><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-01/888725e9-2c2d-42ca-9f73-1b49d5190e44.png" alt="" /></figure><h2>Использование паттерна репозиторий</h2><p>С репозиториями также познакомился на курсе от Povilas Korop. Паттерн репозиторий служит цели отделить логику работы с БД от бизнес-логики приложения. Лично для себя выделяю основной плюс в переиспользовании методов выборки. Примерами методов репозитория могут быть такие названия методов как:</p><ul><li>getById()</li><li>getSellers</li><li>getUserList()</li><li>etc</li></ul><p>Также репозиторий может использоваться для create/update/delete операций. Я предпочитаю в репозиторий выносить только все операции выборки, а для операций изменяющих БД использую сервисы.</p><p>Плюсы паттерна:</p><ul><li>достаточно просто переиспользовать код;</li><li>простота миграции на другие БД (на практике мной не встречалось), т.к. у нас есть дополнительный слой абстракции.</li></ul><h2>Использование DTO</h2><p>Еще один кирпичик это DTO, те специальный тип объекта предназначенный для передачи данных между другими объектами. Чаще всего DTO имеют набор публичных полей и методы для своего создания.</p><p>В чем плюсы использования DTO:</p><ul><li>type-hint;</li><li>инкапсуляция;</li><li>разделение слоев приложения;</li><li>модификация данных.</li></ul><p>DTO могут создаваться через обычный конструктор, либо через вызова метода который возвращает сам DTO. Примерами может служить вызов:</p><ul><li>UserDTO::fromRequest($request)</li><li>UserDTO::fromArray($data)</li></ul><p>Начиная с php 8.0, можно задавать свойства прямо в конструкторе, определяя область видимости. Также для облегчения создания DTO есть пакет от spatie.</p><h2>Складываем все вместе</h2><p>Теперь посмотрим, как в приложении используются все вышеперечисленные блоки. Ниже примерная схема взаимодействия (читается справа налево).</p><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-01/498d32ac-5096-4715-9c42-c07d9e64ebd5.png" alt="" /></figure><ol><li>Controller обращается к action передавая DTO на вход.</li><li>Action обрабатывает данные и возвращает ResultDTO, либо ничего.</li><li>Action может внутри себя использовать Services (расчеты и сохранение данных) и Repository (выборка), о них подробнее ниже.</li><li>Может быть вариант не использовать Repository непосредственно внутри Action, а вызывать только из Service, но считаю это излишним усложнением.</li></ol><h2>Организация структуры проекта</h2><p>Немного слов о структуре. Поначалу пользовался штатным подходом, как изначально рекомендует нам документация Laravel. Проект разбивается на папки, которым соответствует функционал хранящихся в них классов. Типичная структура Laravel проекта:</p><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-01/07fd98eb-c06d-4a80-b2e9-1e4c037a0a8a.png" alt="" /></figure><p>Данный подход хорош для быстрой разработки небольших приложений. В противовес этому подходу существует подход в организации классов, используя модули.</p><p>В идеальном случае, модуль — это независимая часть бизнес-логики. При модульной организации кода структура у нас получается примерно следующей:</p><figure><img src="https://media.tproger.ru/user-uploads/64562/2023-09-01/c8deb548-0dfd-4159-98d8-4a3cd34ad84e.png" alt="" /></figure><p>Код разбивается, исходя из логики принадлежности к Домену. Есть также упрощенный вариант, когда Controllers не выносится в папку с модулями, а остается в изначальной директории app/Http/Controllers.</p><p>Плюсами данного подхода является:</p><ul><li>Проще переиспользовать код на других проектах. При необходимости переносится модуль целиком и подключается на новом проекте.</li><li>У кода меньше зависимостей, т.к. модули имеют минимум связей.</li><li>Разные модули могут разрабатывать разные разработчики.</li><li>Проще в поддержке и масштабировании.</li></ul><p>Минусы:</p><ul><li>Основным минусом является увеличение количества директорий.</li><li>Возможно допустить ошибку при разделении кода на модули. И в будущем придется рефакторить данный код.</li></ul><h2>Мой способ организации кода</h2><ol><li>Классы находятся в папке app и разбиты по модулям. Каждый модуль относится к определенной сущности либо бизнес-процессу.</li><li>Для выборок данных использую паттерн репозиторий.</li><li>Бизнес-логика и операции создания/изменения моделей выношу в сервис-классы. Сервис классы не хранят свое состояние, что позволяет их переиспользовать без повторной инициализации.</li><li>Для того чтобы не зависеть от Request в сервисы передаю либо одиночные параметры, либо DTO. Это позволяет переиспользовать код вне контроллеров (например, команда создания нового пользователя и т.д.).</li><li>Стараюсь, чтобы модели оставались максимально тонкими. В основном содержат в себе связи (relations).</li><li>Контроллеры остаются на своих местах, но создаю папку согласно наименованию модуля.</li><li>Для создания объектов на лету использую статическую фабрику (static factory).</li><li>Если используем сервис, и он выполняет единственное действие.</li><li>Как именую методы:</li></ol><ul><li>getSomething — получение информации. Важный момент — отсутствие side эффектов.</li><li>isSomething — метод для проверки, должен возвращать.</li></ul><p>Вот основная логика организации проекта. Для примера создал на <a href="https://github.com/shmoulevsky/laravel-app-example">github</a> репозиторий с примером простого проекта (авторизация + выборка сущностей) организованный по модулям. Его можно использовать в качестве шаблона для новых проектов. Надеюсь, будет полезно!</p>]]></content:encoded>
    </item>
    <item>
      <title>Как сформировать IT-отдел и зачем убирать HR из найма</title>
      <link>https://tproger.ru/articles/kak-sformirovat-it-otdel</link>
      <comments>https://tproger.ru/articles/kak-sformirovat-it-otdel?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Дьяков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-sformirovat-it-otdel</guid>
      <description><![CDATA[<p>Занимаясь кейсами по организации IT-отделов компании с нуля, я сформулировал несколько основных правил подбора и формирования команды.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-sformirovat-it-otdel">Как сформировать IT-отдел и зачем убирать HR из найма</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 31 Jul 2023 09:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>К великому сожалению с техническим менеджментом у нас в стране все плохо. Да, именно с менеджментом. Можно сколько угодно стенать по поводу релоцировавшихся разработчиков, «плохих программистов» которые ничего не умеют, рассуждать о soft-skill, но факт остаётся фактом, пока вы криво рулите — ваша машина едет не туда).</p><p>Существенно ситуацию усложняют масса тренингов для руководителей, в основном нетехнологических, о «правильных» методах формирования команды, мотивации, *-skills, вовлеченности сотрудников, глубине и качестве управления и прочему. И, заметьте, никто не скажет вам как руководителю, что начинать придется с себя. Конечно, такие курсы же продать сложнее, чем собрать в каком нибудь конференц-зале бизнес-центра класса А владельцев компаний собрав с них по несколько сотен тысяч, поведать о секретных методиках управления и успеха. Ну а если технологии в компании никуда не сдвинулись, то это, конечно же, от не вовлеченных сотрудников.</p><p>Больше тренингов богу тренингов…</p><p>Сейчас, согласитесь, страна находится в состоянии идеального шторма для разработчика. Задачи по импортозамещению есть, и это отнюдь не только освоение бюджетных средств на очередную реплику соцсетей, спрос на специалистов есть и очень высокий. Сеньоры, в массе своей релоцировались, есть куда расти миддлам и джунам. Плюс активно развиваются ИИ, нейронки и low-code системы. Спрос есть, инструменты тоже.</p><p>Но вместо ожидаемого роста и прогресса мы видим все тот же убогий набор любимых граблей. Форумы пестрят однотипными статьями hr-специалистов (на самом деле те же кадровики, но с самомнением) о том как проходить собеседование, понравиться и составлять красивое резюме. Обычно это сопровождается стонами на тему как сложно найти того, кто все сделает на взгляд hr верно, и закроет вакансию.</p><p>Занимаясь систематически кейсами по организации отделов компании с нуля, а также опыт обслуживания и консультации по подбору реальных (!) специалистов я сформулировал для себя несколько основных правил подбора и формирования команды. Может кому пригодится. Поехали…</p><ol><li>Убрать hr из найма, совсем. Да, ваша нагрузка выше, но зато вы не упустите целый пласт ценных кадров.  HR ищет «правильные» резюме, грамотно составленные. Такие составляет тот кто часто и умело ищет работу. Кто хорошо работает — резюме всегда корявое, специалист описывает то, что ему кажется важным. О услуге составления резюме он может вообще не знать. И выбросьте из головы мысли, как он мог бы «правильно» сделать. Сейчас это ваша задача выследить в шелухе зерно драгоценного металла. HR только оформляет документы, в идеале получая их от вас или в вашем присутствии. Всё (!) вмешательство hr в подбор должно пресекаться, хотят «оценивать» — значит берут на себя ответственность за работу отдела. И никак иначе.</li><li>Оценивайте не скилы, а кейсы. Если настроены серьезно — дав тестовое задание на примере того что сейчас важно компании. Ради всего святого, если ваш ведущий спец берет день на подготовку и изучение, не ждите ответов от соискателя немедленно. Как вариант запросите у него какие сходные задачи он решал. В обязательном порядке задаю вопрос : приведите пример кейса в своей практике, который вы считаете сложным и как вы его решали? Это стоит внимательно разобрать, вы поймёте уровень кандидата и его готовность решать то с чем он не сталкивался. А в IT каждый периодически решает задачи, которых раньше не решал.</li><li>Участие в собеседовании ведущего специалиста (если это вдруг не вы). Важно, но сложно. Собес всегда превратиться в мерение длиной скиллов, в 90% случаев точно. Ваш ведущий, сеньор, как хотите зовите, будет гонять то тому что он знает и помнит именно сейчас. Тут помните что вы в этот момент собеседуете ещё и своего ведущего. Если он уйдет на рынок, то так же попадет на того, кто сидя на конкретной задаче/технологии знает больше и будет уже о нем невысокого мнения. Тут для вас уже «красный флаг» фраза вашего специалиста: да о чем с ним, говорить если ***. Это говорит о проблеме в вашей команде не меньше, чем о соискателе.</li><li>Деньги. Не тупите. Если вы ищете хорошего опытного специалиста, умеющего эффективно закрывать кейсы, то он знает сколько это стоит. Начинайте с конкурентной ЗП. Если отрасль/стек в котором вы ищете специалиста конкурентные — сначала вы идете к генеральному и ставите оклад по поиску за рынка +10-15%. Специалист — не вьюнош с взором горящим, ищущий галеру с идейными гребцами. Он денег хочет, и получит, и если вам нужен его продукт, он получит денег от вас. А может от других. Помните об этом. Другая сторона медали — своевременная индексация. Нет это не шутка.</li><li>Коммуникабельность. Либо забудьте либо в меру. У хорошего специалиста всегда есть свое мнение. И оно нужно в первую очередь вам для контроля соответствующих технологий и развития, иначе получите Франкенштейна. Не сразу, но года за 3-4. Такое часто бывает, когда эти ваши 1Сы бесконтрольно переписываться по запросам пользователей. Если специалист сказал, что так нельзя, значит так делать нельзя.</li><li>Мнимые недостатки типа частой смены работы. Может ему попадались такие же умники, ценящие вовлеченность и переработки. Не надо недооценивать неадекватов на рынке труда. Человек ищет стабильность. Если у вас ему будет комфортно, он у вас и десять лет проработает. Если брать отдельно непрерывный стаж, то в it человек, просидевший лет 10 на одном месте — это уже затекшие мозги.</li><li>Место отдела в компании. Это уже должно беспокоить вас и ваше отношение с руководством. Если компания с помощью вас решает свои проблемы, то как технологический менеджер вас в первую очередь должно беспокоить не как их решать, а откуда они взялись. Нельзя быть хорошим пожарным, если здание ежедневно кто-то поджигает. И тут надо выяснить готово ли руководство воздействовать на причины. Можно какое то время быть «виноватым отделом» обычно если платят и вы в это время сами ищете работу не торопясь. Если компания оказывается не готова к изменениям и работать не в режиме пожара, подумайте надо ли вам это? Выгорание штука неприятная и тяжело устраняемая.</li></ol><p>Возможно, конечно, пробежаться по методам работы отдела, учёт, взаимодействие с другими отделами, сорсерами и тому подобное. Но это уже другая история.</p><p>Если мои набитые жизнью шишки на лбу кому-то помогут — значит текст писал не зря. Очепятки пусть остануться на моей совести…</p><p>Всем добра.</p>]]></content:encoded>
    </item>
    <item>
      <title>Роль тестировщика в Agile-команде</title>
      <link>https://tproger.ru/articles/rol-testirovshhika-v-agile-komande</link>
      <comments>https://tproger.ru/articles/rol-testirovshhika-v-agile-komande?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Исангулов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/rol-testirovshhika-v-agile-komande</guid>
      <description><![CDATA[<p>В данной статье затронем некоторые принципы Agile-методологии, рассмотрим спринт и роль тестировщика в нем.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/rol-testirovshhika-v-agile-komande">Роль тестировщика в Agile-команде</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 25 Jul 2023 11:09:41 GMT</pubDate>
      <content:encoded><![CDATA[<figure><img src="https://media.tproger.ru/uploads/2023/07/213c29a2-0a51-42e6-86d7-e183757d7a2e-autoconverted.jpeg" alt="" /></figure><p>Для успешной реализации ИТ-проектов компаниям важно быстро адаптироваться к изменяющимся условиям, иметь возможность оперативно обсуждать, принимать и отменять решения, а также быть открытыми для новых перспектив. Многим компаниям такие возможности открывают гибкие методологии, одной из особенностей которых являются смешанные команды, объединяющие аналитиков, дизайнеров, разработчиков, тестировщиков, имеющих возможность непрерывно взаимодействовать для решения рабочих вопросов. Однако зачастую роль каждого члена такой команды размывается, что может не только приносить дискомфорт участникам, но и негативно сказываться на ходе разработки. В данной статье затронем некоторые принципы Agile, рассмотрим спринт и роль тестировщика в нем.</p><h2>Что такое Agile-методология</h2><p>Agile-методология разработки программного обеспечения — это гибкий и эффективный подход, при использовании которого традиционные последовательные этапы заменяются итеративным и инкрементальным подходами.  Это означает, что команда работает над проектом в небольших циклах, называемых спринтами, при этом каждый заканчивается выпуском работающего программного продукта.</p><p>Таким образом, команда может не только быстро и качественно создавать продукты, но и активно развиваться при помощи регулярного взаимодействия и сотрудничества внутри коллектива на встречах для обсуждения текущих задач и анализа проделанной работы, адаптироваться к изменениям, быстро реагировать на обратную связь от заказчика или пользователей. Это позволяет доставлять ценность на ранних этапах разработки, способствует улучшению процессов и делает команду более эффективной и продуктивной.</p><h2>Роль тестировщика в Agile</h2><p>Давайте рассмотрим спринт с его артефактами и попробуем определить роль тестировщика в нем.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/6985baff-f6a2-4643-9589-afbd51705f60.png" alt="" /></figure><p>Как мы видим, начинается спринт с  этапа планирования, который считается одним из самых важных этапов, ведь именно при планировании формируется план действий, оформляются и распределяются основные задачи, происходит оценка времени их выполнения, разрабатывается система коммуникации между членами команды и способы проверки выполненной работы. Затем следует выполнение запланированных задач и завершающими являются этапы демонстрации и ретроспективы.</p><p>Для многих команд актуально подключение специалистов по тестированию ближе к концу итерации разработки, так называемый TLD-подход — тестирование после разработки (<i>англ. Test Last Development</i>). Такая практика может привести к ряду проблем. Во-первых, недостаток времени для выполнения всех необходимых проверок и выявления потенциальных ошибок. Это может привести к тому, что некоторые дефекты останутся незамеченными и будут обнаружены уже после релиза продукта. Во-вторых, отсутствие планирования и недостаточная коммуникация между членами команды. В этом случае тестировщики не будут в полной мере понимать требования и ожидания заказчика, что приводит к неправильному выполнению тестовых сценариев и некорректной оценке качества продукта. Поэтому следует привлекать QA-специалиста к участию в проекте на всех этапах спринта, начиная с планирования и заканчивая демонстрацией и ретроспективой.</p><p>На этапе планирования тестировщик знакомится с задачами беклога и анализирует требования, при их наличии, а также помогает определить, какие тесты необходимо разработать для проверки соответствия функциональности. Выбирает инструменты для достижения необходимого качества, подходы к тестированию и делает верхнеуровневый тест-план. На этапе планирования спринта тестировщик определяет тесты, которые нужно автоматизировать для повышения эффективности тестирования, а также помогает определить приоритеты задач и оценить объем работы.</p><p>В начале спринта тестировщик пишет чек-листы и создает ручные тесты. Это позволяет к моменту завершения разработки иметь готовые наборы проверок, которые позволят быстро обнаруживать ошибки и дефекты. QA-специалист отвечает за поддержку и обновление тестов, чтобы они оставались актуальными и эффективными. Ручные тесты могут быть направлены на проверку функциональных возможностей системы, интеграционное взаимодействие между компонентами, пользовательский интерфейс и удобство пользования системой.</p><p>В течение спринта QA-специалист занимается автоматизацией тестирования компонентов системы. Автоматизация играет ключевую роль в Agile-разработке, позволяя команде быстро и эффективно проверять работоспособность функциональности после каждого изменения в коде. Хорошей практикой считается встраивание автоматизированных тестов в конвейер непрерывной интеграции CI.  Это позволяет быстро проверить, не нарушила ли новая функциональность работу уже существующих компонентов системы. Автоматизированные тесты также помогают обнаруживать регрессионные ошибки, которые могут возникнуть при внесении изменений в код.</p><p>Процент времени, который тестировщики должны тратить на автоматизацию и ручное тестирование в спринте, может зависеть от сложности проекта, доступности автоматизации и приоритетов команды. Однако обычно рекомендуется уделять большую часть времени на автоматизацию тестирования. Это связано с тем, что автоматизация позволяет повысить эффективность и скорость тестирования. В долгосрочной перспективе автоматизация позволяет сократить стоимость разработки и тестирования и уменьшить Time to Market, т.е. время, необходимое для разработки и выпуска продукта на рынок, начиная от момента постановки задачи до момента его запуска и доступности для конечных пользователей.</p><p>Использование только одного вида тестирования недостаточно для обеспечения высокого уровня качества программного продукта, поэтому важно сочетать ручное и автоматизированное тестирование. Таким образом, к моменту окончания разработки тестировщик уже имеет набор ручных и автоматизированных тестов для проведения полноценной работы.</p><p>Ближе к окончанию спринта команды проводят демонстрации своих доработок, на которых QA-специалист может принимать активное участие, выступая в роли связующего звена между командой разработки и заказчиком, как специалист, владеющий информацией о функциональных особенностях системы, и может устроить показ, ответив на вопросы и собрать обратную связь.</p><p>Финал спринта — ретроспективное собрание команды. На нем анализируются прошлые достижения и проблемы, ведутся рассуждения о возможных улучшениях в процессе разработки, предлагаются идеи и решения. Благодаря своему опыту в области тестирования QA-специалист может вносить предложения по улучшению качества и эффективности работы команды.</p><p>Ссылаясь на вышесказанное, работа тестировщика в спринте может выглядеть так:</p><figure><img src="https://media.tproger.ru/uploads/2023/07/c643f2dc-f6f2-4336-aa7e-935f3f98208b.png" alt="" /></figure><h2>Заключение</h2><p>Таким образом, роль тестировщика в Agile-команде заключаются в проведении тестирования, улучшении процесса разработки и обеспечении качества программного продукта. Тестировщик — незаменимый член команды, навыки которого способствуют достижению высокого уровня качества и эффективности в Agile-разработке. Однако важно понимать, что качество конечного продукта зависит от всех участников Agile-команды.</p>]]></content:encoded>
    </item>
    <item>
      <title>Правила составления документации ML-проекта</title>
      <link>https://tproger.ru/articles/pravila-sostavleniya-dokumentacii-ml-proekta</link>
      <comments>https://tproger.ru/articles/pravila-sostavleniya-dokumentacii-ml-proekta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Nikita]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pravila-sostavleniya-dokumentacii-ml-proekta</guid>
      <description><![CDATA[<p>Рассказали, как составить и использовать документацию на примере ML-проекта. Также назвали правила и проблемы при работе с документацией.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pravila-sostavleniya-dokumentacii-ml-proekta">Правила составления документации ML-проекта</a>»</p>]]></description>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 17 Jul 2023 11:19:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Документация представляет собой текстовый или иллюстрационный материал, сопровождающий ПО и поясняющий методы и цели его использования, а также обладающий рядом свойств:</p><ul><li>может передаваться отдельно или быть встроенной в код;</li><li>может содержаться в разных форматах (текст, видео, картинки);</li><li>используется разными специалистами, связанными с одним проектом.</li></ul><p>В первую очередь документация необходима команде разработчиков проекта и её руководителю, а уже после менеджменту, клиентам из бизнес-среды, поставщикам, конечным потребителям. Отсутствие документации существенно усложнит процессы расширения штата или продуктовой линейки. Наличие сопроводительных документов позволяет ML-команде:</p><ul><li>быстро вводить в курс дела новых сотрудников;</li><li>сокращать время, затрачиваемое на поиск необходимых материалов;</li><li>усиливать обмен информацией в штате;</li><li>структурировать рабочие процессы;</li><li>планировать пути развития проекта;</li><li>поддерживать данные в актуальном состоянии.</li></ul><figure><img src="https://media.tproger.ru/uploads/2023/07/6242e893-5c50-48e5-b0d0-f5a073842b1e-autoconverted.jpeg" alt="" /></figure><h2>Частые проблемы, связанные с документацией</h2><ul><li>В документации содержится слишком мало информации. Приходится часто дергать членов команды для получения нужных данных.</li><li>Информации слишком много, и она разбросана по разным источникам – wiki, Slack, гугл-документы и презентации, бумажные носители.</li><li>Информация неактуальна.</li><li>Информация дублируется в разных источниках.</li></ul><p>Итак, мы разобрались с основными целями создания и ведения документации и знаем, с какими проблемами нам предстоит столкнуться. Теперь поговорим о “правилах хорошего тона”, использование которых сильно уменьшит вероятность появления этих самых проблем.</p><h2>Правила структуры и оформления документации</h2><ul><li>Единая точка входа ко всей документации проекта. Это может быть страница в Notion, фрейм в Miro или Markdown-документ, форма не так важна. Главное, чтобы с этой страницы любой человек мог получить доступ к нужной ему информации.</li><li>Единые правила оформления и стиля, наличие шаблонов. Немаловажным фактором для восприятия пользователем документации является наличие и консистентность общего стиля оформления документации.</li><li>Стиль описания и подачи информации в документации соответствует культуре команды. Нет смысла придерживаться ненужного формализма во внутренних документах команды.</li><li>В документах есть ссылки на другие релевантные документы.</li><li>Важные места выделены.</li><li>Используются оптимальные методы передачи информации. В зависимости от задачи документа может использоваться не только текст, но и картинки, графики, диаграммы, видео.</li></ul><h2>Правила использования и актуализации документации</h2><ul><li>Определена целевая аудитория каждого документа – кто, как и зачем будет его использовать.</li><li>Если документация не используется самой командой, то её актуализацию стоит встраивать в процессы в формате “definition of done”. Например, нельзя зарелизить новую модель, не обновив документацию.</li><li>Использование методологии (“docs as code”) там, где это актуально. В данном случае документация является частью кодовой базы, лежит в репозитории и пишется в IDE. Данный подход “из коробки” даёт возможность версионирования, тестирования, ревью изменений документации.</li><li>Производится регулярная ревизия документации. Включает себя в том числе отказ от устаревших или лишних документов.</li><li>Встречи команды должны порождать новые “артефакты” (документы по итогам встречи). Например, дорожная карта реализации или лист договоренностей.</li><li>Инвентаризация технического долга по документации. Да-да, техдолг по документации тоже является техдолгом.</li></ul><h2>Можно ли как-то измерить качество документации</h2><p>Если у нас уже есть какая-то документация и процедуры её актуализации, можно ли попробовать померить её качество? Такие показатели действительно есть:</p><ul><li>Покрытие – какая часть кода проекта или DS-пайплайна покрыта документацией</li><li>Доступность – сколько времени или кликов в среднем занимает поиск нужного документа</li><li>Читаемость – насколько <a href="https://en.wikipedia.org/wiki/Readability">легко</a> читать этот документ</li><li>Количество посещений/обновлений документа за период</li></ul><p>Мы пока не дошли до того, чтобы регулярно замерять динамику этих показателей, пока это кажется лишним. Но в качестве точки среза – почему нет?</p><h2>Документация ML-проекта</h2><p>В первой части статьи я рассказал про документацию процесса разработки. Однако ML-разработка довольно сильно отличается от классической разработки. Есть ли различия в документации?</p><p>Если максимально упростить пайплайн ML-разработки, то он будет выглядеть следующим образом:</p><ol><li>Оценивается осуществимость и значимость проекта</li><li>Производится сбор, очистка и разметка данных</li><li>Генерируем гипотезы, тренируем модели</li><li>Оцениваем качество и устойчивость лучшей модели</li><li>Деплоим модель</li><li>Осуществляем мониторинг</li></ol><p>Понятно, что этот пайплайн весьма условен, каких-то этапов может не быть, какие-то могут добавиться. Да и носит он, конечно, циклический характер, например на этапе оценки качества мы можем вернуться на этап генерации новых гипотез и построения моделей. Тем не менее, такое разделение позволит нам посмотреть на разные виды документации, характерные для разных этапов.</p><h2>Что же может быть входной точкой в документацию</h2><p>В нашем случае это карточка проекта, оформленная в Notion.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/aedc0ab9-1034-42b7-bdb0-733e27d3d3bd.png" alt="" /></figure><p>В таком случае в рамках проекта по маммографии документы распределены по группам: описание работы системы, код и model cards, эксперименты и идеи, данные и так далее.</p><p>Если мы углубимся в какую либо подгруппу, например, описание работы системы, то мы увидим внутри список документов и ссылок, связанных с данной предметной областью. Как мы видим внутри могут содержаться абсолютно разные документы, такие как Miro, Google-таблицы, PDF-файлы.</p><h2>Начинаем с оценки проекта</h2><p>На этапе оценки осуществимости и значимости проекта мы хотим собрать и агрегировать информацию, которой владеют разные группы пользователей – бизнес, аналитики, ML-специалисты, доменные эксперты, заказчики. Это позволяет нам создать общее понимание нюансов проекта, структурировать нужную информацию, которая позволит принять решение о старте проекта.</p><p>Примеров, как может выглядеть такой документ, очень много – <a href="https://leands.ai/ru">AI Canvas</a>, <a href="https://www.youtube.com/watch?v=rPisw2KNsC0&amp;t=2343s">Mission Canvas</a>, карточка проекта (<a href="https://eugeneyan.com/writing/ml-design-docs/">design doc</a>, <a href="https://github.com/ttzt/catalog_of_requirements_for_ai_products">чек-лист требований</a>). В эту же группу можно включить технические задания от заказчиков.</p><p>Такие документы могут включать:</p><ol><li>Описание проблемы и предположения о достижимой ценности продукта</li><li>Варианты решения с ML и без него</li><li>Требования к качеству (метрики)</li><li>Описание источников возможных данных</li><li>Другие требования (например, к железу и программному обеспечению)</li><li>Последствия ошибок системы и так далее</li><li>Этапы проекта</li><li>Технические риски и заключение по проекту</li><li>Конкуретная среда</li><li>Литература, научные статьи, видео по теме</li></ol><p>Исходя из всей собранной информации мы готовим заключение о целесообразности или же её отсутствии для реализации проекта.</p><h2>Принято положительное решение для реализации ML-проекта</h2><p>После сбора и анализа такой информации, проведения встречи с бизнес-подразделением принимается решение о реализации или же отмене проекта. Допустим было принято положительное решение и теперь мы переходим к шагу №2 – “сбор, очистка и разметка данных”.</p><p>Поскольку в нашем случае мы работаем с медицинскими данными, то разметка данных – это отдельный важный процесс. В нашем случаи, разметчики – доменные эксперты, врачи, что ведёт к отдельным трудностям. Сам процесс разметки, разумеется, также описан в документации – процесс отбора разметчиков, инструкции врачам, принципы разрешения конфликтов в разметке.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/1bf91b3d-6995-454d-a2e8-03f3020486e4.png" alt="" /></figure><p>Любой источник данных также требуется документировать. Это позволяет быстро получать информацию об источнике и объёме данных, их ограничений и свойств, генерировать новые гипотезы, связанные с данными – например, какие данные нужно доразметить или наоборот выбросить из датасета.</p><h2>Datasets Cards</h2><p>Документацию датасетов мы называем dataset cards. В зависимости от специфики данных, частоты их пополнения, типа разметки это может быть как просто статический документ, так и интерактивный дашборд. В идеале датасет-карды обладать следующими свойствами:</p><ul><li>версионирование – мы хотим понимать, какая документ соответствует той или иной версии датасета</li><li>автообновление – если датасет-карт или дашборд подключен к БД с разметкой, то он всегда будет содержать актуальную информацию о датасетах</li><li>интерактивность – должна быть возможность подробно глазами изучить тот или иной слайс данных или конкретный кейс</li></ul><p>В зависимости от задачи датасет-кард может содержать различную информацию – примеры данных и разметки, описательные статистики, источник данных и описание процесса сбора данных, информация о разметчиках, известные проблемы и ограничения.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/eb9f1c7c-262a-4d8e-b898-87d44d783aad.png" alt="" /></figure><figure><img src="https://media.tproger.ru/uploads/2023/07/63b4a1ed-dcde-49bd-90d1-e39f1d2acdce.png" alt="" /></figure><h2>Собрали данные… Начинаем тренировать какие-то модели</h2><p>Итак, мы определились с источниками данных, собрали их и разметили, создали документацию. Теперь пора начинать выдвигать гипотезы и тренировать модели для решения нашей бизнес-задачи.</p><p>Среди целей, которые мы ставим перед собой на данном этапе:</p><ul><li>Быстрая генерация, приоритезация и проверка гипотез</li><li>Удобный анализ результатов экспериментов</li><li>Возможность возврата к результатам предыдущих экспериментов</li><li>Удобство разработки</li></ul><p>Безусловно, ни одна из этих целей не решается только документацией, но документация должна поддерживать наше стремление к реализации каждой цели. Примеры документации на этом этапе – база гипотез, карточки экспериментов, документация кода, презентации по итогам серии экспериментов.</p><p>База гипотез – список приоритизированных идей на отработку. Он может содержать различную информацию и описание самой идеи, теги для удобной фильтрации контента внутри базы идей, оценки реализуемости и трудоемкости идеи (например, по <a href="https://www.youtube.com/watch?v=Q5gIrrG5Y3M&amp;t=1469s">ICE</a>), <a href="https://www.youtube.com/watch?v=AOgXt1AH61k">дизайн-ревью</a> и отчет по эксперименту, ссылка на эксперимент в трекере экспериментов.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/2d6dbe01-f5de-4315-a357-373e37089dd7.png" alt="" /></figure><p>В данном случае база идей реализована в Notion. Благодаря этому ее можно упорядочивать в необходимом нам формате. Например, по статусам, оценке “легкости реализации” и так далее. Отсюда мы можем попасть в саму карточку нужного нам эксперимента и посмотреть его детали.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/24ff709f-47f7-4eb2-8e92-dfb21275c3a2.png" alt="" /><figcaption>Когда гипотеза попадает в базу она как правило описана очень верхнеуровнево, без деталей. Этой информации обычно недостаточно, чтобы точно оценить трудоёмкость гипотезы, конкретные шаги, нужные для её проверки, зависимости. Большая часть этой информации приходит уже в процессе анализа задачи. Когда конкретный человек из команды берет ее на себя, собирает инфорацию, гуглит статьи, смотрит репозитории, наличие и доступность данных, он описывает детали эксперимента (experiment design), чтобы обозначить план итоговой реализации. Этот план затем оценивают другие члены команды в рамках процедуры design review. Это помогает избавиться от проблем неправильного понимания задачи, расходования времени на переписывание после код-ревью, нерационального расходования времени во время проверки гипотезы.</figcaption></figure><figure><img src="https://media.tproger.ru/uploads/2023/07/51e2ead0-4a85-45e5-a5b2-73416e8d0168.png" alt="" /></figure><p>Результаты реализации гипотез могут быть описаны в различном формате в зависимости от “ожиданий” и их важности. В некоторых случаях достаточно односложного комментария, а в некоторых необходимо готовить презентацию и обсуждать результаты и дальнейшие идеи с коллегами.</p><p>Использование трекера (в нашем случае это ClearML) позволяет обеспечить репродуцируемость эксперимента и в любой момент получить информацию о его метриках, версии кода, гиперпараметрах.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/09630037-1de0-4cb7-927c-1c90d7836d21.png" alt="" /></figure><p>В трекере можно сравнить результаты разных экспериментов, изучить метрики, сформулировать выводы. Всё это по сути тоже является частью документации ML-проекта.</p><h2>Натренировали. Выбрали лучшую модель. Теперь пора оценить её качество и устойчивость</h2><p>На этом этапе мы хотим оценить качество модели, сравнить её с предыдущей версией, понять ограничения и особенности модели. Например, новая модель может работать с конкретным типом данных (снимки с определённого типа оборудования) хуже. И это также важно знать и учиывать.</p><p>В качестве артефактов документации на этом этапе у нас появляются model card,  дашборды с таблицами и метриками, отчёты по анализу ошибок.</p><p>Model Card – описание ML-системы, которая включает в себя следующую информацию:</p><ul><li>Изменения в последней версии</li><li>Описание обучающих и тестовых данных</li><li>Описание архитектуры сети, препроцессинга и других компонентов</li><li>Описание требований к входным данным</li><li>Описание аутпутов системы</li><li>Метрики</li><li>Описание известных ограничений и проблем</li></ul><p>Модел-кард для разных групп пользователей может иметь разный итоговый вид. Например, для бизнес или конечных пользователей можно включить рекомендуемые сценарии использования системы, но убрать лишнюю информацию об архитектуре сети.</p><p>Мы храним такую документацию в формате docs-as-code – в нашем случае, это Markdown-док, который версионируется и прилинкован к конкретным коммитам. По важным же релизам могут быть экспортированы и PDF.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/2b677169-54eb-4257-a4d7-1916550a69ac.png" alt="" /></figure><h2>Круто. Теперь мы можем задеплоить модель и подготовить ее в продакшну!</h2><p>Деплой как и любой другой ML-процесс порождает свой класс специфичных документов. Среди которых :</p><ul><li>Отчеты по тестам (test reports)Автоматизированные тестыРезультаты a/b тестовОтчеты по опросы пользователей</li><li>Автоматизированные тесты</li><li>Результаты a/b тестов</li><li>Отчеты по опросы пользователей</li><li>Дашборды и регулярные автоматические отчёты</li><li><a href="https://habr.com/ru/company/dododev/blog/554612/">Post-mortem</a> по итогам инцидентов на проде (документация события, несущего негативные последствия с целью анализа и устранения его причин)</li><li>Документация API</li><li>Change Notes</li><li>Прочая документация, связанная с релизами</li></ul><h2>Ну и куда без общей документации</h2><p>Конечно, на ML-проекте появляется и всякая общая и процессная документация. Примеры из нашей практики:</p><ul><li>Team Canvas</li></ul><figure><img src="https://media.tproger.ru/uploads/2023/07/20a31482-4d29-43c8-a2fd-11e231488e49.png" alt="" /></figure><p>Очень полезный элемент для онбординга новых сотрудников. Документ описывает состав команды, ценности команды, зоны ответственности внутри команды и между сотрудниками, процессы, встречи и их формат, командные ритуалы и правила</p><ul><li>Доски и скоринговые карты собеседований сотрудников</li><li>Таблица с описанием встреч</li></ul><figure><img src="https://media.tproger.ru/uploads/2023/07/9831bfab-16e7-47c8-91ad-3f49c31f1484.png" alt="" /></figure><p>Таблица встреч – очень полезная вещь, которая обеспечивает понимание цели, участников и артефактов встреч для всех сотрудников. Для планирования стреч и напоминаний мы также используем гугл-календари.</p><ul><li>Гайдлайны по написанию кода</li><li>База знаний – по коду, инфраструктуре, ML, заметки со встреч с доменными экспертами (врачами)</li><li>Доска онбординга</li><li>Общее Миро со всей информациейСтратегия и цели компании/проектаРоадмапы</li><li>Стратегия и цели компании/проекта</li><li>Роадмапы</li></ul><p>В зависимости от вида документа и его целевой аудитории варьируется и лицо, поддерживающее документ. Кроме того, важно в целом создавать культуру ведения документации в компании, формировать понимание каждого члена компании, что документация и её актуализация приносит конкретную ценность, экономит время и устраняет дублирование работы.</p><p>Отдельно хочу остановиться на таком моменте как автоматизация документации. Во-первых, чем меньше мы в целом делаем руками – тем меньше нужды в ручном написании документации. Например, если мы ставим эксперименты в джупитере или меняем данные руками в эксель-табличках, то и документацию нужно будет написать руками. А работа с эксперимент-трекером или БД с разметкой автоматически создаёт нужные артефакты.</p><p>Помимо этого, есть разные инструменты, которые позволяют автоматизировать процесс создания и актуализация документации – Swagger, плагины для IDE, интерактивные датасет-карды (о них можно прочесть выше), DVC-пайплайны, методология docs-as-code.</p><h2>Заключение и рекомендации</h2><p>Качественная документация – залог возможности успешного масштабирования как разработки, так и бизнеса в целом.</p><p>Что бы я предложил вам сделать уже сейчас?</p><ul><li>Провести аудит документации и по каждому документу ответить на вопросы из списка (можно найти в первой части статьи), сформировать бэклог техдолга по документации.</li><li>Создать единую точку входа в документации (если её еще нет).</li><li>Оценить, для каких документов подходит методология docs-as-code, актуализацию каких документов можно автоматизировать.</li><li>Собрать обратную связь от разных групп (ML-инженеры, пользователи, разметчики, бизнес и другие команды).</li><li>Тренироваться писать хорошие технические (и не только) тексты.</li></ul><p>Если вы хотите узнать ещё больше об организации процессов ML-разработки, подписывайтесь на наш Телеграм-канал <a href="https://t.me/varim_ml">Варим ML</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как создать эффективную команду разработчиков</title>
      <link>https://tproger.ru/articles/kak-sozdat-effektivnuyu-komandu-razrabotchikov</link>
      <comments>https://tproger.ru/articles/kak-sozdat-effektivnuyu-komandu-razrabotchikov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[AurumSoft ]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-sozdat-effektivnuyu-komandu-razrabotchikov</guid>
      <description><![CDATA[<p>Предоставили полезные рекомендации по созданию эффективной команды разработчиков с помощью найма и системы SMART.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-sozdat-effektivnuyu-komandu-razrabotchikov">Как создать эффективную команду разработчиков</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 17 Jul 2023 11:11:28 GMT</pubDate>
      <content:encoded><![CDATA[<p>Любая ИТ-компания, стремящаяся к успеху и достижению новых высот, понимает, что огромное значение имеет эффективная команда разработчиков. Ведь именно они являются двигателем инноваций и создания качественного продукта. Однако, чтобы сформировать такую команду, требуется грамотный подход и внимание к деталям.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/b03fc505-a049-44e1-a865-45afeb54aaf9.jpg" alt="" /><figcaption>www.pexels.com</figcaption></figure><p>В данной статье мы хотим предоставить полезные рекомендации по созданию эффективной команды разработчиков. Мы рассмотрим ключевые аспекты формирования команды, включая цели командной работы, подбор квалифицированных специалистов, решение конфликтов, а также методы мотивации и развития команды.</p><h2>Определение целей и задач команды</h2><p>Определение целей и задач команды – основа успешной работы проекта</p><p>Когда мы приступаем к выполнению проекта, первым шагом должно быть определение целей и задач команды. Независимо от того, какой проект мы запускаем, его главная цель всегда состоит в том, чтобы преобразоваться в конкретный продукт. Для достижения этой цели необходимо построить сильную команду и разработать продукт в соответствии с методологией SMART.</p><p>SMART: Specific (конкретные), Measurable (измеримые), Attainable (достижимые), Relevant (релевантные) и Time-bound (с ограниченным сроком).</p><p>Когда мы определили цели и требования к продукту, мы можем распределить задачи и цели среди участников команды. Каждый разработчик должен иметь свою конкретную задачу, которая соответствует его знаниям и навыкам. Важно помнить, что люди лучше работают по тем направлениям, которые их интересуют и с которыми они хорошо справляются.</p><p>Одной из важных задач руководителя проекта является правильное распределение задач в команде, учитывая специфику и таланты ее участников. Каждый член команды должен отвечать за задачи, в которых он компетентен и в которых проявляет высокую производительность. Ставить перед разработчиком задачу, которая не соответствует его интересам и способностям, может привести к недостаточной мотивации и плохим результатам работы.</p><p>При определении базовых задач проекта традиционно выделяются такие этапы планирование, анализ требований, создание дизайна, программирование, тестирование и внедрение. Однако, каждый проект уникален и может иметь свои специфические задачи, связанные с рыночной конкуренцией или потребностями клиента.</p><h2>Рекрутинг и найм квалифицированных разработчиков</h2><p>Важным фактором формирования хорошей и работоспособной команды в любой компании является наличие сотрудников с необходимыми знаниями, желаниями и опытом. Для этого рекомендуется привлекать не только разработчиков, обладающих экспертизой в вашей области, но и молодых специалистов, которым присуще стремление к прогрессу и свежим идеям. Хотя им может потребоваться больше времени на решение задач, такие члены команды всегда готовы принять участие в обсуждениях и стимулировать команду. Идеальным вариантом будет создание команды, в которой опытные разработчики обучают молодых коллег, создавая благоприятную среду для обучения.</p><p>Как рекрутировать и нанимать квалифицированных разработчиков – вопрос, с которым сталкиваются многие компании, особенно те, которые имеют ограниченный бюджет. На первый взгляд может показаться, что нанять лучшего специалиста – это единственный способ успешно завершить проект. Однако, это не всегда так.</p><p>При планировании найма разработчиков необходимо учитывать бюджет и цели проекта. На самом деле, доступные средства не всегда могут позволить нанять лидера отрасли. В таких случаях оборотной стороной медали является возможность нанять сотрудников с небольшим опытом, но с большим желанием.</p><p>Находить таких специалистов можно на различных ресурсах, таких как:</p><ul><li>hh.ru;</li></ul><ul><li>Работа.ру;</li></ul><ul><li>Кадровые агентства.</li></ul><p>Однако, перед приемом на работу рекомендуется проверить знания и опыт потенциальных кандидатов. Это можно сделать, предоставив тестовые задания или проведя тестирование в целом.</p><p>Также не забывайте, что для создания эффективной команды преимущественно необходимо полагаться на знания и опыт руководителя. Руководитель команды должен быть хорошо ознакомлен с отраслью и иметь представление о наилучших практиках, чтобы обеспечить эффективное выполнение проекта.</p><blockquote>Опыт – уникальный инструмент, который является неотъемлемым атрибутом профессионализма руководителя. Он проявляется в глубине мысли, проницательности решений и проникновенности к ожиданиям команды. Именно опыт, направленный потоком разума и мудрости, придает импульс команде, направляя ее на путь высочайшей эффективности и достижения масштабных успехов. В отсутствие же этого опыта, команде грозит потеря направления и оказание в лабиринте бесцельных усилий. Поэтому, руководитель должен непрерывно стремиться к обогащению своего опыта, чтобы возглавляемая им команда сияла ярким светом достижений и профессионализма.</blockquote><h2>Создание привлекательной рабочей среды</h2><p>Нельзя забывать о том, что даже если вам удастся собрать идеальную команду разработчиков, для поддержки её работоспособности необходимо создавать комфортную рабочую среду, в которую входит:</p><h3>1. Обеспечениекомфортных условий работы и возможности для творчества</h3><p>Это включает в себя обеспечение комфортного рабочего пространства, доступ к необходимым инструментам и ресурсам, поддержку и уважение коллег, возможность самовыражения и экспериментов, а также создание стимулирующей атмосферы для развития творческого мышления и идей.</p><blockquote>Необходимо помнить, что разработчики – это не просто команда, а творческий коллектив. И только предоставив им полную свободу действий, мы сможем достичь максимальной эффективности и результативности в их работе.</blockquote><h3>2. Вдохновляющееруководство и обратная связь</h3><p><b></b>Разработчики нуждаются в поддержке и руководстве со стороны высококвалифицированных профессионалов. Важно давать им полную информацию о проекте и его целях, а также предоставлять конструктивную обратную связь по результатам их работы.</p><h3>3. Развитиеи обучение разработчиков</h3><p><b></b>Информационные технологии в нашем мире развиваются с невероятной скоростью, поэтому даже высококвалифицированные специалисты должны постоянно обновлять свои знания и компетенции. Для этого компании должны выделять ресурсы, иногда финансовые, а иногда это достигается через самостоятельное обучение и личную мотивацию для достижения поставленных целей.</p><h3>4. Поощрениеи признание достижений членов команды</h3><p><b></b>Для поддержания мотивации сотрудников необходимо предоставлять им подходящую мотивацию и поддерживать их вовлеченность в проекты. Однако, просто выражение благодарности за хорошо выполненную работу и достижения в профессиональной деятельности может оказаться недостаточным. Важно также предоставлять материальные поощрения, такие как повышение зарплаты или премии, в качестве признания за успешно завершенные проекты.</p><p>Так, в компании AurumSoft также ценится и другой подход к мотивации сотрудников – признание коллектива. Вместо простой индивидуальной похвалы, акцент делается на признании и ценности вклада всего коллектива.</p><h3>5. Установкаэффективных коммуникационных каналов и инструментов</h3><p><b></b>Команда разработчиков, особенно та, которая работает над одним проектом, должна эффективно общаться друг с другом через различные коммуникационные каналы или встречаться лично. Это необходимо для быстрого решения проблем и задач. Важно поддерживать постоянное коммуникацию, особенно когда несколько человек работают над одной частью проекта. Без коммуникации эффективность команды может снижаться, а проект может и вовсе останавливаться. Взаимная поддержка и совместное обсуждение идей также очень важны.</p><p>В целом, создание привлекательной рабочей среды для разработчиков требует внимания к их потребностям и желаниям. Важно обеспечивать свободу творчества, поддерживать и развивать их профессиональные навыки, признавать и поощрять их достижения, а также обеспечивать эффективную коммуникацию внутри команды. Только в такой среде разработчики смогут достичь высоких результатов и привести компанию к успеху.</p><h2>Управление конфликтами и разрешение проблем</h2><p>Команда разработчиков состоит из людей со своими эмоциями, что, несомненно, может привести к возникновению конфликтов в коллективе. Именно поэтому руководителю важно чутко реагировать на напряженность, уметь определять стадии развития конфликта и распознавать его признаки. Кроме того, именно на этапе напряженности руководитель должен вмешиваться и активно участвовать в управлении конфликтом, так как на данной стадии он лучше всего поддается контролю. Главная цель состоит этих действий в минимизации деструктивных проявлений и негативного влияния конфликта на результативность работы команды.</p><p>Руководитель группы должен иметь хороший понимание настроений внутри команды. Он должен быть способен находить консенсусы и искать компромиссы, чтобы удовлетворить интересы каждого участника. Это требует от руководителя умения эмпатии и понимания точек зрения различных сторон. Кроме того, важно научиться эффективно общаться, стимулировать диалог и создавать открытую и доверительную атмосферу в команде, где каждый чувствует себя услышанным и уважаемым.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/3e02740e-7180-44e4-b609-b515fc2c1031.jpg" alt="" /><figcaption>www.pexels.com</figcaption></figure><h2>Контроль и оценка производительности команды</h2><p>Создание команды разработчиков предусматривает также контроль и оценку производительности, которые включают в себя:</p><h3>1.tУстановка метрик и критериев оценки производительности</h3><p>Одной из ключевых задач при контроле и оценке производительности команды является установка метрик и критериев оценки. Каждая команда и проект имеют свои специфические цели и задачи, поэтому необходимо определить параметры для измерения успешности и эффективности работы. Примерами таких метрик могут быть время выполнения конкретных задач, качество продукта или уровень удовлетворенности заказчиков.</p><h3>2.tРегулярное отслеживание и обратная связь</h3><p>Регулярное отслеживание производительности команды является неотъемлемой частью контроля работы. Руководитель должен установить систему отслеживания и плановые обзоры, чтобы иметь представление о текущем состоянии работы и прогрессе достижения целей. Кроме того, необходимо предоставить команде обратную связь, сообщать о хорошей работе и указывать на области, требующие улучшения. Это поможет команде быть информированной и мотивированной на улучшение своей производительности.</p><h3>3.tВнесение необходимых корректировок и улучшений</h3><p>Контроль и оценка производительности команды должны включать в себя возможность внесения корректировок и улучшений в работу. Когда руководитель обнаруживает несоответствия в выполнении задач или недостаточную эффективность, необходимо предпринять соответствующие меры. Это может быть перераспределение ролей и задач, обучение или тренинг для сотрудников, или внесение изменений в рабочие процессы. Цель состоит в том, чтобы максимально оптимизировать работу команды и добиться высокой производительности.</p><h2>Заключение</h2><p>В заключении можно подчеркнуть, что эффективная команда разработчиков является ключевым компонентом успеха ИТ-компании. Важно не только найти и подобрать правильных участников команды, но также научиться эффективно работать вместе.</p><p>Команда AurumSoft надеется, что представленная статья оказалась полезной для вас, и вы смогли получить ценную информацию по созданию и управлению эффективной командой разработчиков.</p><p>Мы поддерживаем создание атмосферы, где все участники команды чувствуют себя комфортно и могут выражать свои идеи и мнения, с целью развития команды и достижения общих целей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Agile глазами тестировщика</title>
      <link>https://tproger.ru/articles/agile-glazami-testirovshhika-243350</link>
      <comments>https://tproger.ru/articles/agile-glazami-testirovshhika-243350?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Арслан Ахметжанов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/agile-glazami-testirovshhika-243350</guid>
      <description><![CDATA[<p>Автор рассказывает, как Agile помог построить гибкую систему тестирования, на примере личного опыта: работая по Scrum, он решил 40 QA-задач.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/agile-glazami-testirovshhika-243350">Agile глазами тестировщика</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 04 Jul 2023 09:16:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Всем привет! Меня зовут Арслан — я тестировщик агентства по тестированию и обеспечения качества “Кавычки”. Занимаюсь ручным тестированием. Являюсь идеологом и основателем курса “Вселенная тестирования, или Как стать тестировщиком” на Степике.</p><p>Сегодня я расскажу про то, как я внедрил гибкое тестирование, и что из этого вышло.</p><p>В 2021 году я попал на B2C проект, использующий Scrum для построения процессов.</p><p>Задачи Kanban доски проходили следующие этапы:</p><ul><li>Запланированные задачи. Здесь задачи ждут своего часа</li><li>Задачи на анализе. Здесь аналитики проектируют систему и формируют требования.</li><li>Задачи в разработке. Этап для разработчиков и дизайнеров.</li><li>Тестирование на тестовом стенде. Здесь тестировщики тестируют задачу и проводят регресс.</li><li>Тестирование на боевом стенде. Здесь тестировщики тестируют задачу и проводят тесты критического пути.</li><li>Закрытие задачи. Закрываем задачи, если все ок.</li></ul><p>На проекте была автоматизация тестирования, которая запускалась ежедневно (как мы любим) — ночью. Задачи автоматизации проходили тот же самый путь, что и задачи разработки. Только ручные тестировщики заменяли аналитиков на этапе анализа, а автоматизаторы разработчиков на этапе разработки.</p><p>Команду устраивал процесс работы. Задач было немного — работа шла по плану.</p><p>Проблемы проявились, когда на проекте поменялся Product Owner, который расчехлил водомет фич. Задач стало больше … Сильно больше.</p><p>Это привело к тому, что в колонке QA оказалось 40 задач и один тестировщик — я.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/4f361820-03fe-4002-b977-432c038d089c.jpg" alt="" /></figure><p>Задачи часто возвращались. Дедлайны воскрешались. Причины были следующие:</p><ul><li>Ожидаемый результат тестировщиков не совпадал с ожидаемым результатом разработчиков. Например, есть список со странами. В этом списке присутствует значение “Весь мир”. В требовании не было правила, описывающего логику работы данного пункта. Итог — можно было выбрать “Весь мир” и другие страны.</li><li>Отсутствие подсказок пользователю. Например, есть валидация поля “Email пользователя” по следующей маске “символы@символы.домен”. Если указать несуществующий домен, то выводилась неинформативная ошибка, не указывающая пользователю причину этой ошибки.</li></ul><p>В очередной раз вернув задачу обратно, меня осенило — а что если я буду предупреждать эти ошибки, а не находить их?  Я начал изучать всевозможные практики построения процесса тестирования, в основе которых лежит Agile. Книги, статьи и записей докладов. И я выявил нашу проблему.</p><h2>Проблема</h2><p>Наш процесс работы выглядел так:</p><ol><li>Бизнес поставил задачу.</li><li>Аналитики и дизайнеры спроектировали систему.</li><li>Разработчики написали код.</li><li>Тестировщики проверили.</li></ol><p>В итоге тестировщик привлекается к работе на этапе тестирования, будто это Водопадная модель работы. Да, процесс разработки делим на итерации, но в конечном итоге каждая итерация представляет собой мини-водопад. При таком подходе процесс тестирования начинается, когда разработка уже завершена. Тестировщики могут лишь найти баги или предложить улучшение, на которое уйдет время.</p><p>В итоге мы получаем следующие проблемы:</p><ul><li>Неравномерная работа тестировщиков: то задачи отсутствуют, то завал перед релизом.</li><li>Требования, содержащие ошибки.</li><li>Частые возвраты задач на предыдущие этапы.</li><li>Низкое покрытие автотестами.</li></ul><p>Исходя из этого можно сделать следующий вывод — Agile не такой уж и гибкий? К счастью, это не так. На самом деле проблема не в Agile, а в его неправильном использовании.</p><p>Agile — это не только группа методологий, но и способ мышления, в основе которого лежит задача — сделать качественный продукт, удовлетворяющий потребности конечного пользователя. Данный способ мышления должен присутствовать у каждого члена команды разработки: от менеджеров до специалистов тех.поддержки.</p><p>Главное — понять, что использование инструментов типа систем контроля воркфлоу, как Jira или TeamCity и проведение ежедневных дейли-митингов не делают нас Agile-командой. Agile-командой является та команда, каждый член которой понимает свою ответственность за качество продукта. Качество продукта определяет не только код. Качество продукта начинается с требований. А как проверить качество требований? Так же как и проверить качество кода — тестировать.</p><blockquote>«Перехват ошибок на ранних стадиях проекта представляет собой наименее затратный способ обеспечения качества продукта … В разработке программного обеспечения есть дилемма: дефекты обходятся дорого, но устранение дефектов также обходится дорого. Однако, большинство дефектов в итоге превышают средства, которые были бы затрачены на их предотвращение».</blockquote><p>Необходимо привлекать тестировщиков на все этапы разработки продукта, начиная с бизнес-требований. Чем раньше найден баг, тем дешевле его устранение, так как время разработки сильно сокращается. Согласно исследованию “Национального института стандартов и технологий США” ситуация следующая:</p><figure><img src="https://media.tproger.ru/uploads/2023/07/08695d09-cbb3-44a6-b84c-9e285831893a.jpg" alt="" /></figure><p>Раннее включение тестирования в процесс разработки программного обеспечения описывает концепция Shift Left Testing. Таким образом, тестирование выявляет дефекты и уязвимости на более ранней стадии, что уменьшает время, затрачиваемое на их исправление. Shift Left Testing становится все более популярным подходом в индустрии разработки ПО, так как позволяет повысить качество и надежность продукта, при этом сократив время и затраты на разработку.</p><p>Shift Left Testing предполагает использование автоматизации тестирования, непрерывная интеграция и непрерывное развертывание (CI/CD). С их помощью разработчики могут быстро выявлять дефекты и уязвимости в коде и устранять их до того, как они приведут к серьезным проблемам.</p><p>Кроме того, Shift Left Testing помогает улучшить коммуникацию между тестировщиками и другими членами команды разработки.</p><figure><img src="https://media.tproger.ru/uploads/2023/07/a2056a9d-b981-4b52-83b4-155ec5aa6d20.jpg" alt="" /></figure><h2>Решение</h2><p>Сначала мы переработали процесс разработки и тестирования. Добавили новые этапы, учитывая наши проблемы:</p><ul><li>Тестирование требований — это процесс проверки требований к продукту или проекту. В ходе этого тестирования устанавливается, насколько корректно требования описывают работу системы, а также проверяется их соответствие ожиданиям и потребностям пользователей.</li><li>Тестирование макетов. Тестировщик проверяет удобство использования и насколько пользователям понятна та или иная функция, и нужна ли она им вообще. Оно направлено на выявление потенциальных проблем в пользовательском интерфейсе, навигации и обработке ошибок.</li></ul><p>В итоге у нас получился следующий процесс разработки:</p><figure><img src="https://media.tproger.ru/uploads/2023/07/667407fe-5232-41b5-a713-a8f18cc87d32.jpg" alt="" /></figure><p>Также мы пересмотрели стратегию автотестов. Автотесты должны запускаться не каждую ночь, а при релизе каждой задачи, чтобы получить максимальную выгоду от Shift Left Testing.</p><p>Запуская автотесты регулярно, можно получить следующие преимущества:</p><ul><li>Регулярный запуск заставляет людей реагировать на результаты. Если автотест падает, то скорее всего где-то есть баг, нуждающийся в исправлении.</li><li>Благодаря регулярному прогону, можно отследить закономерности в падениях тестов. Ведь тесты бывают нестабильными.</li><li>Автоматизация позволяет сократить время на проверку регресса, что поможет освободить время тестировщиков для новых задач.</li></ul><p>Но есть проблема — мы не можем запускать все тесты нашего набора, при каждом деплое задач, так как на это уйдет много времени. Для решения задачи мы решили разделить наши тесты по пакетам:</p><ul><li>Пакет smoke-тестов проверяет критический путь пользователя и проверяет работу всех служб. Эти API-тесты и UI-тесты, которые запускаем при каждом деплое приложения.</li></ul><ul><li>Функциональные пакеты тестов — детальная проверка работы каждого раздела приложения. В связи с тем, что выполнение функциональных тестов требует большего времени, решено перенести их на уровень API. Тестирование на уровне API позволяет проводить тесты быстрее. Данные тесты запускаем в зависимости от задач релиза.</li></ul><ul><li>Полный пакет тестов направлен на проверку работы приложения в целом. Основная цель такого набора заключается в проверке корректности взаимодействия различных компонентов приложения, включая обращения к различным базам данных и другим сервисам. Большая часть этого набора составляют тесты пользовательского интерфейса (UI), так как они проверяют взаимодействие конечного пользователя с системой. Эти тесты запускаем каждую ночь.</li></ul><h2>Итог</h2><p>Закончив внедрение нового процесса разработки было обнаружено:</p><ul><li>Требования стали качественными. Споров насчет ожидаемого результата снизились в разы.</li><li>Задачи стали реже возвращаться, что ускорило время доставки фич пользователю.</li><li>Благодаря новой стратегии автотестов, количество багов пропущенных на боевой стенд уменьшилось, что позволило разгрузить команду тех. поддержки. Также ручные тестировщики все меньше тестируют регресс. Надеюсь, скоро вообще перестанут.</li></ul><p>Данный опыт позволил мне выделить главные принципы в работе тестировщика в Agile-команде:</p><ul><li>Сотрудничество с другими членами команды: Тестировщик должен активно сотрудничать с другими членами команды. Он должен принимать участие в планировании, обсуждении требований и определении приоритетов.</li></ul><ul><li>Создание и поддержание автоматизированных тестов: Команда тестирования должна создавать и поддерживать автоматизированные тесты для обеспечения качества продукта и быстрого обнаружения ошибок.</li></ul><ul><li>Тестирование на ранней стадии: Тестировщик должен начинать тестирование на ранних стадиях разработки, чтобы обнаруживать ошибки как можно раньше и сокращать время на их исправление.</li></ul><ul><li>Постоянное улучшение процесса: Тестировщик должен постоянно улучшать процесс тестирования и внедрять новые методы и инструменты для повышения качества продукта и ускорения процесса разработки.</li></ul><p>При раннем тестировании необходимо уделить внимание правильному планированию, выбору тестовых сценариев и их автоматизации, а также внедрению средств непрерывной интеграции и непрерывной доставки (CI/CD).</p><p>Напоследок, хочу привести цитату из книги “Как тестируют в Google”:</p><blockquote>“В итоге качество достигается предотвращением, а не выявлением багов…”</blockquote><p>P.S. Кстати о книгах. Вот хорошие книжки для изучения темы:</p><ol><li>Agile-тестирование. Обучающий курс для всей команды. Авторы: Джаннет Грегори и Лайза Криспин</li><li>Как тестируют в Google. Авторы: Уиттакер Д., Арбон Д., Каролло Д.</li><li>Экстремальное программирование. Разработка через тестирование. Автор: Кент Бек</li></ol><p>Не судите строго — это мой первый опыт публикации. Спасибо за внимание!</p>]]></content:encoded>
    </item>
    <item>
      <title>Как сделать разработку эффективнее за счет тестирования прототипа</title>
      <link>https://tproger.ru/articles/kak-povysit-effektivnost-razrabotki-i-izbezhat-naprasnyh-trat-resursov-i-vremeni-za-schet-testirovaniya-prototipa</link>
      <comments>https://tproger.ru/articles/kak-povysit-effektivnost-razrabotki-i-izbezhat-naprasnyh-trat-resursov-i-vremeni-za-schet-testirovaniya-prototipa?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Мария Юшина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-povysit-effektivnost-razrabotki-i-izbezhat-naprasnyh-trat-resursov-i-vremeni-za-schet-testirovaniya-prototipa</guid>
      <description><![CDATA[<p>Рассказываем, как улучшить разработки при помощи тестирования прототипов, чтобы избежать лишних трат времени и ресурсов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-povysit-effektivnost-razrabotki-i-izbezhat-naprasnyh-trat-resursov-i-vremeni-za-schet-testirovaniya-prototipa">Как сделать разработку эффективнее за счет тестирования прототипа</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 03 Jul 2023 11:24:11 GMT</pubDate>
      <content:encoded><![CDATA[<figure><img src="https://media.tproger.ru/uploads/2023/06/891c7e78-96b8-4f6c-84b5-e791ace25595.jpg" alt="" /></figure><p>Часто в процессе работы над продуктом допускаются ошибки, что приводит к необходимости тратить время и ресурсы на их исправление. Особенно это относится к разработке веб-сайтов, где неправильный дизайн или функциональность могут привести к негативному впечатлению пользователей и потере потенциальных клиентов.</p><p>Мы в digital-агентствe Air Production строго соблюдаем эффективный способ избежать ненужных затрат и улучшить процесс разработки — это тестирование прототипа сайта.</p><p>Это процесс проверки функциональности и эффективности прототипа продукта или системы. Прототипы разрабатываются для предоставления предварительного представления о конечном продукте, чтобы проверить его пользовательский интерфейс, функциональные возможности и эргономику.</p><p>Тестирование прототипов помогает выявить потенциальные проблемы и недоработки прототипа, что позволяет улучшить его перед дальнейшей разработкой. Тестирование может включать в себя проверку пользовательского опыта, функционального поведения, производительности и совместимости с другими системами.</p><p>Тестирование прототипов может проводиться с помощью ручного тестирования или автоматизированных инструментов тестирования. Результаты тестирования прототипов могут использоваться для корректировки и улучшения дизайна и/или функциональности прототипа перед его окончательной разработкой и выпуском.</p><p>Существует несколько типов прототипов в зависимости от того, как они создаются и используются.</p><h2>Наиболее распространенные типы прототипов</h2><h3>1. Бумажные прототипы</h3><p><b></b>Интересным и уникальным аспектом тестирования прототипов является использование методики “бумажного прототипирования”. Это метод, который позволяет быстро создать прототипы на бумаге или карточках, после чего пользователи могут взаимодействовать с ними, как с живым продуктом.</p><p>Бумажное прототипирование имеет несколько преимуществ. Во-первых, оно позволяет экономить время и ресурсы, так как создание бумажного прототипа намного проще, чем разработка полноценного цифрового прототипа. Во-вторых, оно способствует быстрой обратной связи со стороны пользователей, так как они могут легко выражать свои мысли и предложения, перерисовывая или добавляя элементы на бумажном прототипе.</p><p>Бумажное прототипирование также может помочь раскрасить атмосферу тестирования и сделать его более интерактивным. Наблюдая, как пользователи физически взаимодействуют с бумажным прототипом, вы можете участвовать в игровом процессе с ними, задавая дополнительные вопросы и предлагая различные сценарии использования.</p><p>Бумажные прототипы также могут быть использованы для проведения быстрых итераций тестирования. Если в результате тестирования было выявлено несколько проблем или улучшений, вы легко можете внести изменения, перерисовав некоторые элементы на бумаге.</p><h3>2. Интерактивные прототипы</h3><p>Эти прототипы создаются с использованием специальных инструментов для проектирования интерфейсов. Они позволяют пользователям взаимодействовать с прототипом таким же образом, как с конечным продуктом. Интерактивные прототипы могут имитировать действия, такие как нажатия кнопок, заполнение форм, переходы между экранами и другие интерактивные элементы.</p><h3>3. Цифровые прототипы</h3><p>Это продвинутая форма прототипов, которая создается с использованием специализированного программного обеспечения для проектирования и прототипирования. Цифровые прототипы могут охватывать более широкий спектр функций и возможностей, чем бумажные или интерактивные прототипы, и могут быть более реалистичными и точными в отображении конечного продукта.</p><h3>4. Функциональные прототипы</h3><p><b></b>Эти прототипы создаются с целью проверки основных функций и возможностей продукта. Они часто используются для тестирования производительности, совместимости и надежности продукта. Функциональные прототипы могут быть созданы с использованием кодирования или программирования, чтобы симулировать работу реального продукта.</p><h3>5. Презентационные прототипы</h3><p><b></b>Эти прототипы создаются с учетом исключительно визуального аспекта продукта. Они обычно используются для демонстрации дизайна, стилистики, композиции и расположения элементов на продукте. Презентационные прототипы не фокусируются на функциях продукта, а скорее на эстетике его внешнего вида и восприятии пользователем.</p><p>Это только несколько основных типов прототипов, и каждый из них может быть приспособлен к конкретной потребности и цели проекта. Выбор типа прототипа зависит от требований и целей, которые нужно достичь в конечном продукте.</p><h2>Шаги для тестирования прототипа</h2><p>Тестирование прототипа является важным этапом в разработке нового продукта или функциональности. Ниже подробно описаны шаги, выполняемые при тестировании прототипа:</p><h3>1. Определение целей тестирования прототипа</h3><p><b></b>В этом шаге определяются конкретные цели, которые требуется достичь с помощью тестирования прототипа. Цели могут быть различными, в зависимости от потребностей проекта, например, проверка функциональности, удобства использования, эстетической привлекательности и др.</p><h3>2. Создание тестового плана</h3><p><b></b>Тестовый план содержит информацию о том, какие тесты нужно выполнить, перечень тестовых сценариев, требования, используемые данные и ресурсы. В нем также указывается последовательность выполнения тестов и время, которое нужно потратить на каждый этап тестирования.</p><h3>3. Разработка тестовых сценариев</h3><p><b></b>В этом шаге разрабатываются конкретные сценарии или тестовые случаи, которые будут использоваться при тестировании прототипа. Они описывают шаги, которые требуется выполнить для прототипа, чтобы проверить его функциональность, эргономику, производительность и т.д.</p><h3>4. Подготовка тестовых данных</h3><p><b></b>Для успешного тестирования прототипа может понадобиться подготовка разнообразных данных, которые будут использованы в тестовых сценариях. Это могут быть реальные данные, фиктивные данные или симуляции, чтобы покрыть различные сценарии использования.</p><h3>5. Выполнение тестовых сценариев</h3><p><b></b>В данном шаге выполняются разработанные тестовые сценарии. Пользователи либо тестировщики приступают к взаимодействию с прототипом, выполняют необходимые действия и следуют заданным шагам.</p><h3>6. Анализ результатов</h3><p><b></b>Полученные результаты сравниваются с ожидаемыми результами, указанными в тестовом плане. Ошибки, проблемы или несоответствия выявляются и регистрируются, а также анализируется причина возникновения каждой проблемы.</p><h3>7. Отчет о тестировании</h3><p><b></b>По завершению тестирования составляется отчет, содержащий детальную информацию о выполненных тестах, обнаруженных проблемах, ошибках и рекомендациях по их исправлению. Данный отчет важен для команды разработчиков, чтобы они могли анализировать проблемы и внести соответствующие изменения.</p><h3>8. Решение проблем</h3><p><b></b>Разработчики прототипа принимают во внимание отчет о тестировании и исправляют обнаруженные проблемы или ошибки в прототипе. Исправления обычно выполняются на основе приоритета проблем и важности их исправления для функциональности или пользовательского опыта.</p><h3>9. Повторное тестирование</h3><p><b></b>После внесения изменений в прототип выполняется повторное тестирование, чтобы проверить, что исправления были успешными и что все функциональные проблемы были устранены.</p><h3>10. Итеративный процесс</h3><p><b></b>Тестирование прототипа может потребовать нескольких итераций, в которых выполняются дополнительные тесты, исправляются обнаруженные проблемы и повторно проверяется функциональность прототипа. Этот процесс повторяется до тех пор, пока прототип не удовлетворяет всем требованиям и ожиданиям.</p><h3>11. Окончательное подтверждение</h3><p><b></b>После успешного выполнения всех тестов и исправления проблем прототип можно считать окончательно утвержденным и готовым для дальнейшей разработки и реализации.</p><h2>Почему тестирование прототипов экономит время</h2><p>Тестирование прототипов экономит время по нескольким причинам:</p><h3>1. Раннее выявление проблем</h3><p>Прототип позволяет проверить идею или концепцию продукта на ранней стадии разработки. Пользователи могут реагировать на него и выявлять проблемы или недостатки, которые затем можно исправить. Это помогает избежать потери времени и ресурсов на создание полноценного продукта, который может оказаться неудачным или неэффективным.</p><h3>2. Быстрая итерация</h3><p>Прототипы позволяют быстро создавать и тестировать различные варианты и решения. Используя прототипы, разработчики и дизайнеры могут быстро изменять и улучшать продукт на основе обратной связи пользователя. Это ускоряет процесс разработки и сокращает время до запуска конечного продукта на рынок.</p><h3>3. Улучшение коммуникации</h3><p>Прототипы помогают лучше понять требования и ожидания пользователей. Создание визуального образца продукта позволяет более наглядно и эффективно передавать идеи и концепции команде разработчиков и заинтересованным сторонам. Это сокращает время на объяснение, обсуждение и уточнение деталей и помогает лучше понимать перспективу конечного продукта.</p><h3>4. Раннее обучение пользователей</h3><p>Прототипы могут быть использованы для обучения пользователей и сбора их отзывов и предпочтений. Ранняя обратная связь позволяет учесть потребности пользователей в процессе разработки и внести соответствующие изменения в прототип. Это помогает создать более удобный, функциональный и эффективный продукт, который лучше отвечает потребностям пользователей.</p><p>Таким образом, тестирование прототипов экономит время, позволяя более эффективно использовать ресурсы и сокращая время на разработку, исправление ошибок и усовершенствование продукта на ранних стадиях его создания.</p><h2>Для чего тестируют прототипы</h2><p>Изменения в тестировании прототипов возникают для различных целей и могут быть связаны с различными аспектами процесса. Некоторые из возможных изменений включают:</p><h3>1. Расширение функциональности</h3><p>По мере развития проекта и добавления новых функций и возможностей, может потребоваться изменить прототип для включения этих новых элементов. Новые функции могут быть протестированы и оценены пользователем, чтобы удостовериться в их полезности и соответствии требованиям.</p><h3>2. Изменение интерфейса</h3><p>Интерфейс прототипа может быть усовершенствован или изменен для повышения удобства использования или улучшения пользовательского опыта. Эти изменения могут быть основаны на обратной связи от пользователей или на изменении требований и целей проекта.</p><h3>3. Изменение дизайна</h3><p>Визуальный аспект прототипа также может быть изменен для повышения его привлекательности и соответствия бренду или целевой аудитории. Это может включать изменение цветовой гаммы, типографии, графических элементов и общего стиля прототипа.</p><h3>4. Изменение тестовых случаев</h3><p>По мере развития продукта и основываясь на полученных данных от пользователей, тестовые случаи могут быть изменены и дополнены. Новые функции могут требовать новых тестовых случаев, а также обновление существующих, чтобы убедиться в корректности функционирования и удовлетворении потребностей пользователей.</p><h3>5. Изменение фокуса тестирования</h3><p>В начале разработки прототипа может быть ориентирован на определенные аспекты или задачи, однако с течением времени и получением обратной связи от пользователей, цель тестирования может измениться. Может потребоваться переориентирование и привлечение внимания к другим аспектам или функциям продукта.</p><p>Важно понимать, что изменения в тестировании прототипов являются неотъемлемой частью процесса разработки продукта. Они позволяют оптимизировать продукт, учитывая изменяющиеся требования и ожидания пользователей.</p><h2>Советы для тестирования прототипов</h2><p>Вот несколько рекомендаций, которые помогут вам с тестирования прототипа:</p><h3>1. Определите цели и задачи</h3><p>Перед началом тестирования прототипа сайта четко определите цели и задачи, которые вы хотите достичь. Это может быть проверка навигации, понимание пользователей или оценка визуальной привлекательности. Чем более конкретные цели, тем легче будет оценить результаты тестирования.</p><h3>2. Определите целевую аудиторию</h3><p>Выберите группу пользователей, которые соответствуют вашей целевой аудитории. Убедитесь, что они имеют достаточный уровень опыта и знаний для оценки прототипа дизайна. Это поможет вам получить более релевантные и полезные обратные связи.</p><h3>3. Используйте прототипирование с высокой степенью детализации</h3><p>Создайте прототип дизайна сайта, который максимально приближен к конечному продукту. Это позволит пользователям оценить визуальные и функциональные аспекты сайта более точно.</p><h3>4. Проведите пользовательское тестирование</h3><p>Пригласите пользователей из вашей целевой аудитории для участия в тестировании прототипа. Попросите их выполнить различные задачи на сайте и обратить внимание на их впечатления, проблемы, которые они обнаружили, и предложения по улучшению.</p><h3>5. Собирайте и анализируйте обратную связь</h3><p>Запишите все комментарии, предложения и замечания от участников тестирования. Выделите общие тенденции и проблемы, чтобы понять, где нужно внести изменения и улучшения.</p><h3>6. Внесите коррективы и повторите тестирование</h3><p>Используйте полученную обратную связь для внесения необходимых изменений в прототип дизайна. Повторите тестирование снова, чтобы проверить, как эти изменения повлияли на эффективность и удовлетворение пользователей.</p><h3>7. Учтите мобильную адаптивность</h3><p>Проверьте, как прототип дизайна сайта выглядит и функционирует на различных устройствах, включая мобильные телефоны и планшеты. Убедитесь, что пользователи могут легко взаимодействовать с сайтом на любом устройстве.</p><h2>Зачем продолжать тестирование</h2><p>Продолжайте тестирование на протяжении всего процесса разработки:</p><p>Тестирование прототипа дизайна должно быть непрерывным процессом, который проводится на различных этапах разработки сайта. Это позволит рано обнаруживать и исправлять проблемы, что сэкономит время и ресурсы в долгосрочной перспективе.</p><p>Такое тестирование позволяет проверить логику и функциональность сайта, а также оценить его с точки зрения юзабилити, что является важным аспектом для пользователей. Обнаружение и устранение логических ошибок на ранних стадиях разработки значительно сокращает затраты времени и ресурсов.</p><p>Тестирование прототипа дизайна сайта — это всего лишь один из этапов тестирования приложения, но имеет высокое значение. Благодаря тщательному тестированию прототипа вы сможете идентифицировать потенциальные проблемы, ошибки и недочеты на ранних стадиях разработки. Это позволит внести необходимые корректировки и улучшения, избежав траты времени и ресурсов на последующие изменения. Таким образом, вы повысите эффективность разработки сайта и увеличите удовлетворение пользователей, создавая продукт, который отвечает их потребностям и ожиданиям.</p>]]></content:encoded>
    </item>
    <item>
      <title>Путь тестировщика: как не стать врагом создателей продукта, выполняя свою работу</title>
      <link>https://tproger.ru/articles/put-testirovshhika-kak-ne-stat-vragom-sozdatelej-produkta-vypolnyaya-svoyu-rabotu</link>
      <comments>https://tproger.ru/articles/put-testirovshhika-kak-ne-stat-vragom-sozdatelej-produkta-vypolnyaya-svoyu-rabotu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Елена Пушкова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/put-testirovshhika-kak-ne-stat-vragom-sozdatelej-produkta-vypolnyaya-svoyu-rabotu</guid>
      <description><![CDATA[<p>Делимся опытом, как построить хорошие отношения с командой разработки и при этом выловить все баги.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/put-testirovshhika-kak-ne-stat-vragom-sozdatelej-produkta-vypolnyaya-svoyu-rabotu">Путь тестировщика: как не стать врагом создателей продукта, выполняя свою работу</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 23 Jun 2023 09:37:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Задача тестировщика — находить изъяны в продукте, созданном другими. Но если разработчики ревностно относятся к поиску багов и считают тестировщика лишним звеном, конфликта не избежать. Расскажем, как не стать врагом команды разработки.</p><h2>Творцы-разработчики и злодеи-тестировщики</h2><p>Руководителю проекта необходимо выпустить новую фичу или апдейт вовремя. Но на каком-то этапе процессы встали, и мы получили один из двух кейсов:</p><ul><li>Тестировщик получил продукт на проверку со сроком «вчера» вместо положенных 5 дней, потому что разработчики не успели с доработками. И приходит продлевать дедлайн.</li><li>Тестировщика торопили с репортами, и он не успел подробно описать баги. Разработчик не понимает, что править.</li></ul><p>В обоих случаях тестировщик выступает в роли злодея, который не делает продукт, а только критикует его. К тому же делает это слишком долго и не объясняет подробно, что не так. В итоге нередко возникают споры.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/c4f1bdcf-742a-4396-ba78-bcc0a5ac01b8.jpg" alt="" /></figure><h2>Как снизить вероятность конфликта</h2><p>Чтобы отношения разработчиков и тестировщиков не переросли в перманентный конфликт, надо общаться. Во-первых, с коллегами, чтобы понимать причины задержек на их стороне. Во-вторых, с менеджером, чтобы еще на этапе, когда понятно, что сроки будут сдвинуты, спланировать новый реалистичный дедлайн и предупредить заказчика.</p><p>Вот несколько полезных советов:</p><ul><li>Оговаривайте сроки заранее. Регулярные встречи и предварительные договоренности о дедлайнах на каждом этапе исключат взаимное недовольство.</li><li>Подробно описывайте баги. Даже если мало времени. Не говорите «вот это не работает» — давайте детальное описание, подкрепленное логами, ссылками на тестовую документацию или мнением аналитика, который подтвердит, что перед нами «баг, а не фича».</li><li>Сразу переходите к сути. В гайдах по обратной связи учат, что сотрудника нужно похвалить, прежде чем переходить к критике. В тестировании на это нет времени. Когда мы работаем над устранением недочетов, важно именно устранить недочеты. А разработчика хвалят после релиза —например, на ретро-созвоне, когда команда будет обсуждать события и процессы, случившиеся в течение спринта.</li><li>Обходитесь без колких формулировок. Если вы напишете разработчику «Допустить такую ошибку мог только полный…» — конфликт обеспечен. Важно подбирать нейтральные формулировки, особенно если команда для вас новая и неясно, какой подход работает с тем или другим специалистом. По этой же причине лучше избегать шуток.</li><li>Если конфликт возник, переходите в приватный разговор. Не нужно раздувать ситуацию публично. Устройте отдельный технический митинг и обсудите с разработчиком все детали тет-а-тет или вместе со scrum-мастером.</li><li>Совет для новичков: обращайтесь за помощью к старшим товарищам. Если возникла конфликтная ситуация, не стесняйтесь обращаться к руководителю направления или scrum-мастеру, который окажет психологическую поддержку и завизирует баги.</li></ul><p>Идеально, когда у тестировщиков есть хотя бы минимальные навыки программирования, а у разработчиков — понимание процесса тестирования. Это позволит им лучше понимать друг друга. Например, в Газпромбанке разработчики и тестировщики обладают соответствующими скиллами. К тому же у нас принято, чтобы специалисты обоих направлений участвовали в устранении багов наравне.</p><h2>А что еще сделали мы</h2><p>Я верю, что хороший продукт получается, когда в команде выстроены хорошие рабочие отношения. А для этого тестировщикам необходимо налаживать коммуникацию со всей командой разработки. От этого выиграют все: компания получит продукт высокого качества, а пользователи будут реже сталкиваться с багами.</p><p>В Газпромбанке над экологичными взаимоотношениями в коллективе работают<a href="https://www.gpbspace.ru/blog/541/"> scrum-мастера</a>: они выстраивают процессы, помогают создавать эффективные коммуникации и достигать целей.</p><p>Кроме того, мы внедрили так называемые<a href="https://www.gpbspace.ru/blog/474/"> Value Streams</a> — кросс-функциональные команды, объединяющие разных экспертов от бизнеса и IT, которые вместе работают над продуктом. Например, улучшают клиентский путь по открытию и пополнению вкладов.</p><p>При возникновении конфликтной ситуации, тестировщик всегда может обратиться к scrum-мастеру или же к команде стрима.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как создать мобильное приложение для бизнеса</title>
      <link>https://tproger.ru/articles/kak-sozdat-mobilnoe-prilozhenie-dlya-biznesa</link>
      <comments>https://tproger.ru/articles/kak-sozdat-mobilnoe-prilozhenie-dlya-biznesa?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[DD Planet]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-sozdat-mobilnoe-prilozhenie-dlya-biznesa</guid>
      <description><![CDATA[<p>Как создать мобильное приложение: что делать на старте, как оценить затраты, какие способы разработки оптимальны и какие нюансы учитывать.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-sozdat-mobilnoe-prilozhenie-dlya-biznesa">Как создать мобильное приложение для бизнеса</a>»</p>]]></description>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 20 Jun 2023 11:57:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сегодня владельцам бизнеса предлагается множество возможностей для создания мобильного приложения. При достаточном бюджете его можно доверить профессионалам, при минимальном — разработать самостоятельно или с помощью конструкторов. Автор статьи — руководитель мобильной разработки DD Planet, Павел Кузнецов — рассказывает, как спланировать разработку.</p><p>Вне зависимости от выбранного пути собственно разработка — это лишь один из этапов создания приложения. Я разделил этот процесс на 6 основных шагов, в которых расскажу, что делать на старте, как оценить затраты, какие способы разработки оптимальны для вашего бизнеса и какие нюансы нужно учитывать, чтобы создать эффективное приложение.</p><h2>Шаг 1. Определите бизнес-задачу</h2><p>Первое, что необходимо понимать перед созданием мобильного приложения — то, что это не игрушка или дань моде, а рабочий инструмент, направленный на решение конкретных целей бизнеса. Причем инструмент достаточно дорогостоящий. Поэтому создавать приложение имеет смысл в том случае, когда оно будет способствовать решению вашей бизнес-задачи.</p><p>Приведу несколько примеров, когда разработка приложения оправдана: вы хотите увеличить охват целевой аудитории за счет активных пользователей мобильных устройств, упростить процессы покупки или оформления заявки, продвигать скидки и акции и т.д.</p><p>В конечном счете все это должно привести к росту прибыли, охвата или других важных для вас бизнес-показателей. Если мобильное приложение не ориентировано на это, высокие затраты на разработку могут не окупить себя.</p><h2>Шаг 2. Проанализируйте целевую аудиторию и конкурентов</h2><p>На этом этапе важно понять, пользуется ли ваша целевая аудитория мобильными устройствами и какие у нее потребности.</p><p>Приложение является довольно действенным инструментом для компаний, ориентированных на молодежь и активных пользователей гаджетов. Если ваш бизнес локальный или направлен на пожилую аудиторию — скорее всего, эффективнее и дешевле будет привлекать покупателей с помощью других каналов.</p><p>Успешное мобильное приложение не только решает задачи бизнеса, но и удовлетворяет потребности ваших клиентов или сотрудников:</p><ul><li>На вашем сайте высока доля мобильного трафика — возможно, пора переходить в мобайл.</li></ul><ul><li>Покупатели в магазине часто забывают карту лояльности — было бы удобно иметь ее в электронном виде прямо в мобильном.</li></ul><ul><li>Клиенты не всегда знают о текущих акциях — проинформируйте их об этом в приложении.</li></ul><ul><li>Боятся, что товар закончится, пока они едут в магазин — предоставьте возможность зарезервировать его в 2 клика прямо с мобильного.</li></ul><ul><li>Ваши сотрудники тратят много времени на определенные процессы – оптимизируйте их. Создайте базу знаний, CRM, внутрикорпоративные мессенджеры, портативные кассы, передающие заказы покупателей на склад и др.</li></ul><p>Эти и многие другие потребности можно закрывать с помощью мобильных приложений. Очень полезно также заглянуть к конкурентам и посмотреть, какие возможности они предоставляют в приложении и какие фишки используют.</p><h2>Шаг 3. Оцените вашу инфраструктуру данных</h2><p>Любое бизнес-приложение построено на работе с данными клиентов и самого бизнеса (бухгалтерии, склада и пр). Поэтому важно понимать, есть ли у вас необходимая инфраструктура или потребуются дополнительные затраты на ее построение.</p><p>Если компания активно работает в онлайне, скорее всего, данные собираются и хранятся в электронном виде. В этом случае существующая архитектура данных подходит для наполнения мобильного приложения. Потребуется лишь ее доработать и построить канал взаимодействия с приложением.</p><p>Если вы не собираете данные или ведете учет в бумажном виде, мобильное приложение обойдется существенно дороже. На построение только архитектуры данных придется выделить от 40% бюджета. Самый недорогой вариант — простой интернет-магазин.</p><p>Если речь идет о нейронных сетях и анализе данных, то серверные работы займут существенную часть бюджета.</p><h2>Шаг 4. Выберите способ и инструмент разработки</h2><p>Как разрабатывать приложение: самостоятельно или на заказ — зависит от вашего бюджета и желаемого результата. Давайте разберем оба варианта.</p><h3>Мобильное приложение своими руками</h3><p>Разработать приложение самостоятельно можно, когда бюджет небольшой или вовсе отсутствует. Обычно к этому варианту прибегают представители малого и среднего бизнеса, которым достаточно стандартных решений по готовым шаблонам.</p><p>Существует три варианта самостоятельной разработки приложения:</p><h4>Написание кода своими силами</h4><p>Если вы обладаете навыками программирования или готовы получить их, то вполне можете написать приложение самостоятельно. Технологии можно использовать разные: от натива (Swift или ObjectiveC для iOS, Java или Kotlin для Android) до всевозможных фреймоворков — например, Xamarin (C#), ReactNative (Javascript) или Flutter(Dart).</p><p>В этом случае затраты на разработку будут минимальны, но сам процесс, скорее всего, займет много времени. Итоговое качество продукта будет зависеть только от вас самих.</p><h4>Онлайн-сервисы для создания приложений на основе готового контента</h4><p>Это наиболее простой способ создания приложений — чтобы им воспользоваться, вам понадобится только сайт, адаптированный под мобильные устройства. Такие сервисы конвертируют браузерную версию в приложение без существенных изменений. Весь процесс может занять несколько минут. Способ подходит для небольших сайтов с качественным адаптивным дизайном или мобильной версией. Быстро, дешево и сердито.</p><p>Если вас интересует такой вариант, рекомендую также в качестве альтернативы рассмотреть возможность доработки своего сайта и создания PWA – progressive web app. Эта технология позволяет получить своеобразный гибрид сайта и приложения: в десктопе он будет отображаться как обычный сайт, а в мобильной версии — имитировать приложение. Возможно, вам окажется достаточно этого функционала и не придется делать отдельное приложение.</p><h4>Конструкторы мобильных приложений</h4><p>С их помощью уже можно создать полноценное приложение с нуля. Никакими навыками программирования обладать не нужно — вся работа ведется в визуальном редакторе. Функционал конструкторов включает как готовые шаблоны, так и отдельные элементы: формы, кнопки, иконки и т.д.</p><p>По итогам вы получите простое мобильное приложение с шаблонным дизайном. Его функционал будет ограничен только возможностями использованного вами конструктора.</p><h4>Затраты на самостоятельную разработку</h4><p>Во многих сервисах доступны бесплатный базовый функционал и Pro-версии. Стоимость платных тарифов сильно разнится в зависимости от опций, периода оплаты и пр. В среднем для создания стандартного приложения понадобится около 50-150$ в месяц.</p><p>Не забудьте, что на разработке дело не заканчивается и даже готовые решения требуют поддержки и обновлений. Многие конструкторы предлагают публикацию приложения в магазинах и дальнейшее сопровождение за дополнительную плату.</p><h3>Профессиональная разработка мобильного приложения</h3><p>С ростом бизнеса шаблонные мобильные приложения, конечно же, его задач уже не решат. Крупная компания должна предоставлять клиентам качественный сервис, удобный интерфейс и функционал, отвечающий потребностям пользователей. Кроме того, у нее должна быть возможность отстроиться от конкурентов. На этом этапе компании борются за лучший клиентский опыт, поэтому без разработчиков уже не обойтись.</p><p>Существует несколько подходов к разработке в зависимости от задач приложения, желаемых сроков реализации и используемых технологий. Как правило, команда разработчиков выбирает тот способ и инструмент, с которыми она привыкла работать. Для собственника бизнеса они не играют большого значения, но следует знать основные нюансы.</p><h4>Разработка отдельного приложения под каждую платформу</h4><p>Данный подход предполагает написание кода отдельно под Android и под iOS. Целесообразен он в тех случаях, когда требуется уникальный дизайн для каждой платформы с соблюдением всех гайдлайнов, максимальная производительность приложения и полный доступ к функциональности (дактилоскопический сканер, алгоритмы дополненной и виртуальной реальности, тонкие настройки беспроводного соединения, трансляция геолокации и т.д.).</p><p>Минусы очевидны: это наиболее затратный способ с точки зрения времени и ресурсов. Каждая операционная система предполагает свой язык программирования (Swift или Objective-C для iOS, Java или Kotlin для Android) и способ описания UI-дизайна. Это обязывает разработчиков реализовывать весь функционал для каждой из платформ по отдельности, практически без возможности переиспользования наработок одной платформы на другой. Если проект сложный или команда не имеет опыта работы с двумя операционными системами, есть вероятность, что потребуется задействовать по отдельной команде на каждую платформу.</p><h4>Кроссплатформенная разработка</h4><p>В этом случае мобильные приложения на Android и iOS разрабатываются с использованием общей бизнес-логики и с единым описанием дизайна, что снижает затраты. Наиболее популярные инструменты кроссплатформенной разработки: React Native, Xamarin (Xamarin.Forms) и Flutter. На выходе получается приложение, которое выглядит и работает одинаково на обеих платформах.</p><p>В числе недостатков такого подхода: сложность соблюдения гайдлайнов каждой платформы, ограничения используемых фреймворков (например, отсутствует доступ к каким-либо функциям устройства) и меньшее быстродействие, по сравнению с нативом. Если есть необходимость в более сложных решениях, не факт, что разработчик сможет их реализовать.</p><h4>Комбинация нативного подхода и кроссплатформенного</h4><p>Для более сложных приложений мы используем этот подход. Его особенность состоит в том, что мы имеем общую бизнес-логику, но дизайн создается отдельно под требования Android и iOS. В этом случае разработчик фактически работает с нативным кодом каждой платформы, но с помощью единого языка программирования C#. Это дает возможность переиспользовать код на обеих платформах.</p><p>В DD Planet мы используем фреймворк Xamarin, который позволяет сгладить все различия платформ и написать код на одном языке. Это оптимальный вариант для сложных приложений – он позволяет соответствовать гайдлайнам каждой платформы и решать бизнес-задачи любой сложности.</p><h4>Затраты на заказную разработку</h4><p>Стоимость профессиональной разработки мобильных приложений под ключ начинается от 500 тыс. руб. Она зависит от уровня инфраструктуры данных и сложности самого приложения.</p><h2>Шаг 5. Протестируйте</h2><p>Тестирование — важный этап, который должен сопровождать весь процесс разработки. Проще и дешевле устранить баги в самом начале, чем постоянно дорабатывать после релиза.</p><p>Что необходимо тестировать:</p><ul><li>Функционал. Оцениваем, соответствует ли приложение ТЗ и потребностям бизнеса, и проверяем работоспособность всех функций.</li></ul><ul><li>Конфигурации. Тестируем на разных устройствах, конфигурациях и версиях операционных систем.</li></ul><ul><li>Высокие нагрузки. Проверяем, как ведет себя приложение при увеличении числа активных пользователей, пиковых нагрузках, нестабильном подключении к сети, добавлении ресурсоемкого функционала и т.д.</li></ul><ul><li>Юзабилити. Анализируем удобство взаимодействия пользователей с приложением при различных сценариях поведения.</li></ul><ul><li>Безопасность. Выявляем уязвимости к сетевым атакам, вирусам и взломам, обеспечиваем безопасность пользовательских данных.</li></ul><h2>Шаг 6. Регулярно поддерживайте приложение</h2><p>Как часто требуется техническая поддержка? Если разработка и тестирование прошли с ошибками, то приложение нужно будет постоянно дорабатывать. Конечно, это не лучшая ситуация. Тем не менее, даже качественный продукт нужно регулярно поддерживать.</p><p>В среднем устранение недочетов требуется примерно раз в месяц. Учесть все при тестировании нельзя: клиенты используют огромное множество устройств с разными характеристиками, поэтому на отдельных гаджетах в любом случае будут всплывать мелкие баги.</p><p>Помимо мелких доработок, изредка появляется необходимость в масштабных обновлениях. Обычно это происходит с выходом новых девайсов, на которых приложение работает не так, как ожидалось.</p><p>Из наиболее ярких примеров — новые требования Apple к приложениям после выхода iPhone X. На обновления владельцам дали два месяца. Если спустя это время приложения отображались на устройстве некорректно, их удаляли из магазина.</p><p>Как правило, гарантийная поддержка на первое время входит в стоимость разработки.</p><h2>Краткое резюме по созданию эффективного приложения</h2><p>Создание мобильного приложения — довольно сложный и вдумчивый процесс. Даже если вы прибегнете к одному из онлайн-сервисов, гарантирующих разработку приложения за пару минут, не поленитесь провести предварительный анализ ваших потребностей, целевой аудитории и конкурентов, а также запланируйте ресурсы на дальнейшую техническую поддержку.</p><p>Продуманный подход и следование всем этапам позволят вам создать мобильное приложение без необходимости серьезных доработок в будущем, сэкономить на непредвиденных расходах и увеличить прибыльность вашего бизнеса.</p>]]></content:encoded>
    </item>
    <item>
      <title>Выбираем методологию для своего проекта</title>
      <link>https://tproger.ru/articles/vybiraem-metodologiyu-upravleniya-dlya-svoego-proekta</link>
      <comments>https://tproger.ru/articles/vybiraem-metodologiyu-upravleniya-dlya-svoego-proekta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Мария Кривоченко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/vybiraem-metodologiyu-upravleniya-dlya-svoego-proekta</guid>
      <description><![CDATA[<p>Разобрали несколько популярных методологий управления проектами и обсудили их плюсы и минусы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/vybiraem-metodologiyu-upravleniya-dlya-svoego-proekta">Выбираем методологию для своего проекта</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 16 Jun 2023 12:40:57 GMT</pubDate>
      <content:encoded><![CDATA[<p>Жизненный цикл — это стадии, которые проходит проект от момента создания до передачи в ОПЭ. Его чёткое видение и понимание позволяет команде:</p><ul><li>грамотно вести проект в рамках стратегии развития компании/организации;</li><li>вести проект в спокойном темпе;</li><li>отслеживать ход работы и статус/качество каждой вехи;</li><li>быстрее завершать проекты;</li><li>сводить к минимуму риски и ограничения;</li><li>управлять рисками, закупками, коммуникациями и интеграцией.</li></ul><p>Но не у всех получается выстроить процессы правильно. <a href="https://www.pmi.org/">По данным PMI</a>, из каждого инвестированного миллиарда долларов минимум 12% теряются из-за низкой эффективности выполнения проектов, отсутствия сил и мотивации у команды, сорванных сроков неправильно подобранных приоритетов.</p><p>Избежать этого помогает грамотно выбранная методология работы. В данной статье рассмотрим некоторые из них.</p><h2>MSCW</h2><p>Впервые этот метод использовали Oracle UK в 1994 году. Он подходит для простых проектов (где есть чёткое понимание от А до Б). Или для очень больших, растянутых по времени и трудозатратам.</p><p>Согласные буквы в MSCW обозначают степени приоритетности задач/требований:</p><ul><li>M (или must) – задачи/требования, представляющие основной функционал или ядро задачи. Например, изменение платформы, на которой должно быть представлено решение. Если цель работы — запустить продукт именно на новой платформе, первой задачей будет — установить эту самую платформу.</li><li>S (или should) – задачи/требования второго приоритета, которые ещё обязательны к исполнению и в отсутствии задач категории M становятся главными. Это, например, добавление функционала или обязательных программ для работы.</li><li>C (или could) – задачи/требования, желательные для реализации, но не обязательные для работы продукта. Например, если есть пробный период программы и нужно изучить функционал, чтобы принять решение о её покупке.</li><li>W (или would)– задачи/требования «по возможности», которыми можно пренебречь. Пример такой задачи — изменение цветовой палитры при визуализации приложения.</li></ul><p>Преимущество MSCW — в простоте. Задачи делятся только по «критичности», и их не приходится переносить в другой класс с течением времени.</p><p>Минусы:</p><ul><li>Субъективность определения приоритетов. Неотъемлемые для заказчика функции могут быть «желательными» для руководителя проекта. И «дополнительными» для разработчика. Так что приоритеты стоит обсудить «на берегу».</li><li>Какой бы, возможно, неприоритетной не стала со временем доработка из первой группы, её придётся доделать. Иначе будет невозможно приступить к задачам следующей категории.</li></ul><h2>RICE</h2><p>Эта методология позволяет оценивать каждое требование или задачу по четырём параметрам:</p><ul><li>Reach или охват — количество пользователей/транзакций/задач в измеряемую единицу день, месяц, год;</li><li>Impact или влияние — оценочная субъективная величина влияния на конечного пользователя/потребителя;</li><li>Confidence или достоверность данных при оценке охвата и влияния — количество и структура данных для подтверждения своих выводов;</li><li>Effort или требуемые усилия — оценка усилий для достижения результатов, оценивается в человекомесяцах.</li></ul><p>Полученные оценки важно и нужно использовать в системе ранжирования задач/ требований. Это поможет определить, в каком порядке их выполнять, чтобы получить максимальный эффект от реализации. Я рекомендую также перед стартом любого проекта задавать «контрольный вопрос» заказчику: сколько на самом деле стоит проект и есть ли смысл вкладывать в него столько денег.</p><p>Обращаю внимание, это входной тест, а не планирование бюджета. Данные будут давать верхнеуровневое представление о стоимости и трудозатратах, и их стоит использовать только в информационных целях.</p><p>Основное преимущество в том, что это — универсальная методология. Она позволяет почти объективно оценить приоритетность задач (данные никогда не будут точны на 100%, но об этом поговорим ниже).</p><p>Минусы:</p><ul><li>Использование RICE, требует знание основ SMART.</li><li>Модель не учитывает зависимости параметров. Например, очень трудозатратную задачу, важную для многих клиентов, откладывают и отдают предпочтение множеству задач, которые будут иметь то же влияние на клиентов по сумме, но могут оказаться потенциально дешевле;</li><li>При оценке трудозатрат приходится просчитывать риски: поведут ли себя систему некорректно, «выпадут» ли разработчики из процесса, как отреагируют на доработку пользователи и так далее. Все оценки будут субъективными, и это — дополнительная сложность.</li></ul><h2>SMART</h2><p>SMART позволяет прикинуть будущий результат и определить чёткие шаги к нему, оценить ресурсы и соответствие стратегии компании, сформулировать задачи с точки зрения бизнес-ценности по шести параметрам:</p><ul><li>Specific — точно определённая;</li><li>Measurable — измеримая;</li><li>Achievable — достижимая;</li><li>Relevant — релевантная;</li><li>Time Bound — ограниченная во времени; оптимальный срок выполнения — три, шесть или 12 месяцев.</li></ul><p>Наш мозг очень любит кратковременные цели, и делать контрольные проверки целей проекта в такие сроки — значит держать руку на пульсе. Кроме того, если проект длится слишком долго, так или иначе, происходит «выгорание».</p><p>Несколько преимуществ постановки целей с помощью SMART метода:</p><ol><li>Пять критериев исключают неоднозначные формулировки, помогают оперативно ответить на любые вопросы.</li><li>Метод не требует времени на изучение.</li><li>Метод даёт возможность распределять задачи между подразделениями и отдельными сотрудниками.</li></ol><p>Основной минус SMART в том, что при постановке цели нельзя точно сказать, достижима она или нет. Мы вводим параметры измеримости, достижимости и релевантности, но они основываются только на наших представлениях о сроках и успешности данной задачи.</p><h2>Шесть сигм</h2><p>Содержание проекта удобно подтверждать с помощью «Шести сигм». Эта система включает в себя статистические методы сбора и анализа данных и уникальный подход к организации командной работы. По ней все инициативы, связанные с исправлением или пересмотром бизнес-процессов, нужно вести как проекты.</p><p>Процесс выглядит так.</p><h2>Отбираем первую задачу</h2><p>Первый проект должен решать важную проблему и гарантировать реальную коммерческую результативность. И быть успешным, краткосрочным и «показательным». Его отбирают по нескольким критериям:</p><ul><li>экономическая целесообразность — максимальный доход/экономия;</li><li>реализуемость — наличие необходимых ресурсов;</li><li>вероятность успеха — субъективный критерий для мотивации команды на успешную реализацию;</li><li>охват — вовлечение в процесс небольшого количества бизнес-процесса;</li><li>безопасность — снижение воздействия на соседние бизнес-процессы;</li><li>стоимость реализации.</li></ul><p>В зависимости от первоначальных условий количество и значимость критериев могут меняться.</p><p>Детальное обсуждение с руководством организации и согласованность со стратегией компании позволит существенно увеличить вероятность выбора правильного проекта и результативного выполнения задач.</p><h2>Планирование действий</h2><p>Это даёт следующие преимущества:</p><ul><li>оценка практической возможности достижения поставленных целей;</li><li>верхнеуровневое выявление потенциальных рисков и неожиданных инцидентов/дефектов;</li><li>обеспечение вводных данных для оценки затрат разработки бюджетов, календарных планов и ресурсов.</li></ul><p>Планирование действий разбивается на 6 стадий:</p><ol><li>Определяем меры, необходимые для реализации проекта/задачи.</li><li>Оцениваем, сколько времени уйдёт на каждую задачу и подзадачу.</li><li>Считаем, сколько ресурсов уйдёт на каждую задачу. Сделать это до старта проекта особенно важно.</li><li>Уточняем показатели, по которым будем оценивать успешность работы.</li><li>Проверяем сроки и корректируем план.</li></ol><p>Многие допускают ошибку и формулируют проблемы в масштабах целой организации. На самом деле, чтобы система работала, стоит выбирать небольшие задачи, которые направлены на совершенствование существующих продуктов/услуг. И которые может выполнить небольшая группа.</p><p>Я собрала методологии, <a href="https://nvsu.ru/ru/Intellekt/1130/Upravlenie%20proektami%20-%20Uchebnoe%20posobie%20-%202008.pdf">которые считаются наиболее успешными</a>. Но признаю, что у каждого руководителя проектов может быть свой взгляд на тему — и любимая методология, которая лучше всего подходит ему/ей и его/её проекту.</p><p>Успехов в развитии и совершенствовании навыков. Экспериментируйте для достижения результатов!</p>]]></content:encoded>
    </item>
    <item>
      <title>Управление командами разработки в ИТ-проектах. Теория.</title>
      <link>https://tproger.ru/articles/upravlenie-komandami-razrabotki-v-it-proektah-teoriya</link>
      <comments>https://tproger.ru/articles/upravlenie-komandami-razrabotki-v-it-proektah-teoriya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Екатерина Дегтярь]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/upravlenie-komandami-razrabotki-v-it-proektah-teoriya</guid>
      <description><![CDATA[<p>Рассмотрели основные аспекты управления командами в ИТ-проектах: состав команды, коммуникацию, лидерство и оценку производительности.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/upravlenie-komandami-razrabotki-v-it-proektah-teoriya">Управление командами разработки в ИТ-проектах. Теория.</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 09 Jun 2023 08:18:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Правильное управление командами разработки является одним из ключевым фактором успеха любого проекта. Давайте поверхностно рассмотрим основные аспекты управления командами разработки в ИТ-проектах, такие как состав команды, коммуникация, лидерство, оценка производительности и многое другое.</p><h2>1. Состав команды разработки</h2><p>Состав команды разработки включает в себя разработчиков, тестировщиков, дизайнеров, менеджеров проектов и других специалистов. Важно выбирать специалистов, которые обладают не только техническими знаниями, но и умеют работать в команде, имеют высокую мотивацию и готовность к обучению.</p><h2>2. Коммуникация</h2><p>Коммуникация является основополагающим аспектом управления командами разработки в ИТ-проектах. Команды должны иметь доступ к информации, необходимой для выполнения задач, а также взаимодействовать друг с другом для решения проблем и координации работы. Важно установить четкие процессы коммуникации, такие как ежедневные встречи, регулярные отчеты о проделанной работе и совещания, чтобы обеспечить эффективную коммуникацию внутри команды.</p><h2>3. Лидерство</h2><p>Успешное управление командами разработки в ИТ-проектах невозможно без хорошего лидерства. Лидер команды должен быть хорошо знаком с процессами разработки и управления проектами, обладать навыками коммуникации и уметь мотивировать команду. Он должен устанавливать ясные цели и обеспечивать команду необходимыми ресурсами для достижения этих целей.</p><h2>4. Оценка производительности</h2><p>Необходимо определить критерии оценки производительности, такие как качество кода, сроки выполнения задач и вовлеченность в проект. Оценка производительности позволяет выявлять проблемы в работе команды и принимать меры для улучшения процессов.</p><h2>5. Процессы (методологии) разработки</h2><p>Выбор подходящего процесса (методологии) разработки определяет весь ход работ по проекту. Каждый процесс разработки имеет свои преимущества и недостатки, и важно выбрать подходящий процесс разработки, который соответствует требованиям проекта и возможностям команды. Agile, Waterfall, DevOps и Lean – это наиболее популярные процессы разработки, каждый из которых имеет свои уникальные особенности.</p><p><b>   Agile</b> – это гибкий процесс разработки, который позволяет команде быстро реагировать на изменения требований заказчика и изменения внешней среды. Agile основан на принципах коллективной работы, быстрого прототипирования и поэтапной доставке продукта. Agile также предоставляет команде гибкость и автономию в принятии решений, что может повысить уровень мотивации и производительности.</p><p><b>   Waterfall</b> – это традиционный процесс разработки, который состоит из последовательных этапов, начиная с определения требований и заканчивая тестированием и сопровождением продукта. Waterfall предоставляет команде четкие инструкции и процедуры, что может помочь в снижении рисков и повышении качества продукта. Однако, Waterfall может оказаться слишком жестким и неспособным быстро адаптироваться к изменениям, что может снизить гибкость команды.</p><p><b>   DevOps</b> – это процесс разработки, который объединяет разработку и операции в один единый процесс. DevOps предоставляет команде возможность автоматизировать процессы разработки и развертывания, что может повысить скорость доставки продукта и снизить риски. DevOps также предоставляет команде возможность более тесно сотрудничать между собой, что может помочь в снижении ошибок и улучшении качества продукта.</p><p><b>   Lean</b> – это процесс разработки, который сосредоточен на устранении неэффективности и минимизации потерь в процессе разработки. Lean предоставляет команде инструменты для постоянного улучшения процесса разработки и увеличения его эффективности. Lean также предоставляет команде возможность работать с фокусом на потребности заказчика, что может помочь в повышении уровня удовлетворенности заказчика.</p><p>Выбор подходящего процесса разработки зависит от ряда факторов, таких как сложность проекта, доступность ресурсов, сроки, бюджет и требования заказчика. Лидер команды должен провести анализ проекта и определить, какой процесс разработки лучше всего подходит для проекта и команды.</p><h2>6. Управление изменениями</h2><p>Управление изменениями является неотъемлемой частью управления командами разработки в ИТ-проектах. Изменения в проекте могут происходить в любой момент, и команда должна быть готова к изменениям и уметь быстро адаптироваться к новым условиям. Важно установить процессы для управления изменениями, такие как процедуры изменения, проверки и утверждения изменений, чтобы обеспечить минимальный вред для проекта.</p><h2>7. Управление рисками</h2><p>Риски могут возникать в любой момент проекта, и команда должна быть готова к ним и уметь быстро реагировать на них. Важно определить риски, оценить их вероятность и влияние на проект, а также разработать стратегии для управления рисками.</p><h2>8. Обучение и развитие команды</h2><p>Команда должна постоянно совершенствоваться и улучшать свои навыки и знания, чтобы соответствовать требованиям проекта. Важно проводить регулярное обучение, тренировки и обмен опытом, чтобы улучшить производительность команды и достичь поставленных целей.</p><h2>9. Конфликты</h2><p>Управление командой также включает в себя управление конфликтами. Конфликты могут возникать в любой команде, и руководитель команды должен быть готов к их решению.</p><p>Следование эффективным стратегиям и практикам управления командами разработки поможет обеспечить успех проекта и достижение поставленных целей.</p><p>Важно помнить, что управление командами разработки – это не одноразовое мероприятие, а постоянный процесс, который требует постоянного внимания и улучшения.</p>]]></content:encoded>
    </item>
    <item>
      <title>«Капитан, мы тонем!»: Как спасти релиз еще на этапе его подготовки</title>
      <link>https://tproger.ru/articles/kapitan-my-tonem-kak-spasti-reliz-eshhe-na-etape-ego-podgotovki</link>
      <comments>https://tproger.ru/articles/kapitan-my-tonem-kak-spasti-reliz-eshhe-na-etape-ego-podgotovki?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Андрей Фитисов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kapitan-my-tonem-kak-spasti-reliz-eshhe-na-etape-ego-podgotovki</guid>
      <description><![CDATA[<p>Рассказываем, как избежать ошибок в процессе релиза в IT и не допустить неприятностей, которые уничтожат все позитивные моменты обновлений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kapitan-my-tonem-kak-spasti-reliz-eshhe-na-etape-ego-podgotovki">«Капитан, мы тонем!»: Как спасти релиз еще на этапе его подготовки</a>»</p>]]></description>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 01 Jun 2023 12:31:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Привет, это Антон Павлов — Head of Products в ITSM 365.</p><p>Релизы — это хороший инструмент для повышения лояльности клиентов. У пользователей складывается ощущение, что продукт постоянно развивается и никуда не пропадёт. Добавление новых фич по просьбе клиента создаёт впечатление, что компания слышит пользователей.</p><p>В процессе релиза легко допустить ошибки, которые могут привести к серьезным проблемам для всех пользователей. Такие неприятности могут полностью уничтожить все позитивные моменты, связанные с выпуском обновлений.</p><h2>Как мы «собираем» релиз: объясняю на кубиках Lego</h2><p>Наш продукт — облачный сервис деск, который работает на базе платформы. Мы работаем с малым и средним бизнесом и предоставляем два вида тарифов: младший и старший. Для пользователей младшего тарифа доступна базовая конфигурация, а для пользователей старшего дополнительно — возможность подстроить базовые процессы под свои индивидуальные потребности и особенности.</p><p>Платформа по сути напоминает конструктор Lego, сами продукты, которые на ней построены, — собранные фигурки с помощью кубиков. С помощью релизов возможно привнести дополнительные настройки для этих игрушек, чтобы сделать процессы эффективнее.</p><p>Результатом релиза является ценность для пользователя, которую мы доставили через либо доработку существующего процесса, либо создание нового механизма. Необходимо понимать, что фичи сами по себе не несут ценности, поэтому наша компания сосредотачивается не только на разработке и доработке, но также на передаче лучших практик в области выстраивания процессов клиентам. Мы убеждены, что важно обеспечить понимание того, как правильно использовать наши продукты, чтобы клиенты могли получить максимальную выгоду от них.</p><h2>Из чего состоит релиз</h2><h3>Редко, но метко</h3><p>В сегменте B2C-продуктов, клиент не сильно зависит от сервиса — не доставляет «Пятёрочка», значит, доставит «Самокат». Это даёт возможность компании обновлять свои приложения часто, прнося минимальные изменения.</p><p>При работе в сегменте с B2B-клиентами, это привносит свои особенности:</p><ul><li>Цена некорректных изменений</li></ul><p>Для компании B2B-продукт не является просто продуктом, он является инструментом работы. Некорректные обновления могут привести к остановке работы всего предприятия, что может привести к убыткам, достигающим нескольких миллионов.</p><ul><li>Цена остановки работы системы</li></ul><p>Во время релиза работа сервиса приостанавливается, следовательно, в компаниях опять встаёт рабочий процесс, что несёт за собой убытки.</p><ul><li>Сложность интерфейса</li></ul><p>B2C-приложения просты в использовании: там есть корзина, магазин и окошко для оплаты. Но в B2B-сервисах все гораздо более сложно, поскольку имеется множество различных процессов, подпроцессов и их взаимодействие.</p><p>Поэтому мы проводим обновления два-три раза в год, но с большой пользой для клиента — сразу вносим много инструментов, процессов и ценностей.</p><h3>С разделением на тарифы</h3><p>На старших тарифах мы проводим обновление версии продукта, чтобы не сбить индивидуальные настройки пользователей, на младших тарифах — обновляем стартовую конфигурацию.</p><h3>Сразу и для всех</h3><p>Мы обновляем сразу несколько сотен клиентов за короткий срок. так как все наши клиенты всегда находятся на одной версии — это упрощает поддержку, потому что помнить особенности версии для не просто.</p><p>У нас нет возможности  отказаться от обновления, поэтому мы просто предупреждаем, что в такое-то время сервис будет недоступен.</p><h2>Из каких этапов состоит релиз</h2><p>Обеспечивать качество релизов нам помогают следующие этапы:</p><h3>Этап №1. Планирование и распределение задач</h3><p>Реализация всех запросов пользователей может показаться самым логичным выходом в B2B, где вес клиента большой. Однако, процесс планирования и распределения задач может быть понятен только с одной стороны.</p><p>Но на деле всё гораздо сложнее. Как этот процесс проходит у нас, расскажем уже в следующей статье.</p><h3>Этап №2. Выбор версии платформы</h3><p>Мы работаем на базе конструктора, он привносит новые инструменты и технологии. Они касаются администрирования сервиса и интерфейса.</p><p>Когда мы выбираем версию конструктора, мы учитываем несколько моментов:</p><ul><li>Продуктовая составляющая — ориентируемся на те фичи, которые помогут улучшить нашу систему;</li><li>Инфраструктурная составляющая — DevOps команда убеждается, что сервис будет работать в облаке;</li><li>Сама платформа — мы выступаем потребителями другого продукта. У него есть свои релизные процессы, которые тоже важно учитывать.</li></ul><h3>Этап №3. Тест версии</h3><p>На данном этапе мы погружаемся в тестирование новой версии платформы на нашей текущей конфигурации: обновление не должно нарушить базовые настройки системы.</p><p>Тестированием коробочной версии мы занимаемся сами, не можем отдать другим специалистам в компании — здесь важен не сам факт работающего действия, а то, как он встраивается в бизнес-процесс. Например, нам необходимо понимать, получил ли пользователь нужную и полную информацию — автотесты или тестировщики со стороны не смогут это оценить.</p><p>Благодаря тестированию наша команда обнаруживает недостатки продукта, которые раньше нам не удавалось заметить. Это позволяет нам более глубоко изучить наш продукт и сделать его лучше.</p><h2>Кейс, после которого появился этап теста версии</h2><p>Случилось так, что у всех клиентов после обновления перестала работать входящая почта, а в нашем продукте это основной канал подачи заявок пользователями. Многие клиенты не могли воспользоваться сервисом, а это значит убытки и простои. Мы исправили ситуацию за пару часов в тот же день, повторять опыт бы не хотелось.</p><h3>Этапы №4, 5 и 6. Аналитика и реализация и тестирование задач</h3><h4>Обдумывание ценности всего продукта</h4><p>Наш продукт базируется на платформе, которая создаёт новые инструменты. Они позволяют нам взглянуть на процессы по-новому, внести изменения в работу системы.</p><p>На первом этапе мы разрабатываем гипотезы по обновлению системы, а затем корректно интегрируем задачи в продукт и реализуем их. На этом этапе мы снова анализируем ценность всего продукта и новых функций, определяем причину поступления задачи, какая ценность будет добавлена механикой и какую проблему клиента она решает.</p><p>Это позволяет нам сделать зум-аут — посмотреть на продукт на расстоянии — создать цельное и масштабируемое решение, которое закроет сразу много потребностей клиента.</p><p>Также важно понять, по каким метрикам и как будем оценивать успешность каждой отдельной новой фичи. Обдумываем возможные миграции и кейсы использования — конкретные бизнес-ситуации, в рамках которых мы решаем определённую задачу новой фичей.</p><h4>Круговорот знаний в команде</h4><p>Затем идут этапы реализации и тестирования задач. Для нас необходимо, чтобы аналитикой, реализаций и тестированием задач занимались разные сотрудники из команды.</p><ul><li>Во-первых, команда понимает, как пользоваться каждой отдельной фичей и это позволяет не концентрировать все знания в одном человеке. Это особенно важно в период пост-релиза, когда необходимо помочь клиентам разобраться в новых возможностях системы.</li><li>Во-вторых, в работе всегда присутствует «человеческий фактор». Не всегда человек может заметить какие-то ошибки и исправить их на этапе реализации.</li></ul><h3>Этап №7, 8. Перенос на предэталонный стенд и повторный тест задачи</h3><p>У нас есть три стенда, которые участвуют в подготовке релиза:</p><ul><li>Develop-стенд — на этом стенде мы тестируем работу продукта на новой версии платформы, проектируем и тестируем изменения в продукте;</li><li>Предэталонный стенд (Prototype) — внутренний стенд с актуальной версией продуктовой конфигурации;</li><li>Эталонный стенд — внешний стенд, с которого и запускаются клиенты. На него мы переносим обновления, только когда релиз полностью готов.</li></ul><p>На этом этапе мы тестируем уже не просто разрозненные задачи — как мы делали на Dev стенде, а их взаимодействие между собой. Делаем мы это на предэталонном стенде.</p><p>Тестирование на предэталонном этапе помогает избежать необходимости изменять эталонную версию продукта несколько раз. Благодаря этому можно избежать возможных повреждений эталонной конфигурации в случае возникновения каких-либо проблем.</p><h3>Этап №9. Написание инструкций и готовых ответов</h3><p>Когда продукт является простым, то он должен быть лёгок для восприятия  и не требовать готовых ответов или инструкций. Однако, если речь идет о сложном бизнесовом продукте, то часть новых механик требует обучения, а другая часть должна быть обоснована для клиентов. В связи с этим мы разрабатываем инструкции.</p><p>Если младшие тарифы у нас просто получают новую конфигурацию, то для старших тарифов нужно настраивать сервис кастомно, что отнимает большое количество ресурсов. Для решения этой проблемы мы подготовили базу настроек, которая помогает и нам, и клиенту сэкономить время на обновление системы.</p><p>Инструкции и ответы помогают службе поддержки — мы заранее готовы к наплыву заявок от клиентов. Когда клиенты обращаются в одномоментно, команде помогают готовые ответы, которые позволяют им чувствовать себя спокойнее. С помощью таких ответов можно одновременно обслужить более 50 человек. При этом понимание того, что нужно смотреть и где искать ответы, убирает тревогу и дает команде уверенность в своих действиях.</p><p>В завершении мы подготавливаем документацию — конечно же, вручную — и вывод подсказок для клиентов в интерфейс.</p><h3>Этап №10. Повторное тестирование версии</h3><p>На этом этапе мы имитируем автоматическое обновление платформы, для того чтобы убедиться, что при комплексном обновлении ничего не «полетело».</p><p>На этом этапе проходит проверка итоговой версии обновления. На предыдущих этапах могли возникать дефекты, нужно сделать так, чтобы при конечном обновлении их уже не было.</p><p>Наш продукт — настройка платформы, которую мы постоянно улучшаем в каждом релизе, внося множество изменений. Однако, этот подход имеет свой минус: автоматическое тестирование становится очень затратным и длительным. Чтобы покрыть все автотесты, нам приходится проводить повторные тестирования.</p><h3>Этап №11. Update-стенды</h3><p>Update-стенды — копии стендов крупных клиентов. Заказчики предпочитают делать пробное тестирование их копий в течение двух недель для нашего и их спокойствия.</p><p>Update-стенды позволяют клиентам понять, что процессы работают как надо. Для того, чтобы обновить свои внутренние инструкции или запланировать задачи на доработку личных процессов, можно ознакомиться с изменениями.</p><h3>Этап №12. Перенос на эталон</h3><p>Этот перенос уже идёт автоматически, вручную мы ничего не делаем. С этого этапа и поднимаются новые триалы — новая конфигурация идёт новым клиентам, которые приходят уже после этого релиза.</p><h3>Этап №13. Подготовка вебинара релиза</h3><p>Для подготовки к массовому релизу новой версии мы начинаем со следующего этапа. На вебинаре мы представляем новые функции, а также смотрим на кейсы, разработанные ранее. Мы стремимся не просто рассказать об обновлениях, но также внедрить новые механики в бизнес-кейсы. Для этого мы активно используем цифры и конкретные примеры. После проведения вебинара мы публикуем статью со всеми обновлениями на нашем сайте.</p><p>Кроме того, мы стараемся мотивировать клиентов использовать новый функционал, чтобы их настройки всегда оставались современными.</p><h3>Этап №14. Массовое обновление 10% стендов</h3><p>Мы начинаем обновление всего с 10%, чтобы убедиться, что всё работает корректно.</p><p>Мы выбираем клиентов, с различными друг от друга характеристиками для запуска обновлений. Это позволяет нам охватить максимальное количество потенциальных сложностей.</p><h3>Этап №15. Массовое обновление пользователей на младших тарифах</h3><p>Через неделю мы обновляем младшую конфигурацию на всех младших тарифах.</p><h3>Этап №16. Массовое обновление всех стендов</h3><p>Если обновление на младших тарифах прошло успешно, то мы обновляем все стенды.</p><h3>Этап №17. Сбор обратной связи</h3><p>Обратная связь приходит к нам через заявки, от отдела продаж. иногда к нам обращаются клиенты просто для того, чтобы поблагодарить за релиз.</p><h3>Этап №18. Сбор аналитики</h3><p>На этом этапе мы собираем количественные данные, которые решили замерять ещё до запуска релиза. Здесь мы определяем, пользуются ли клиенты фичами, если нет, то почему.</p><h3>Этап №19. Отмечаем релиз</h3><p>… а дальше начинаем всё по новой.</p><h2>Вывод</h2><p>Релиз — сложный процесс, который включает в себя множество этапов, цель которых заключается не только в предоставлении новых механик, но и в добавлении ценности. Однако, важно сохранить налаженные процессы клиента, не нарушив их работу. Наш подход позволяет обновлять систему, предоставляя максимальную ценность для клиента при минимальных рисках.</p><p>Важно отметить, что на каждом релизе должен быть сотрудник, ответственный за весь процесс. Это позволяет снять тревогу у команды, так как все знают, к кому обратиться за решением любых вопросов в случае необходимости. Ответственный за релиз вовлекает других специалистов, если это необходимо, для решения возникших проблем.</p>]]></content:encoded>
    </item>
  </channel>
</rss>