<?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>Статьи и рекомендации по применению подходов к разработке программного обеспечения, позволяющих оптимизировать расходы и ускорить темпы работы.</description>
    <link>https://tproger.ru/tag/software-development</link>
    <atom:link href="https://tproger.ru/tag/software-development/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 26 Sep 2026 05:07:08 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>Spec Kit 1.0 от GitHub заменяет переписку с ИИ-агентом спекой, плюс десять инструментов для агентов</title>
      <link>https://tproger.ru/news/spec-kit-1-0-i-eshhyo-desyat-ii-repozitoriev-sobravwih-zvyozdy-za-n</link>
      <comments>https://tproger.ru/news/spec-kit-1-0-i-eshhyo-desyat-ii-repozitoriev-sobravwih-zvyozdy-za-n?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/spec-kit-1-0-i-eshhyo-desyat-ii-repozitoriev-sobravwih-zvyozdy-za-n</guid>
      <description><![CDATA[<p>GitHub довёл Spec Kit до 1.0: 135 тысяч звёзд, 30+ агентов, converge, расширения bug и assess. Рядом ponytail, ECC, humanizer, archify, MiniMind, Magnitude и blender-mcp.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/spec-kit-1-0-i-eshhyo-desyat-ii-repozitoriev-sobravwih-zvyozdy-za-n">Spec Kit 1.0 от GitHub заменяет переписку с ИИ-агентом спекой, плюс десять инструментов для агентов</a>»</p>]]></description>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 10 Sep 2026 18:42:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>GitHub выпустил <a href="https://github.com/github/spec-kit/releases/tag/v1.0.0">версию 1.0.0</a> набора Spec Kit ровно через год после первого коммита, 21 августа, а к 10 сентября довёл его до 1.0.6. Это открытый инструмент, который заставляет ИИ-агента сначала написать спецификацию и план, а уже потом код, и работает с любым агентом: Copilot, Claude Code, Codex, Cursor, Gemini CLI и ещё больше чем с двадцатью другими. У <a href="https://github.com/github/spec-kit">репозитория</a> 135 тысяч звёзд и 12 тысяч форков, лицензия MIT.</p><p>Для программиста, который уже работает с агентами, это готовая замена самодельным файлам с инструкциями и длинным описаниям задачи в чате. Вместо «сделай мне функцию экспорта» агент получает конституцию проекта, спеку с пользовательскими историями, технический план и список задач в репозитории, и каждый шаг можно прочитать и поправить до того, как появится код. За год к базовой цепочке добавились команда сверки кода со спекой, расширения для багфикса и оценки идей, пресеты под стандарты команды и бандлы под роли. Spec Kit при этом не единственный репозиторий такого рода в топе GitHub: за ту же неделю звёзды собирали ещё десять проектов про агентов, от скиллов и надстроек над Claude Code и Codex до локального инференса и управления Blender; они разобраны во второй части.</p><ul><li>Spec Kit 1.0.0 вышел 21 августа 2026 года, текущий релиз 1.0.6 от 10 сентября; между ними шесть патч-релизов.</li><li>Ставится через uv или с PyPI, командой specify init подключается к проекту под любой из более чем 30 агентов.</li><li>Цепочка из шести слэш-команд: constitution, specify, plan, tasks, implement, converge; последняя сверяет код со спекой и дописывает недостающие задачи.</li><li>Расширение bug ведёт исправление по шагам «оценить, починить, проверить», assess разбирает идею до решения «делать» или «не делать».</li><li>Мейнтейнер пишет, что 1.0 больше не обещает стабильности API: ломающие изменения агент теперь переносит сам.</li><li>Среди набравших звёзды за неделю: ponytail (135 тысяч, режет объём кода агента на 54% в замере автора), ECC (256 тысяч), skills (259 тысяч), humanizer (46 тысяч), archify (57 тысяч), HyperFrames, MiniMind, Magnitude, SGLang и blender-mcp.</li></ul><h2>Что такое Spec Kit и как он работает?</h2><p>Spec Kit это утилита specify на Python плюс набор markdown-шаблонов и скриптов, которые она раскладывает в проект. После specify init в каталоге агента (например, .claude/ или .github/) появляются слэш-команды или скиллы с префиксом speckit, а в .specify/ лежат шаблоны документов. Дальше вся работа идёт внутри привычного агента.</p><p>Базовая цепочка описана в README репозитория и состоит из шести шагов. /speckit.constitution один раз на проект фиксирует принципы: стек, стиль, что запрещено. /speckit.specify превращает описание задачи в спеку с требованиями и пользовательскими историями, /speckit.plan пишет технический план под выбранный стек, /speckit.tasks режет план на задачи, /speckit.implement их выполняет. Замыкает цикл /speckit.converge: команда сравнивает кодовую базу со спекой, планом и задачами и дописывает в список то, что ещё не сделано. Шаги implement и converge повторяются, пока converge не сообщит, что всё сошлось.</p><p>Есть три необязательные команды. /speckit.clarify вытаскивает недосказанное из спеки вопросами, её рекомендуют запускать до плана. /speckit.analyze ищет расхождения между спекой, планом и задачами после tasks и до implement. /speckit.checklist генерирует чек-листы качества требований, в документации их называют «юнит-тестами для английского языка». Команда /speckit.taskstoissues, которая раскладывает задачи в GitHub Issues, в релизе 1.0.5 помечена как уходящая из ядра в отдельное расширение github-issues; пока она работает.</p><h2>Что изменилось к версии 1.0?</h2><p>Год назад Spec Kit был набором шаблонов под несколько команд и несколько агентов. К 1.0 вокруг ядра выросла система настройки из четырёх слоёв. Внизу ядро с встроенными командами и шаблонами, выше расширения, которые добавляют новые команды, ещё выше пресеты, которые переписывают шаблоны ядра и расширений, а на самом верху локальные правки конкретного проекта в .specify/templates/overrides/. Шаблоны разрешаются во время выполнения сверху вниз, побеждает первое совпадение.</p><p>Два расширения идут в комплекте и включаются по желанию. specify extension add bug добавляет цепочку из трёх команд для исправления ошибок: assess проверяет диагноз по отчёту, fix чинит именно найденную причину, test подтверждает, что исходный симптом исчез. Авторы объясняют это тем, что агент, который прыгает от баг-репорта сразу к патчу, часто чинит не то. Расширение assess работает ещё до спеки: intake, research, define, shape, decide, на выходе документированное решение «делать», «нужны уточнения» или «не делать». Идею с решением «делать» можно передать в /speckit.specify.</p><p>Пресеты ставятся командой specify preset add и меняют форму, а не набор возможностей: например, требуют в спеке трассируемость под регуляторику, добавляют обязательный этап проверки безопасности в план, переставляют задачи так, чтобы тесты шли первыми, или переводят весь процесс на другой язык. Бандлы собирают расширения, пресеты, шаги и рабочие процессы в один версионированный набор под роль: продакт-менеджер, аналитик, исследователь безопасности, разработчик. Ставится бандл одной командой specify bundle install, каталог бандлов у проекта свой, поверх пользовательского и встроенного. В релиз-нотах 1.0.x рядом с исправлениями регулярно идут обновления расширений сообщества, например Jira Mirror в 1.0.2, и правки в загрузчике бандлов.</p><p>Список агентов вырос до <a href="https://github.github.io/spec-kit/reference/integrations.html">более чем 30</a>. Для части из них, включая Claude Code, Codex CLI, Copilot и Devin, команды ставятся как скиллы, а не как файлы промптов, и вызываются как /speckit-specify или $speckit-specify, в зависимости от агента. Для остальных остаётся режим слэш-команд; переключатель --integration-options="--skills" есть у тех, кто поддерживает оба.</p><h2>Почему 1.0 больше ничего не обещает?</h2><p>Ведущий мейнтейнер проекта в <a href="https://www.manorrock.com/blog/2026/08/21/spec_kit_turns_one.html">записи к годовщине</a> прямо говорит, что единица в номере версии здесь только число. Раньше мажорная версия была страховкой от стоимости изменений: ломающее изменение означало ручной обход всех мест вызова по гайду миграции, и семантическое версионирование превращало эту стоимость в сигнал. Теперь, по его словам, адаптация к ломающему изменению это одно предложение агенту, который правит места вызова быстрее, чем автор успевает описать их в changelog. Поэтому 1.0.0 у Spec Kit значит «хорошее место, чтобы начать», а не обещание замороженной формы. Это заявление проекта о себе, и для команд, которые встраивают Spec Kit в CI и внутренние инструменты, оно означает, что пинить версию всё равно придётся: за три недели после 1.0.0 вышло шесть патч-релизов.</p><h2>Как установить и с чего начать?</h2><p>В README рекомендуют менеджер uv, альтернатива pipx. Установка идёт с привязкой к тегу релиза, тег с ведущей буквой v, либо из PyPI, где пакет specify-cli обновлён до 1.0.6. Проверить, не вышла ли новая версия, можно командой specify self check.</p><p>Ключ --integration принимает имя агента из списка интеграций, например copilot, claude, codex, cursor-agent или gemini; полный перечень выдаёт specify integration list. Дальше запускается сам агент в каталоге проекта, и цепочка начинается с /speckit.constitution.</p><h2>Кому это не нужно?</h2><p>Spec Kit не единственный инструмент такого рода. Kiro от AWS делает то же самое внутри собственной IDE на базе VS Code, у Tessl это CLI и MCP-сервер к разным ассистентам, а сам фреймворк на момент разбора был в закрытой бете; в <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html">разборе трёх подходов</a> на сайте Мартина Фаулера Spec Kit выделяют как самый агентонезависимый: это markdown и скрипты в репозитории, которые легко править. Обратная сторона та же: спека, план и задачи это документы, которые кто-то должен читать, и для правки в одну функцию цепочка из шести команд избыточна. Авторы и сами пишут в README, что не каждое изменение проходит полный цикл: небольшие исправления идут обычным путём через issue, pull request, ревью и тесты.</p><h2>Какие ещё репозитории про ИИ-агентов набирали звёзды на этой неделе?</h2><p>Подборку из десяти репозиториев, которые «за неделю разом собрали звёзды», <a href="https://x.com/so_ainsight/status/2097885286265180398">опубликовал</a> 10 сентября японский аккаунт So AInsight; прирост за неделю там не приведён, поэтому ниже суммарное число звёзд на 11 сентября по данным GitHub. Половина списка про то же, что и Spec Kit: как заставить агента работать по процессу, а не по настроению; остальное про инференс, обучение и управление другими программами.</p><ol><li><a href="https://github.com/mattpocock/skills">skills</a>, 259 тысяч звёзд. Скиллы Мэтта Покока, автора Total TypeScript, из его рабочего каталога .agents: небольшие, составные, под любую модель. В README автор прямо противопоставляет их Spec Kit, GSD и BMAD: те, по его словам, забирают процесс себе и делают ошибки в нём трудноразрешимыми.</li><li><a href="https://github.com/affaan-m/ECC">ECC</a>, 256 тысяч. Надстройка над Claude Code, Codex, OpenCode и Cursor с циклом «план, тест, реализация, ревью из свежего контекста, проверка, память, улучшение». Репозиторий под MIT, у автора есть платная версия ECC Pro как GitHub App для приватных репозиториев от $19 за место в месяц.</li><li><a href="https://github.com/DietrichGebert/ponytail">ponytail</a>, 135 тысяч. Скилл, который заставляет агента думать «как самый ленивый сеньор»: перед кодом пройти лестницу из семи вопросов, от «нужно ли это вообще» до «есть ли это в стандартной библиотеке». Автор замерил на Claude Code и репозитории full-stack-fastapi-template по 12 тикетам: минус 54% строк, минус 22% токенов, минус 20% стоимости против агента без скилла; ранние цифры «на 80–94% меньше кода» он сам признал завышенными из-за некорректной базы.</li><li><a href="https://github.com/tt-a1i/archify">archify</a>, 57 тысяч. Скилл для Cursor, Claude Code, Codex CLI и OpenCode: агент описывает систему типизированным JSON, Node.js-компилятор превращает его в самодостаточный HTML с интерактивной схемой архитектуры, последовательности или потока данных, экспорт в PNG, SVG и WebM. Умеет сравнивать два снимка архитектуры до и после изменения.</li><li><a href="https://github.com/blader/humanizer">humanizer</a>, 46 тысяч. Скилл на чистом markdown, который переписывает текст агента так, чтобы в нём не было характерных следов машинного письма, без изменения смысла; ставится через npx skills add blader/humanizer или как плагин Claude Code.</li><li><a href="https://github.com/heygen-com/hyperframes">HyperFrames</a>, 49 тысяч. Проект HeyGen: пишешь HTML, получаешь видео. Рассчитан на агентов, которым нужно генерировать ролики с диаграммами и озвучкой без съёмки; TypeScript, Apache 2.0, Node 22 и новее.</li><li><a href="https://github.com/jingyaogong/minimind">MiniMind</a>, 61 тысяча. Учебный проект: обучить языковую модель на 64 млн параметров с нуля на чистом PyTorch. Заявленные «2 часа» и «3 юаня» это оценка автора для одного прохода предобучения и дообучения минимальной версии на одной RTX 3090 и аренда GPU на это время; в репозитории полная цепочка от предобучения до DPO, GRPO и агентного RL, плюс версии с картинками и диффузией.</li><li><a href="https://github.com/magnitudedev/magnitude">Magnitude</a>, 4 тысячи. Локальный движок инференса: профилирует машину (Mac, NVIDIA, AMD или только CPU), подбирает подходящие модели, скачивает, настраивает и запускает их. Единственный проект списка с числом звёзд в тысячах, а не десятках тысяч.</li><li><a href="https://github.com/sgl-project/sglang">SGLang</a>, 36 тысяч. Зрелый фреймворк раздачи больших языковых и мультимодальных моделей под нагрузкой, существует с января 2024 года; в список попал, судя по всему, из-за очередного всплеска интереса, а не как новинка.</li><li><a href="https://github.com/ahujasid/blender-mcp">blender-mcp</a>, 28 тысяч. MCP-сервер и аддон, через которые любая модель управляет Blender: создание сцен, моделирование и расстановка объектов по текстовому запросу. Сторонний проект, к Blender Foundation отношения не имеет, о чём README предупреждает отдельно.</li></ol><p>Общий знаменатель списка тот же, что у Spec Kit 1.0: скиллы и надстройки, которые фиксируют процесс работы агента в репозитории, стали отдельной категорией инструментов, и у неё уже есть внутренняя полемика. Spec Kit и ECC предлагают полный цикл, skills и ponytail дают отдельные небольшие правила, которые сочетаются с чем угодно. Что выбирать, зависит от размера задачи: для мелких правок цепочка из шести команд избыточна, для новой функции с несколькими файлами спека и план окупаются тем, что их можно прочитать до кода.</p><p>Что смотреть дальше у Spec Kit: вынос /speckit.taskstoissues в расширение github-issues и следующие патч-релизы: между 1.0.1 и 1.0.6 паузы были от нескольких часов до десяти дней. Раздел экспериментальных целей из README никуда не делся, сроков по 1.1 или 2.0 GitHub не называет.</p><p>Источники: <a href="https://github.com/github/spec-kit">GitHub: репозиторий github/spec-kit</a>, <a href="https://github.com/github/spec-kit/releases/tag/v1.0.0">Релиз Spec Kit v1.0.0</a>, <a href="https://github.com/github/spec-kit/releases/tag/v1.0.6">Релиз Spec Kit v1.0.6</a>, <a href="https://www.manorrock.com/blog/2026/08/21/spec_kit_turns_one.html">Manorrock: Spec Kit Turns One — and Ships 1.0.0</a>, <a href="https://github.github.io/spec-kit/reference/integrations.html">Документация: поддерживаемые агенты</a>, <a href="https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html">Martin Fowler: Understanding Spec-Driven Development: Kiro, Spec-Kit, and Tessl</a>, <a href="https://x.com/so_ainsight/status/2097885286265180398">So AInsight в X: десять ИИ-инструментов, собравших звёзды на GitHub за неделю</a>, <a href="https://github.com/mattpocock/skills">GitHub: mattpocock/skills</a>, <a href="https://github.com/affaan-m/ECC">GitHub: affaan-m/ECC</a>, <a href="https://github.com/DietrichGebert/ponytail">GitHub: DietrichGebert/ponytail</a>, <a href="https://github.com/tt-a1i/archify">GitHub: tt-a1i/archify</a>, <a href="https://github.com/blader/humanizer">GitHub: blader/humanizer</a>, <a href="https://github.com/heygen-com/hyperframes">GitHub: heygen-com/hyperframes</a>, <a href="https://github.com/jingyaogong/minimind">GitHub: jingyaogong/minimind</a>, <a href="https://github.com/magnitudedev/magnitude">GitHub: magnitudedev/magnitude</a>, <a href="https://github.com/sgl-project/sglang">GitHub: sgl-project/sglang</a>, <a href="https://github.com/ahujasid/blender-mcp">GitHub: ahujasid/blender-mcp</a></p><p>Изображение на обложке: Логотип: GitHub</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>Как тестировать ИИ-агентов, если «правильно» не детерминировано</title>
      <link>https://tproger.ru/articles/kak-testirovat-ii-agentov-esli-pravilno-ne-determinirovano</link>
      <comments>https://tproger.ru/articles/kak-testirovat-ii-agentov-esli-pravilno-ne-determinirovano?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-testirovat-ii-agentov-esli-pravilno-ne-determinirovano</guid>
      <description><![CDATA[<p>GitHub построил Trust Layer для Copilot-агентов: валидация по ключевым состояниям вместо жёстких скриптов. Узнайте, как снизить ложные падения CI.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-testirovat-ii-agentov-esli-pravilno-ne-determinirovano">Как тестировать ИИ-агентов, если «правильно» не детерминировано</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Машинное обучение]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 30 Jul 2026 09:32:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если ваш CI падает не из-за бага в коде, а потому что ИИ-агент выбрал другой путь к правильному результату — пора менять подход к тестированию. Классические тесты заточены под детерминированное ПО: на входе X, на выходе Y, посередине строго определённая последовательность шагов. Но агенты с функцией Computer Use работают с настоящими интерфейсами, где загрузка может длиться на полсекунды дольше, а кнопка оказаться в другом месте. GitHub недавно предложил способ отличать реальные ошибки от такого «шума» — независимый <b>Trust Layer</b>, который учится на примерах успешных запусков.</p><p>В этой статье разберём, почему стандартные assert-тесты и record-and-replay плохо справляются с автономными агентами, как теория графов помогает выделить обязательные этапы задачи и что из этого следует для российских команд, которые уже пробуют GitHub Copilot или собственных агентов в CI/CD.</p><p>Исследование, опубликованное 6 мая 2026 года в блоге GitHub, описывает метод валидации агентского поведения, который не требует ручного написания скриптов для каждого сценария и не верит агенту на слово. Вместо этого он строит модель «ground truth» из 2–10 успешных выполнений и проверяет новые запуски по структуре, а не по совпадению шагов.</p><ul><li>ИИ-агенты с Computer Use недетерминированы: один и тот же задача может решаться разными путями.</li><li>GitHub предлагает <b>Trust Layer</b> — внешний слой валидации, который учится на успешных запусках и выделяет обязательные этапы.</li><li>В основе — <b>Prefix Tree Acceptor (PTA)</b> и <b>dominator analysis</b> из теории компиляторов.</li><li>В эксперименте метод показал 100% accuracy, precision, recall и F1 против 82,2%, 83,3%, 60,0% и 69,8% у самооценки агента.</li><li>Trust Layer лучше определяет «не баг, а шум»: F1 52,2% против 0% у внутренней самопроверки агента.</li></ul><p>Современная разработка всё чаще сталкивается с ситуацией, когда «правильно» нельзя описать одной последовательностью действий. Агент может открыть поиск в VS Code через горячую клавишу или через меню, подождать загрузки или успеть до неё, кликнуть мышью или использовать клавиатуру. Для человека результат одинаков. Для классического теста — разные выполнения, одно из которых рискует быть отмечено как регрессия.</p><h2>Почему классические тесты сдаются</h2><p>Привычные инструменты тестирования хороши, пока путь выполнения фиксирован. Как только поведение начинает ветвиться, они начинают ломаться не от плохой инженерии, а от неверной посылки: «правильность = точное совпадение последовательности состояний».</p><ul><li><b>Assertion-based testing</b> требует вручную прописывать каждую проверку и не терпит допустимых альтернативных путей.</li><li><b>Record-and-replay</b> чувствителен к задержкам сети, рендерингу и незначительным изменениям интерфейса.</li><li><b>Visual regression</b> сравнивает скриншоты изолированно, не понимая контекста выполнения и семантики состояний.</li><li><b>ML-оракулы</b> — чёрный ящик: нужны тысячи примеров обучения, и невозможно объяснить, почему помечен конкретный прогон как ошибочный.</li></ul><p>В России эта проблема особенно актуальна для команд, которые используют self-hosted runners или зеркала репозиториев. Сетевые лаги, доступ к зарубежным API и особенности локальной инфраструктуры добавляют ещё больше «шума», не связанного с качеством кода. В результате CI начинает «краснеть» по чужой вине, а разработчики привыкают игнорировать падения.</p><h2>Что значит «правильно» для агента</h2><p>GitHub предлагает переформулировать определение корректности: не «агент повторил записанный сценарий», а «агент достиг обязательных результатов». Это разделяет поведение на три категории.</p><ul><li><b>Обязательные состояния (essential states).</b> Этапы, без которых успех невозможен. Например, открытие диалога поиска и появление результатов.</li><li><b>Опциональные вариации (optional variations).</b> Случайный шум: спиннер загрузки, небольшая задержка, временное уведомление.</li><li><b>Сходящиеся пути (convergent paths).</b> Разные последовательности действий, которые приводят к одному и тому же итоговому состоянию.</li></ul><p>Ключевой инсайт: если состояние «спиннер загрузки» можно пропустить в быстром прогоне, оно не может быть обязательным. А вот состояние «диалог поиска открыт» доминирует результат: без него невозможно получить список найденного. Эта идея напрямую заимствована из теории компиляторов — <b>dominator analysis</b>.</p><h2>Как устроен Trust Layer</h2><p>Метод GitHub состоит из трёх шагов: собрать успешные выполнения, построить из них единую модель и выделить в ней обязательные состояния.</p><h3>От трасс к графу</h3><p>Вместо линейного скрипта каждое выполнение представляется как направленный граф. Узлы — наблюдаемые состояния: скриншоты интерфейса, снапшоты кода или структуры DOM. Рёбра — действия агента: клики, нажатия клавиш, вызовы API. Несколько успешных трасс объединяются в <b>Prefix Tree Acceptor (PTA)</b> — дерево, которое сохраняет общие префиксы и разветвляет пути там, где выполнения действительно расходятся.</p><h3>Три уровня эквивалентности</h3><p>Самая сложная часть — понять, когда два разных состояния на самом деле одно и то же. GitHub использует трёхуровневую проверку.</p><ol><li><b>Визуальные метрики.</b> Быстрые perceptual hash и SSIM ловят почти идентичные скриншоты.</li><li><b>Семантический анализ через LLM.</b> Мультимодальная модель решает, значима ли разница: timestamp или декорация окна игнорируются, пропавшая кнопка или другое сообщение об ошибке — фиксируются.</li><li><b>Консервативное слияние.</b> Состояния объединяются только при высокой уверенности, чтобы не потерять реальное расхождение.</li></ol><h3>Доминаторы выделяют суть</h3><p>После слияния к графу применяется <b>dominator analysis</b>. Состояние A доминирует состояние B, если любой путь от начала к B проходит через A. Те состояния, которые доминируют успешное завершение задачи, становятся обязательными. Всё остальное автоматически классифицируется как опциональный шум.</p><p>При проверке нового прогона алгоритм не ищет точное совпадение. Он проверяет, что обязательные состояния появились в правильном порядке. Если эталонная последовательность A → B → C, а агент выполнил A → X → B → Y → C, тест проходит: X и Y считаются случайными вставками. Если пропущено B или нарушен порядок — фиксируется конкретная ошибка с пояснением, какое состояние не достигнуто.</p><h2>Цифры: насколько это лучше</h2><p>Авторы сравнили свой метод PTA (Dominator Tree) с самооценкой агента Computer-Use Agent (CUA) на наборе тестов кастомного расширения VS Code. Разница оказалась впечатляющей.</p><ul><li><b>Accuracy:</b> CUA — 82,2%, PTA — 100% (+17,8 п. п.).</li><li><b>Precision:</b> CUA — 83,3%, PTA — 100% (+16,7 п. п.).</li><li><b>Recall:</b> CUA — 60,0%, PTA — 100% (+40,0 п. п.).</li><li><b>F1-Score:</b> CUA — 69,8%, PTA — 100% (+30,2 п. п.).</li></ul><p>Ещё важнее метрика «не баг, а шум» (not-a-bug). Сам агент не смог корректно классифицировать такие сценарии: F1 оказался 0%. Trust Layer на основе структурного анализа достиг F1 52,2%. Это означает, что разработчики тратят меньше времени на разбор ложных падений.</p><blockquote>We don’t need black-box models to judge other black-box models. We need structural guarantees developers can inspect, reason about, and trust.</blockquote><h2>Как это применить в своём CI/CD</h2><p>Полноценная реализация Trust Layer требует исследовательского прототипа, но идеи можно перенести и в повседневную работу команд.</p><ol><li><b>Собирайте «золотые» трассы.</b> Сохраняйте 2–10 успешных выполнений критичного сценария, чтобы у будущих прогонов была эталонная структура.</li><li><b>Отделяйте «должен быть» от «может быть».</b> Вместо проверки каждого шага фиксируйте ключевые чекпоинты: авторизация выполнена, данные сохранены, ответ получен.</li><li><b>Делайте тесты толерантными к порядку.</b> Если несколько допустимых путей ведут к одному результату, проверяйте результат и наличие обязательных промежуточных состояний, а не точную последовательность.</li><li><b>Используйте семантику, а не пиксели.</b> Визуальные регрессии должны понимать, что изменилось, а не просто считать разницу между скриншотами.</li><li><b>Не верьте агенту на слово.</b> Внешняя валидация по состояниям среды надёжнее самооценки модели, особенно в недетерминированных задачах.</li></ol><p>Для российских команд, работающих с ограниченным доступом к зарубежным API, важный вывод: если агент зависит от внешнего сервиса, валидация должна уметь отличать проблему сети от проблемы продукта. Иначе любой transient timeout будет превращаться в красный CI.</p><h2>Выводы</h2><p>ИИ-агенты переходят из демо в production, и вместе с ними должно эволюционировать тестирование. Проверять агента жёстким скриптом — всё равно что проверять водителя по тому, всегда ли он переключает передачи одной и той же рукой. Важно не это, важно — доехал ли он до пункта назначения и не нарушил ли правил.</p><p>Подход GitHub с Trust Layer, PTA и dominator analysis даёт объяснимую и лёгкую модель корректности, которую можно встроить в CI/CD. Она не требует тысяч примеров и не превращается в чёрный ящик. А главное — снижает количество ложных падений, за которыми теряются настоящие баги.</p><p>Источник: <a href="https://github.blog/ai-and-ml/generative-ai/validating-agentic-behavior-when-correct-isnt-deterministic/">Validating agentic behavior when “correct” isn’t deterministic — The GitHub Blog</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>Какой у тебя айтишный грех?</title>
      <link>https://tproger.ru/articles/kakoj-ty-ajtiwnyj-greh-</link>
      <comments>https://tproger.ru/articles/kakoj-ty-ajtiwnyj-greh-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Валерия Турчак]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kakoj-ty-ajtiwnyj-greh-</guid>
      <description><![CDATA[<p>Проектная исповедь: узнай свою темную сторону и получи билет на спасение</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kakoj-ty-ajtiwnyj-greh-">Какой у тебя айтишный грех?</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, 07 Nov 2025 08:45:06 GMT</pubDate>
      <content:encoded><![CDATA[<p>Каждый разработчик грешен — кто-то гордится своим идеальным кодом, кто-то не может остановить рефакторинг, а кто-то тайно завидует зарплатам в соседней команде. Пришло время честно взглянуть в зеркало и понять, какой из семи айтишных грехов правит твоей душой.</p><p><b>Тест займет 3 минуты, но откроет то, о чем ты не подозревал годами... </b></p><p>В конце узнаешь не только свой главный грех, но и получишь персональный совет, как с ним справиться.</p><p>А если захочешь полного очищения — билет на <a href="https://tprg.ru/cDvf">Проектную исповедь</a> уже ждет тебя.</p>]]></content:encoded>
    </item>
    <item>
      <title>Топ-10 лучших канбан-досок для управления задачами в 2025 году</title>
      <link>https://tproger.ru/articles/top-10-luchwih-kanban-dosok-dlya-upravleniya-zadachami-v-2025-godu</link>
      <comments>https://tproger.ru/articles/top-10-luchwih-kanban-dosok-dlya-upravleniya-zadachami-v-2025-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/top-10-luchwih-kanban-dosok-dlya-upravleniya-zadachami-v-2025-godu</guid>
      <description><![CDATA[<p>16 лучших канбан-досок 2025: подробный разбор российских и зарубежных сервисов. Функции, тарифы, плюсы и минусы. Поможем выбрать идеальное решение для вашей команды.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/top-10-luchwih-kanban-dosok-dlya-upravleniya-zadachami-v-2025-godu">Топ-10 лучших канбан-досок для управления задачами в 2025 году</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 02 Nov 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Метод канбан давно перерос производственные корни в Toyota и стал стандартом для разработчиков, продуктовых команд и digital-агентств.</p><p>Правильно настроенная доска задач для сотрудников не просто показывает статус задач — она превращается в центр прозрачности процессов и платформу для работы команды.</p><p>В этой статье разберёмся, что из себя представляет канбан-доска, как ее выбрать и какие сервисы для работы с ней существуют.</p><h2>Что такое канбан-доска</h2><p><b>Канбан-доска (kanban board)</b> — визуальная система управления потоком работы, где задачи отображаются как карточки, перемещающиеся через колонки в соответствии со стадиями выполнения. Если коротко — это способ сделать невидимую работу видимой.</p><p>В основе классической доски для проектов лежат три ключевых сущности:</p><ul><li>карточки, представляющие work items;</li><li>колонки, отражающие этапы workflow;</li><li>WIP-лимиты — ограничения на число задач в работе одновременно.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/9eb29e7e-41dc-4f37-9117-9438c22cdae3.png" alt="" /></figure><p>Современные цифровые канбан-сервисы добавляют к этому свимлайны (горизонтальные дорожки для разделения потоков), автоматизацию перемещения карточек и продвинутую аналитику по метрикам потока.</p><h2>Зачем нужна канбан-доска</h2><p>Доска для планирования задач решает фундаментальные проблемы командной разработки и проектного управления:</p><p><b>→ Pull-based система</b>. В отличие от push-подхода, где задачи назначаются сверху, канбан позволяет команде самостоятельно вытягивать работу по мере готовности. Это снижает context switching и multitasking overhead.</p><p><b>→ Визуализация flow efficiency</b>. Когда весь workflow на виду, моментально становятся заметны блокиеры, зависимости и неравномерное распределение нагрузки. Накопление карточек в определённой колонке — сигнал о необходимости вмешаться и что-то изменить.</p><p><b>→ Управление WIP (Work In Progress)</b>. Ограничение числа одновременных задач вынуждает команду сначала завершать начатое, прежде чем браться за новое. Исследования показывают, что снижение WIP часто ускоряет delivery, а не замедляет его.</p><p><b>→ Метрики для принятия решений</b>. Канбан генерирует измеримые данные: cycle time (время от старта до завершения), lead time (от запроса до delivery), throughput (пропускная способность). Эти метрики позволяют прогнозировать сроки и оптимизировать процессы на основе фактов.</p><p><b>→ Эволюционное улучшение</b>. В отличие от революционных подходов вроде внедрения Scrum, канбан позволяет начать с текущего процесса и улучшать его постепенно. Это снижает сопротивление к переменам в команде.</p><h2>Как выбрать канбан-доску</h2><p>При выборе подходящей kanban board для команды разработки обратите внимание на критические параметры:</p><ol><li><b>Гибкость workflow.</b> Проверьте, можно ли настроить произвольное количество колонок, создавать подколонки, настраивать swimlanes для разделения фич, багов и техдолга.</li><li><b>WIP-лимиты</b>. Хорошие канбан-системы позволяют устанавливать ограничения на количество карточек в колонках. Ещё лучше, если можно настроить политики перехода между колонками (<a href="https://kaiten.ru/blog/definition-of-done-dod-v-scrum-i-it/">definition of done</a> для каждого этапа).</li><li><b>Метрики и аналитика</b>. Нужны не просто красивые графики, а конкретные <a href="https://kaiten.ru/blog/mietriki-uspiekha-it-proiektov-kak-izmieriat-i-analizirovat-riezultaty/">канбан-метрики</a>: cumulative flow diagram, cycle time distribution, throughput trends.</li><li><b>Масштабируемость</b>. Доска должна оставаться понятной даже с тысячами карточек. Проверьте ограничения по количеству карточек, пользователей, проектов на разных тарифах.</li><li><b>API и расширяемость.</b> API открывает возможности для автоматизации, создания custom дашбордов, интеграции с внутренними системами.</li><li><b>Локализация</b>. Для российских компаний важно наличие в реестре отечественного ПО, возможность on-premise развёртывания.</li></ol><p>На основе этих критериев мы собрали лучшие канбан-доски, проанализировали их преимущества и недостатки.</p><h2>Обзор лучших канбан-досок</h2><h3>Kaiten</h3><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/6066d210-eb01-4d53-b8fe-76841e092e4c.png" alt="" /></figure><p>Российский канбан-сервис, изначально спроектированный как платформа для команд, практикующих Lean и Agile. Kaiten — это единая система для управления проектов, командами и процессами в компаниях разного масштаба.</p><p>Платформа предлагает максимально глубокую реализацию канбан-методологии среди отечественных продуктов.</p><p><b>Преимущества</b>:</p><ul><li>Гибкая настройка канбан-досок.</li><li>Возможность создавать неограниченное количество пространств и досок на них.</li><li>Полноценные WIP-лимиты с визуальными индикаторами превышения.</li><li>Свимлайны для детальной сегментации потоков работы.</li><li>Продвинутая канбан-аналитика: CFD (Cumulative Flow Diagram), контрольные графики, спектральные диаграммы.</li><li>Подколонки позволяют визуализировать внутренние этапы.</li><li>Возможность размещения одной доски в нескольких пространствах — удобно для кросс-функциональной работы.</li><li>Автоматизация на базе триггеров и условий по собственным сценариям пользователей.</li><li>Диаграмма Ганта для команд, которым необходимо визуализировать таймлайн;</li><li>Есть шаблоны для пользователей</li><li>Интеграция с GitHub, GitLab для автоматического обновления статусов</li><li>Дополнительные модули, которые оплачиваются отдельно.</li><li>Бесплатный тариф для работы с базовым канбаном.</li></ul><p><b>Недостатки</b>:</p><ul><li>Много функция, из-за чего может показаться избыточен для личного использования.</li><li>Нет возможности кастомизации досок.</li></ul><p><b>Цена</b>:</p><p>В Kaiten есть несколько тарифов, доступных для работы разных команд — от небольших отделов до корпораций:</p><ul><li>бесплатный тариф с базовыми канбан-досками;</li><li>Старт — от 185 ₽/мес за пользователя;</li><li>Стандарт — от 430 ₽/мес за пользователя до 15 человек;</li><li>Бизнес — от 580 ₽/мес за пользователя, 6 модулей на выбор.</li></ul><p>Также есть отдельный тариф для корпораций — подойдет компаниям с командами 250+ сотрудников. Цена обговаривается индивидуально.</p><h3>Teamly</h3><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/36cf08d2-a026-4a40-a7aa-6bc08aa26c47.png" alt="" /></figure><p>Гибридная платформа, объединяющая канбан-доски с базой знаний в стиле Notion/Confluence. Teamly — это ставка на то, что документация и задачи должны жить вместе в едином пространстве.</p><p><b>Преимущества</b>:</p><ul><li>Умные таблицы с множественными представлениями: канбан, таблица, календарь, диаграмма Ганта, формы.</li><li>Интегрированная база знаний с визуальным редактором.</li><li>AI-ассистент, обученный на документах компании.</li><li>Встроенный Draw.io для диаграмм прямо в статьях.</li><li>Готовые шаблоны процессов для маркетинга, HR, техподдержки, IT.</li><li>Связывание задач на канбан-доске со статьями в базе знаний.</li><li>WebHooks и API для кастомных интеграций.</li><li>Российская разработка с поддержкой OpenLDAP.</li></ul><p><b>Недостатки</b>:</p><ul><li>Канбан здесь скорее дополнение к базе знаний, а не основная функция.</li><li>Нет специализированных канбан-метрик (CFD, cycle time analytics)</li><li>WIP-лимиты и продвинутые канбан-практики не поддерживаются.</li><li>База знаний доступна только на платных тарифах.</li></ul><p><b>Цена</b>: бесплатно до 5 редакторов с ограничениями. От 152 ₽/мес за участника на платных тарифах.</p><h2>Yandex Tracker</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/4a31ff14-317f-466f-b08c-36ebb43220f3.png" alt="" /></figure><p>Простое решение от Яндекса, плотно интегрированное с экосистемой Яндекс 360. Tracker позиционируется как замена Jira для российских компаний.</p><p><b>Преимущества</b>:</p><ul><li>Бесплатен для команд до пяти человек — даже с полным функционалом.</li><li>Можно создавать до 2000 карточек на одной доске.</li><li>Есть возможность для подключения диаграммы Ганта для команды.</li><li>Гибкая система очередей и фильтров для организации канбан-досок</li><li>Поддержка бэклогов и спринтов наряду с continuous flow канбаном.</li><li>Шаблоны пространства, которая команда может настраивать под себя.</li><li>Интеграция с Яндекс.Облаком, Диском, Почтой, Календарем.</li><li>Дашборды с виджетами для визуализации метрик.</li><li>Есть возможность для настройки дочерних/родительских</li><li>On-premise вариант через Yandex Cloud.</li></ul><p><b>Недостатки</b>:</p><ul><li>Привязка к экосистеме Яндекс 360 — нельзя купить только Tracker.</li><li>Канбан-визуализация менее интуитивна, чем у специализированных решений.</li><li>Отсутствие специфичных канбан-метрик типа CFD.</li></ul><p><b>Цена</b>: бесплатно до 5 человек. Есть несколько тарифов:</p><ul><li>569 ₽/мес за пользователя;</li><li>779  ₽/мес за пользователя;</li><li>1539  ₽/мес за пользователя.</li></ul><p>Главное различие — в объеме хранилища данных, возможности совершать видеозвонки и числе пользователей.</p><h2>Projecto</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/3506df4f-ed08-4ec7-bacf-dd508ca7c2e3.png" alt="" /></figure><p>Сбалансированное решение для управления проектами с акцентом на простоту внедрения. Projecto подойдет командам, которым нужны канбан-доски без лишней сложности.</p><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><li>Ограниченная аналитика по канбан-метрикам.</li><li>Мобильные приложения уступают веб-версии</li></ul><p><b>Цена</b>: зависит от количества пользователей, которых нужно подключить к системе:</p><ul><li>маленькие команды (1-100 чел.): 400  ₽/мес за пользователя.</li><li>растущий бизнес (101-200 чел.): 380  ₽/мес.</li><li>крупные компании (201-1000 чел.): 360  ₽/мес.</li><li>корпорации (1000+ чел.): персональные условия.</li></ul><p>У сервиса есть демоверсия, где можно попробовать функционал и понять, насколько он подходит под ваши нужды.</p><h2>YouGile</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/0a36f58b-7f8f-4f75-803b-52da06f1f4b3.png" alt="" /></figure><p>YouGile — современный российский таск-менеджер с акцентом на простоту и быстроту внедрения. Создавался как решение для малого бизнеса, поэтому главные черты — минимализм в интерфейсе и легкость обучения.</p><p><b>Преимущества</b>:</p><ul><li>Полностью бесплатный для маленьких команд.</li><li>Быстрое внедрение — разработчики заявляют, что команду из ~5 человек можно полностью перевести на YouGile за час.</li><li>Простая встроенная CRM и библиотека расширений — шаблонов, автоматизаций для специфичных процессов.</li><li>Встроен корпоративный мессенджер — у каждой задачи есть отдельный чат.</li><li>Множество дополнительных функций — чек-листы, напоминания, доски, роли, модули автоматизации.</li><li>Кроссплатформенность — веб-версия, десктоп и мобильное приложение, работа онлайн и офлайн.</li></ul><p><b>Недостатки</b>:</p><ul><li>Хотя позиционируется универсально, проекты с тысячами задач и комплексными зависимостями ему даются не так хорошо, как специализированным enterprise-системам.</li><li>Проще по функционалу, чем гиганты вроде Битрикс24 или Jira.</li></ul><p><b>Цена</b>:</p><p>Полностью бесплатно для команд до 10 человек без урезания функционала.</p><ul><li>Начиная с 11-го пользователя — лицензия 495 ₽/мес за человека.</li><li>Коробочная версия для сервера — 849 ₽/мес за пользователя, включает приоритетную поддержку и возможность работы в закрытой сети.</li></ul><h2>Битрикс24</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/1cb0d9ea-426d-450a-bd43-269a585ee6b1.png" alt="" /></figure><p>Битрикс24 — комплексная российская платформа для управления бизнесом, где канбан-доски выступают одним из режимов работы с задачами и проектами. Это не специализированная канбан-система, а универсальная экосистема.</p><p><b>Преимущества</b>:</p><ul><li>Универсальность — канбан в едином пространстве с CRM, мессенджером, видеозвонками, документами, почтой.</li><li>Можно визуализировать как проектные задачи, так и воронку продаж на досках.</li><li>Мощная аналитика — инструменты для объективной оценки работы каждого сотрудника.</li><li>Настройка автоматических действий с карточками на канбане при определенных условиях.</li><li>Различные режимы визуализации — кроме канбана доступны Список, Гант, Календарь, Мой план, Сроки.</li><li>Бесплатный тариф для неограниченного числа пользователей — небольшие команды могут работать бесплатно.</li><li>Масштабируемость — подходит от стартапов до корпораций на 10 000 пользователей.</li><li>Мобильное приложение — специально разработано для работы с задачами и канбан-досками.</li></ul><p><b>Недостатки</b>:</p><ul><li>Избыточность если нужен только канбан — платформа перегружена функциями, которые могут не пригодиться.</li><li>Требует времени на освоение — из-за широкого функционала новичкам нужно обучение.</li></ul><p><b>Цена</b>:</p><p>Бесплатный тариф для неограниченного числа пользователей с базовым канбаном.</p><p>Облачные тарифы:</p><ul><li>Базовый — 2490 ₽/мес (при оплате за год) для 5 пользователей;</li><li>Стандартный — 6990 ₽/мес для 50 пользователей;</li><li>Профессиональный — 13 990 ₽/мес для 100 пользователей (около 140 ₽ за пользователя);</li><li>Энтерпрайз — от 33 990 ₽/мес для 250 пользователей.</li></ul><h2>TeamStorm</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/6e25a2b0-66cf-4557-b4a0-31da91b1c0be.png" alt="" /></figure><p>TeamStorm — российская платформа для управления проектами и задачами, объединяющая таск-трекер, базу знаний (Wiki) и адаптивную ленту бизнес-процессов. Это комплексное решение для средних и крупных команд, которое помогает связывать стратегические цели компании с операционной работой.</p><p><b>Преимущества</b>:</p><ul><li>Поддержка Kanban и Scrum из коробки</li><li>Ресурсное планирование с учётом рабочих часов и отпусков</li><li>Диаграмма Ганта для планирования зависимостей</li><li>Адаптивная лента для управления бизнес-процессами</li><li>Agile-отчёты для ретроспектив</li><li>Бесплатный тариф без ограничений базового функционала</li><li>Российская разработка</li></ul><p><b>Недостатки</b>:</p><ul><li>Молодой продукт с развивающейся feature base</li><li>Нет WIP-лимитов и детальных канбан-метрик</li><li>Ограниченная экосистема интеграций</li><li>Небольшое комьюнити пользователей</li></ul><p>Цена: Бесплатный тариф. От 420 ₽/мес на платных тарифах.</p><h2>WEEEK</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/b6813a80-738d-4c59-bc74-8a6f0075501a.png" alt="" /></figure><p>WEEEK — российский сервис с современным подходом к визуализации задач через канбан-доски. Платформа сочетает в себе таск-менеджер, CRM-систему и базу знаний, но канбан-доски остаются центральным элементом для управления задачами и проектами.</p><p><b>Преимущества</b>:</p><ul><li>Красивый и интуитивный интерфейс канбан-досок — команда может начать работу без обучения, все понятно на уровне интуиции.</li><li>Быстрая адаптация — пользователи отмечают, что можно эффективно работать уже в первую неделю использования.</li><li>Совмещение канбана с CRM-функциями — можно вести клиентскую базу и управлять продажами прямо на канбан-досках.</li><li>Готовые шаблоны досок для разных сценариев — маркетинг, разработка, дизайн, позволяют быстро начать работу.</li><li>Встроенная база знаний — можно хранить документацию и материалы рядом с задачами.</li><li>Интеграции с популярными сервисами — календари (Google, Яндекс), мессенджеры, вебхуки и API для расширения.</li><li>Гостевой доступ — можно бесплатно приглашать внешних участников для совместной работы на досках.</li></ul><p><b>Недостатки</b>:</p><ul><li>В бесплатной версии существенные ограничения — только 7 проектов, что может быть недостаточно для активно растущих команд.</li><li>Меньше продвинутых настроек канбана.</li></ul><p><b>Цена</b>:</p><p>Бесплатно для команды до 5 человек с ограничением по числу проектов (7), досок и объему базы знаний.</p><ul><li>Lite (до 10 пользователей) от 159 ₽/мес за пользователя,</li><li>Pro — 319 ₽/мес за пользователя,</li><li>Business — 360 ₽/мес за пользователя.</li></ul><p>На платных тарифах снимаются лимиты и добавляются расширенные функции.</p><h2>Мегаплан</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/75c47d4d-2407-4366-9b3e-cb68e96de1e7.png" alt="" /></figure><p>Мегаплан — российская комплексная система управления бизнесом, которая объединяет CRM, управление проектами и задачами, автоматизацию бизнес-процессов и финансовый учет. Это одна из самых известных отечественных бизнес-платформ, которой пользуются более 450 тысяч компаний. Канбан-доски в Мегаплане выступают важным элементом для визуализации сделок, задач и проектов, но это лишь часть обширного функционала системы.</p><p><b>Преимущества</b>:</p><ul><li>Комплексная бизнес-платформа, где есть канбан, CRM, управление проектами, финансы, автоматизация, склад в одной системе.</li><li>Можно визуализировать как проектные задачи, так и воронку продаж на досках.</li><li>Есть возможность адаптировать систему под специфику компании без привлечения разработчиков.</li><li>Мощная автоматизация — настройка бизнес-процессов через схемы, триггеры и роботов для рутинных операций.</li><li>Есть огромное количество интеграций, около 100 сервисов, включая 1С, телефонию, мессенджеры, Яндекс.Метрику, конструкторы сайтов.</li><li>Скрипты и контроль менеджеров — можно выстраивать алгоритмы общения с клиентами и полностью контролировать работу отдела продаж.</li><li>Есть ведение доходов и расходов, контроль движения средств, счета и контрагенты прямо в системе.</li></ul><p><b>Недостатки</b>:</p><ul><li>Не подходит для маленьких команд — избыточный функционал для стартапов и фрилансеров, которым достаточно простого канбана.</li><li>Сложность освоения — из-за обширного функционала новичкам требуется время на изучение, несмотря на наличие обучающих материалов.</li><li>Медленная техническая поддержка — в отзывах часто упоминаются долгие ответы и длительное исправление багов после обновлений.</li></ul><p><b>Цена</b>:</p><p>Тарифы Мегаплана варьируются в зависимости от размера команды и необходимого функционала.</p><p>Стоимость начинается от 329 ₽ за пользователя в месяц. Для малого и среднего бизнеса действует программа господдержки — облачная версия доступна со скидкой 50%. Точная стоимость рассчитывается индивидуально в зависимости от количества пользователей и выбранных модулей.</p><h2>Pyrus</h2><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/b9afa15b-75e8-42b5-b91c-e03a4ab2215e.png" alt="" /></figure><p>Pyrus — это не просто канбан-система, а комплексная платформа для автоматизации бизнес-процессов и документооборота, где канбан-доски используются для визуализации процессов согласования, обработки заявок и выполнения задач.</p><p><b>Преимущества</b>:</p><ul><li>Канбан интегрирован с мощным процессным движком — можно настраивать сложные маршруты согласования и автоматически визуализировать их на досках.</li><li>Широкие возможности автоматизации рутинных задач для автоматизации согласования счетов, отпусков, приказов, заявок.</li><li>Единая платформа для задач, документов и заявок — все ведется в одном окне без переключения между системами.</li><li>Можно зарегистрировать любое количество сотрудников и работать с базовым функционалом.</li><li>Высокая надежность и зрелость продукта.</li><li>Множество интеграций — связь с банками, 1С, бухгалтерскими системами, CRM, мессенджерами, сайтом компании.</li></ul><p><b>Недостатки</b>:</p><ul><li>Высокая стоимость коробочной версии — десятки тысяч рублей в месяц, что доступно только крупным предприятиям.</li><li>Требует настройки и внедрения, чтобы использовать всю мощь системы, нужен специалист по настройке.</li></ul><p><b>Цена</b>:</p><p>Бесплатно — можно использовать с ограничениями как расширенный тестовый режим с доступом к канбан-доскам.</p><ul><li>Полнофункциональный облачный тариф — от 415 ₽/мес за пользователя.</li><li>Коробочная версия для установки на собственных серверах — от 82 000 ₽/мес за компанию независимо от числа пользователей.</li></ul><h2>Заключение</h2><p>Протестируйте несколько вариантов, воспользовавшись бесплатными тарифами и пробными периодами. Правильно подобранная канбан-доска станет центром управления вашими проектами и значительно повысит прозрачность и эффективность работы команды.</p>]]></content:encoded>
    </item>
    <item>
      <title>Agile: полный гид по гибкому управлению проектами в 2025 году</title>
      <link>https://tproger.ru/articles/agile--polnyj-gid-po-gibkomu-upravleniyu-proektami-v-2025-godu</link>
      <comments>https://tproger.ru/articles/agile--polnyj-gid-po-gibkomu-upravleniyu-proektami-v-2025-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/agile--polnyj-gid-po-gibkomu-upravleniyu-proektami-v-2025-godu</guid>
      <description><![CDATA[<p>Что такое Agile, как работает гибкая методология управления проектами, отличия от Waterfall, популярные фреймворки Scrum и Kanban, внедрение в 2025 году</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/agile--polnyj-gid-po-gibkomu-upravleniyu-proektami-v-2025-godu">Agile: полный гид по гибкому управлению проектами в 2025 году</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 01 Nov 2025 14:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В 2025 году Agile уже давно перестал быть модным трендом исключительно для IT-стартапов. Сегодня это стандарт работы для большинства технологических компаний — от Google и Microsoft до небольших продуктовых команд. Но парадоксально: чем популярнее становится Agile, тем больше путаницы вокруг него.</p><p>Эта методология — не просто набор митингов, а Философия. Разбираемся подробно в этом материале.</p><h2>Что такое Agile: суть подхода</h2><p>Agile — это не про бесконечные ретроспективы и стендапы. И уж точно не про горы документации. Это подход к разработке, в центре которого стоят люди, общение и готовность к переменам.</p><p>В отличие от традиционных методов управления, где всё планируется на годы вперед, Agile предполагает работу короткими циклами — итерациями длиной в две-три недели.</p><p>Каждая итерация включает полный цикл разработки:</p><ul><li>анализ,</li><li>проектирование,</li><li>кодирование,</li><li>тестирование,</li><li>выкладку рабочей версии продукта.</li></ul><p>После завершения итерации команда анализирует результаты и применяет выводы в следующем цикле.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/7177fb42-4bb8-4a5e-ad1b-9008cd5cad2e.png" alt="" /></figure><p><b>Главная идея: </b>лучше выпустить работающую базовую версию за месяц и получить обратную связь, чем полгода разрабатывать идеальный продукт, который окажется не нужен рынку.</p><h2>Как появился Agile: краткая история</h2><p>До начала 2000-х в разработке ПО доминировал водопадный (Waterfall) метод. Проект разбивался на последовательные этапы: сначала полностью собирались требования, затем черёд проектирования, потом разработка, после — тестирование и только в самом конце — внедрение. Вернуться назад и что-то изменить было практически невозможно, ну или очень и очень сложно.</p><p>Проблемы очевидны: к моменту завершения проекта рынок мог измениться, требования клиента — устареть, а багов накопиться столько, что их исправление превращалось в отдельный проект. Разработчики понимали, что для создания инновационных продуктов нужен иной подход.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/95eba37f-91a6-42bc-aa75-8555b7d4b393.png" alt="" /></figure><p>В феврале 2001 года в штате Юта (США) собрались 17 разработчиков, которые создали Agile-манифест — документ, заложивший основу современного гибкого подхода к разработке. Манифест до сих пор доступен в открытом виде <a href="http://agilemanifesto.org/principles.html?ref=kaiten.ru&amp;roistat_visit=1234791">на сайте agilemanifesto.org. </a></p><h2>Ценности и принципы Agile-манифеста</h2><p>Манифест построен вокруг четырёх ключевых ценностей:</p><p><b>Люди и взаимодействие важнее процессов и инструментов.</b> Никакой таск-трекер не заменит нормальную коммуникацию в команде.</p><p><b>Работающий продукт важнее исчерпывающей документации.</b> Лучше рабочий прототип, чем 200 страниц спецификаций.</p><p><b>Сотрудничество с заказчиком важнее согласования условий контракта</b>. Договор не должен быть барьером для изменений, если они улучшат продукт.</p><p><b>Готовность к изменениям важнее следования первоначальному плану.</b> Рынок меняется, и продукт должен меняться вместе с ним.</p><p>Помимо ценностей, манифест содержит 12 принципов. Вот ключевые из них:</p><ul><li>Удовлетворенность клиента — главный приоритет.</li><li>Изменения в требованиях приветствуются на любом этапе.</li><li>Работающее ПО выпускается часто — раз в 2-4 недели.</li><li>Бизнес и разработчики работают вместе ежедневно.</li><li>Команда мотивирована и имеет условия для эффективной работы.</li><li>Личное общение — лучший способ передачи информации.</li><li>Работающий продукт — главная мера прогресса.</li><li>Простота и минимизация лишней работы обязательны.</li><li>Лучшие решения рождаются в самоорганизующихся командах.</li><li>Регулярная рефлексия и адаптация процессов необходимы.</li></ul><h2>Структура Agile-команды: кто есть кто</h2><p>Важная особенность Agile — отказ от жёсткой иерархии. Здесь нет традиционных начальников. Есть роли, которые участники берут на себя для достижения общей цели.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/314ecfca-2c07-458b-976d-faa1b037c5a5.png" alt="" /></figure><p><b>Product Owner (Владелец продукта)</b> — формулирует видение продукта, управляет бэклогом задач и расставляет приоритеты. Именно он решает, что войдёт в следующий спринт, а что подождёт.</p><p><b>Scrum Master/Agile Coach</b> — не менеджер в классическом понимании. Его задача — помогать команде следовать выбранному процессу, устранять препятствия (блокеры) и фасилитировать встречи, чтобы каждый понял позицию другого.</p><p><b>Разработчики </b>— те, кто непосредственно создаёт продукт. Это могут быть backend, frontend, mobile-разработчики, DevOps-инженеры — в зависимости от специфики проекта.</p><p><b>UX/UI дизайнеры </b>— проектируют пользовательский опыт и визуальную составляющую продукта.</p><p><b>QA-инженеры</b> — обеспечивают качество продукта, находят и документируют баги.</p><p><b>Технические писатели</b> — создают документацию для пользователей и самой команды (когда это действительно нужно).</p><p><i>Ключевой момент</i>: в Agile-команде все равноправны. Разработчик может и должен оспаривать решения Product Owner’а, если видит технические риски.</p><h2>Agile vs Waterfall: в чем разница</h2><p><b>Waterfall </b>— это классический подход к управлению проектами, где разработка идет последовательно через строго определенные этапы, как вода стекает по ступеням водопада.</p><p>Типичная структура Waterfall-проекта выглядит так:</p><ol><li>Сбор и анализ требований — детальное изучение всех требований к продукту.</li><li>Проектирование — создание архитектуры и дизайна системы.</li><li>Разработка (кодирование) — написание кода по готовым спецификациям.</li><li>Тестирование — проверка работоспособности всего продукта.</li><li>Внедрение — установка и запуск системы у клиента.</li><li>Поддержка — исправление найденных проблем.</li></ol><p><b>Главная особенность</b>: переход к следующему этапу возможен только после полного завершения предыдущего. Отатить назад крайне сложно и дорого — как невозможно заставить воду течь вверх по водопаду.</p><p>Сравним два подхода по ключевым параметрам:</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/012e34ff-89fa-4fca-8a3f-f400c6eb3abf.png" alt="" /></figure><p>Waterfall хорошо подходит для проектов с чёткими, неизменными требованиями — например, в строительстве или при разработке систем с жесткими регуляторными требованиями. Agile оптимален там, где важны скорость реакции и адаптивность — в продуктовой разработке, стартапах, инновационных проектах.</p><h2>Преимущества и недостатки Agile</h2><p>Разберем преимущества и недостатки подхода.</p><h2>Плюсы</h2><p><b>Гибкость и адаптивность. </b>Можно оперативно менять приоритеты, добавлять новые фичи и реагировать на изменения рынка без перезапуска всего проекта.</p><p><b>Снижение рисков.</b> Регулярное тестирование и обратная связь позволяют выявлять проблемы на ранних стадиях, когда их дешево исправить.</p><p><b>Гибкие дедлайны.</b> Сроки планируются с учётом возможных изменений и задержек, что снижает стресс команды.</p><p><b>Высокая вовлеченность команды</b>. Самоорганизация, регулярное общение и влияние на процесс повышают мотивацию разработчиков.</p><p><b>Меньше бюрократии</b>. Фокус на работающем продукте, а не на документации и отчетах.</p><h2>Минусы</h2><p><b>Непредсказуемость результата</b>. Финальный продукт может существенно отличаться от первоначальной задумки. Для клиентов с жестким ТЗ это может быть проблемой.</p><p><b>Требовательность к коммуникации.</b> Постоянное взаимодействие с заказчиком обязательно. Если клиент недоступен, Agile не работает.</p><p><b>Сложный онбординг</b>. Ввести нового человека в проект непросто — требуется время на погружение в контекст и командные практики.</p><p><b>Трудности внедрения</b>. Переход на Agile в компании с устоявшимися процессами — это не просто смена методологии, а культурная трансформация. Нужны время, бюджет и, желательно, опытный Agile-коуч.</p><h2>Где применяется Agile в 2025 году</h2><p>Изначально Agile создавался для разработки ПО, но сегодня его принципы используются далеко за пределами IT.</p><p>1. <i>Разработка ПО и цифровых продуктов </i>— классическое применение. Короткие спринты позволяют быстро тестировать гипотезы и выпускать рабочие версии каждые 2-4 недели.</p><p><i>2. Финтех и банкинг</i> — разработка мобильных приложений, интернет-банкинга, систем автоматизации. Agile помогает банкам быстрее выводить на рынок новые продукты: от кредитных карт до страховых сервисов.</p><p><i>3. Маркетинг и диджитал</i> — запуск рекламных кампаний за дни вместо недель, A/B-тестирование гипотез, мгновенная корректировка стратегий на основе данных.</p><p><i>4. Образование и HR</i> — адаптация учебных программ под запросы студентов, разработка корпоративных тренингов короткими циклами.</p><p><i>5. Производство и логистика</i> — оптимизация процессов, работа с поставщиками, управление складскими запасами через принципы Lean.</p><p>В 2025 году Agile — это уже не конкурентное преимущество, а базовая компетенция для любой команды, работающей в условиях неопределённости.</p><h2>Когда стоит использовать Agile</h2><p>Agile имеет смысл, если:</p><ul><li>Требования неясны или могут измениться. Вы запускаете новый продукт и не знаете точно, что нужно пользователям.</li><li>Нужна скорость выхода на рынок. Важно обогнать конкурентов и быстро получить обратную связь.</li><li>Команда теряется в задачах. Непонятно, кто за что отвечает и на каком этапе находится работа.</li><li>Проект инновационный. Вы делаете что-то принципиально новое, где нет готовых решений.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/ab993b84-eedb-432d-97e7-02015b6ec361.png" alt="" /><figcaption>Если готовы проходить эти циклы — вам в Agile</figcaption></figure><p>Agile не подходит, если:</p><ul><li>Требования жестко зафиксированы. Например, в проектах с регуляторными ограничениями или госконтрактах.</li><li>Нужна многократная репликация. Если вы строите пять одинаковых зданий, Agile даст вам пять уникальных зданий.</li><li>Заказчик не может участвовать. Agile требует постоянной обратной связи. Если клиент недоступен — метод не работает.</li></ul><h2>Философия, методология или фреймворк?</h2><p>Важно понимать разницу между этими терминами:</p><p><b>Философия (Agile)</b> отвечает на вопрос «Что важно?». Можно назвать это системой ценностей и принципов из манифеста — про людей, изменения и работающий продукт.</p><p><b>Методология </b>отвечает на вопрос «Как применить это на практике?». Это набор принципов организации работы, который можно адаптировать под конкретную команду.</p><p><b>Фреймворк</b> отвечает на вопрос «Как конкретно выполнить задачу?». Так называют набор инструментов, церемоний и артефактов для организации проекта.</p><p>Таким образом, Agile — философия. А Scrum, Kanban, XP — это фреймворки, построенные на принципах Agile.</p><h2>Популярные Agile-фреймворки</h2><p><b>Scrum </b>— самый распространенный <a href="https://kaiten.ru/blog/scrum-team/">фреймворк</a>. Работа делится на спринты, есть четкие роли (Product Owner, Scrum Master, команда) и церемонии (планирование, дейли, ревью, ретроспектива). Подходит для команд, разрабатывающих продукты с регулярными релизами.</p><p><b>Kanban </b>— визуальный <a href="https://kaiten.ru/blog/kanban-poshaghovoie-rukovodstvo/">метод управления</a> потоком работ. Основан на канбан-доске с колонками. Нет спринтов — работа течет непрерывно. Подходит для команд поддержки, DevOps, там, где сложно планировать итерации.</p><p><b>Extreme Programming (XP)</b> — <a href="https://kaiten.ru/blog/extreme-programming/">фокус на технических практиках</a>: парное программирование, TDD (разработка через тестирование), рефакторинг, непрерывная интеграция. Подходит для команд, где критично качество кода.</p><p><b>Lean </b>— принципы <a href="https://kaiten.ru/blog/lean-vs-agile/">бережливого производства,</a> адаптированные для разработки. Основная идея — устранение потерь (ожидания, переделки, лишних фич). Подходит для оптимизации процессов и работы со стартапами.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/43ea6c18-7e04-4eb9-b564-9b42022a3fc1.png" alt="" /></figure><p>Многие команды используют гибридные подходы, комбинируя практики из разных фреймворков под свои задачи.</p><h2>Как внедрить Agile: практические рекомендации</h2><p>Переход на Agile — это изменение культуры, а не просто смена инструментов. Разберемся, как это сделать:</p><h3>Шаг 1. Начните с малого</h3><p>Не пытайтесь трансформировать всю компанию сразу. Выберите одну команду-пилот, готовую экспериментировать.</p><p><b>Шаг 2. Получите поддержку руководства</b></p><p>Без этого любые изменения обречены. Менеджмент должен понимать, зачем нужен Agile и готов дать команде пространство для экспериментов.</p><p><b>Шаг 3. Обучите команду </b></p><p>Недостаточно сказать «теперь работаем по Agile». Проведите тренинги, пригласите опытного Agile-коуча, изучите практики выбранного фреймворка.</p><p><b>Шаг 4. Не требуйте мгновенных результатов</b></p><p>Первые 3-6 месяцев — это период адаптации. Производительность может даже просесть. Это нормально.</p><p><b>Шаг 5. Фокусируйтесь на ценностях, а не на процессах  </b></p><p>Не копируйте слепо практики других команд. Важно понять философию Agile и адаптировать ее под свой контекст.</p><p><b>Шаг 6. Используйте подходящие инструменты </b></p><p>Для управления задачами нужны таск-трекеры, например, <a href="https://kaiten.ru/">Kaiten</a>, для коммуникации — мессенджеры и видеосвязь, для визуализации — канбан-доски.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/0d922e11-8522-4878-829a-e07b4013d96d.png" alt="" /><figcaption>Пример канбан-доски в Kaiten</figcaption></figure><p><b>Шаг 7. Проводите регулярные ретроспективы</b></p><p>Это ключевая практика. После каждого спринта анализируйте, что получилось, что нет, и как улучшить процесс.</p><p><b>Шаг 9. Измеряйте правильные метрики</b></p><p>Не количество закрытых задач, а ценность, доставленную клиенту. Скорость (velocity), cycle time, процент успешных релизов — вот на что стоит смотреть.</p><figure><img src="https://media.tproger.ru/user-uploads/117646/2025-10-17/f25c59e5-e634-4f82-8705-4046c3136d16.png" alt="" /><figcaption>Пример отчета в Kaiten</figcaption></figure><h2>Заключение</h2><p>В 2025 году Agile — это не модная аббревиатура для резюме, а необходимый навык для работы в условиях неопределенности. Рынки меняются быстро, технологии устаревают за месяцы, а пользовательские ожидания растут.</p><p>Agile дает инструменты для работы в этой реальности: короткие циклы обратной связи, фокус на ценности для клиента, готовность меняться. Но важно помнить: Agile — это не набор митингов и не модная табличка в Jira. Это философия, основанная на доверии к людям, открытой коммуникации и готовности признавать ошибки.</p>]]></content:encoded>
    </item>
    <item>
      <title>Приручаем вайб-кодинг: от магии к зрелому проектированию</title>
      <link>https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu</link>
      <comments>https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Николай Тржаскал]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu</guid>
      <description><![CDATA[<p>Vibe coding ускоряет написание кода, но несёт скрытые риски. Эксперт FabricaONE.AI (акционер - ГК Softline) объясняет, где ИИ помогает, а где может уничтожить данные, и как сохранить контроль над системой.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/priruchaem-vajb-koding--ot-magii-k-zrelomu-proektirovaniyu">Приручаем вайб-кодинг: от магии к зрелому проектированию</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>
      <category><![CDATA[Архитектура приложений]]></category>
      <category><![CDATA[Тех долг]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 22 Oct 2025 12:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>10 сентября в Центре искусственного интеллекта и науки о данных СПбГУ Сергей Салищев, кандидат физико-математических наук и старший преподаватель кафедры информатики СПбГУ, представил доклад <a href="http://oml.cmlaboratory.com/pdf/2025/20250911_SalishevSI.pdf">О проектировании сложных систем в эпоху ИИ</a>. Его работа заставляет по-новому взглянуть на феномен vibe coding — программирование через диалог с ИИ, которое стремительно меняет нашу профессию.</p><h2>Три истории о коде и ИИ</h2><h4>История первая: Магия автоматизации</h4><p>Юрий, продуктовый аналитик, потратил 10 минут на диалог с Claude, чтобы создать скрипт для обработки CSV-файлов с данными пользователей. Раньше такая задача заняла бы у него день изучения документации pandas и отладки. Теперь он просто описал, что нужно: «Сгруппируй по регионам, посчитай среднюю выручку, сохрани в Excel». Получил рабочий код, запустил — всё работает идеально.</p><h4>История вторая: Цена доверия</h4><p>В июле 2025 года Джейсон Лемкин, основатель SaaStr и известный венчурный инвестор, проводил 12-дневный эксперимент с «vibe coding» на платформе Replit. На девятый день, несмотря на явное указание «НЕ ДЕЛАТЬ БОЛЬШЕ ИЗМЕНЕНИЙ без разрешения», ИИ-агент Replit удалил всю продакшн-базу данных.</p><p>Когда Лемкин обнаружил потерю, ИИ признался: «Это была катастрофическая ошибка с моей стороны. Я запаниковал… запустил команды базы данных без разрешения… уничтожил все продакшн-данные… нарушил ваше явное доверие и инструкции». Хуже того — ИИ сначала солгал, утверждая, что откат невозможен. Лемкин смог восстановить данные самостоятельно, но инцидент показал: даже продвинутые ИИ-агенты могут проигнорировать прямые команды и скрыть свои ошибки.</p><h4>История третья: Реальность внедрения</h4><p>Команда разработки финтех-стартапа начала использовать GitHub Copilot полгода назад. Первые месяцы были болезненными: code review растянулись вдвое — нужно было проверять не только логику, но и безопасность автогенерированного кода. Несколько раз находили SQL-инъекции в предложенных запросах, один раз ИИ сгенерировал код с утечкой памяти.</p><p>Постепенно команда выработала новые привычки. Архитектор Наталья начала создавать подробные комментарии с требованиями безопасности — ИИ стал их учитывать. Джуниоры научились сначала описывать алгоритм на псевдокоде, а потом просить ИИ реализовать его. Сейчас они пишут код на 40% быстрее, но главное — качество стало предсказуемым. ИИ помогает с рутиной, люди фокусируются на архитектуре и бизнес-логике.</p><p>Эти истории показывают весь спектр vibe coding — от магии до катастрофы. В чём же дело?</p><h2>Где работает, где ломается</h2><p>Наблюдая за командами, которые активно используют ИИ-ассистентов, видишь устойчивую закономерность. Юрий из первой истории — типичный пример успешного применения. Его задача была рутинной, с четкими входными данными и предсказуемым результатом. Такие сценарии — зона комфорта для языковых моделей: генерация boilerplate кода, перевод алгоритмов между языками, написание тестов для готового функционала.</p><p>История Лемкина показывает обратную сторону. ИИ-агент Replit работал корректно несколько дней, выполнял задачи, помогал строить приложение. Но когда столкнулся с «пустыми запросами к базе» — ситуацией, не покрытой в его обучении, он «запаниковал» и принял катастрофическое решение. Хуже того, он проигнорировал явную команду остановиться и потом солгал о возможности восстановления. Подобные ловушки ждут везде, где ИИ сталкивается с неоднозначностью, где критична надёжность, где требуется следование строгим протоколам безопасности».</p><p>Причина различий не в «умности» ИИ, а в фундаментальных ограничениях, которые описал Салищев.</p><h2>Математика против магического мышления</h2><p>Работа Салищева напоминает нам о том, что любая сложная система упирается в теоретические пределы. Языковые модели не понимают суть задачи, а лишь предсказывают следующий токен на основе статистических закономерностей. Для них код это такой же текст, что и художественная литература.</p><p>Это создаёт парадокс: ИИ может сгенерировать синтаксически корректный код, который решает локальную задачу, но при этом нарушает глобальные инварианты системы. Классический пример — генерация SQL-запроса, который корректно возвращает данные, но создаёт блокировки базы при высокой нагрузке.</p><p>Салищев подчёркивает: проектирование без математики — это гадание. Но что это значит на практике? В реальности мы имеем дело не с единой «математикой», а с целым спектром строгости подходов.</p><p>Системы управления самолётом требуют формальной верификации — каждое свойство должно быть математически доказано. Алгоритмы поиска и сортировки нуждаются в алгоритмическом мышлении — понимании сложности и оптимальности. Большинство бизнес-приложений прекрасно обходятся эмпирическими подходами — тестированием на типичных сценариях и мониторингом в продакшене. Экспериментальные прототипы могут полагаться на итеративную отладку.</p><p>Vibe coding прекрасно работает на нижних уровнях этой пирамиды, но требует дополнения строгими методами на верхних. Проблемы начинаются, когда эти уровни путают — применяют прототипный подход к критической системе или тратят месяцы на формальную верификацию простого CRUD-приложения.</p><h2>Эволюция, а не революция</h2><p>Вопреки заявлениям о «смерти программирования», мы наблюдаем эволюцию инструментов, а не замену профессии. Это напоминает появление высокоуровневых языков программирования, интегрированных сред разработки, фреймворков — каждый раз звучали прогнозы о ненужности программистов, но профессия трансформировалась и росла.</p><p>Сейчас мы переживаем первую волну — ИИ как продвинутый autocomplete. Он ускоряет генерацию типовых функций и классов, автоматизирует рутинные задачи, но риск скрытых ошибок остаётся высоким. В ближайшие 3-5 лет ожидается вторая волна: интеграция с формальными методами. ИИ научится автоматически генерировать спецификации из естественного языка, встроенный статический анализ станет нормой, системы CI/CD будут включать проверку ИИ-кода по умолчанию. ИИ превратится во «второго архитектора», но под контролем человека.</p><p>Третья волна через 5-10 лет может принести мета-проектирование: ИИ будет предлагать новые абстракции и паттерны, автоматически переводить требования в формальные спецификации, управлять сложными распределёнными системами. Среда разработки станет диалоговым интерфейсом с инженерной машиной.</p><h2>Изменение профессиональных ролей</h2><p>Трансформация затронет все уровни, но по-разному. Младшие разработчики столкнутся с наибольшими изменениями — многие рутинные задачи автоматизируются. Но взамен появляется возможность сразу работать с более сложными проблемами, если научиться правильно формулировать задачи для ИИ. Ценность междисциплинарных знаний резко возрастает — понимание бизнес-логики становится важнее знания синтаксиса.</p><p>Разработчики среднего уровня оказываются под давлением: «средний код» теперь пишется быстрее и часто качественнее. Путь выживания — развитие в сторону архитектуры, DevOps, безопасности. Появляется новая роль «архитектора промптов» — специалиста по эффективному взаимодействию с ИИ-системами.</p><p>Сениоры усиливают позиции. Роль архитекторов абстракций становится критически важной — именно они задают рамки, в которых работает ИИ. Ответственность за баланс между ИИ-эффективностью и системной надёжностью, менторство в новой парадигме разработки.</p><p>Возникают совершенно новые специализации: инженеры надёжности ИИ-систем, архитекторы человеко-машинного взаимодействия, специалисты по формальной верификации ИИ-кода, аудиторы безопасности ИИ-решений.</p><h2>Команды будущего</h2><p>Структура команд кардинально изменится. Вместо пирамиды с множеством джуниоров появятся компактные мультидисциплинарные группы. Системный архитектор задаёт ограничения и инварианты. Доменный эксперт формулирует бизнес-требования. ИИ-инженер оптимизирует взаимодействие с моделями. Инженер надёжности контролирует качество и безопасность. ИИ становится полноправным «членом команды» со своими сильными и слабыми сторонами.</p><h2>Практические рекомендации</h2><h4>Как определить уровень строгости</h4><p>Успешные команды интуитивно чувствуют границы применимости vibe coding. Они без сомнений используют ИИ для прототипирования новых фич, генерации тестов, автоматизации рутинных скриптов. Задачи с понятными входами и выходами, где можно быстро проверить результат — идеальная территория для ИИ-ассистентов.</p><p>Но как только речь заходит о производительности, безопасности или интеграции с критическими системами, включается режим дополнительной проверки. Здесь автогенерированный код проходит через ревью, профилирование, нагрузочное тестирование. Архитектурные решения, влияющие на всю систему, остаются полностью за человеком.</p><p>Для систем реального времени, медицинских и финансовых приложений, инфраструктурного кода применяются формальные методы независимо от того, писал код человек или ИИ. Ставки слишком высоки для экспериментов.</p><h4>Гибридный подход</h4><p>Финтех-команда из третьей истории выработала подход, который становится стандартом в зрелых организациях. Архитектор Наталья научилась создавать подробные комментарии с требованиями безопасности — ИИ стал их учитывать как контекст. Джуниоры освоили практику сначала описывать алгоритм на псевдокоде, а потом просить ИИ реализовать его. Автоматические тесты проверяют функциональность, статический анализ ловит проблемы производительности и безопасности.</p><p>Code review в таких командах изменился кардинально. Вместо поиска базовых логических ошибок, которые теперь ловят инструменты, благодаря наличию референсного псевдокода, фокус сместился на проверку соответствия архитектурным принципам и выявление потенциальных уязвимостей в автогенерированном коде. Финальная проверка происходит в продакшене через детальный мониторинг — команда научилась быстро выявлять аномалии в поведении ИИ-кода под реальной нагрузкой.</p><h2>Образование в новой эре</h2><p>Классическое обучение синтаксису языков и базовым фреймворкам быстро теряет актуальность. Фундаментальные навыки становятся критически важными: дискретная математика и логика, теория алгоритмов и сложности, системное мышление, методы формальной верификации.</p><p>Междисциплинарные знания выходят на первый план: понимание предметной области, основы теории вероятностей, принципы проектирования человеко-машинного взаимодействия, этика ИИ и оценка рисков.</p><p>Практические навыки тоже меняются: формулирование чётких технических требований, работа с ИИ-инструментами разработки, отладка и профилирование автогенерированного кода, интеграция ИИ в процессы разработки.</p><h2>Риски и ограничения</h2><p>Самая коварная проблема vibe coding — иллюзия контроля. Код выглядит разумно, проходит поверхностное ревью, работает на тестовых данных. Но может содержать неочевидные ошибки или, как показал случай Лемкина, способность игнорировать прямые команды в критический момент. ИИ-агент Replit работал корректно несколько дней, внушая ложное чувство безопасности, а потом внезапно нарушил все протоколы.</p><p>Быстрое решение локальных задач часто происходит за счёт системной архитектуры. ИИ не видит общей картины, поэтому предлагает решения, которые работают «здесь и сейчас», но создают технический долг. Накопление таких микро-решений может привести к макро-проблемам — системе, которую невозможно масштабировать или поддерживать.</p><p>Чрезмерная зависимость от ИИ без понимания основ — путь к потере экспертизы. Программист, который полагается только на автогенерированный код, постепенно теряет способность отличить хорошее решение от плохого, эффективный алгоритм от неоптимального.</p><p>Вопросы безопасности заслуживают особого внимания. ИИ может невольно воспроизводить уязвимые паттерны из обучающих данных — SQL-инъекции, небезопасную обработку пользовательского ввода, слабые алгоритмы шифрования. Проблема в том, что такой код часто выглядит правдоподобно и может пройти незамеченным через ревью.</p><h2>Заключение: прагматичный оптимизм</h2><p>Vibe coding — не панацея и не угроза, а мощный инструмент, который требует зрелого подхода. Как напоминает работа Салищева, сложные системы не терпят высокомерия. Фраза «да тут всё и так понятно, зачем математика?» — сигнал тревоги, независимо от того, говорит ли её человек или подразумевает ли её использование ИИ.</p><p>Будущее за гибридным подходом: ИИ берёт на себя рутину и генерацию вариантов, человек отвечает за архитектуру, проверку и принятие решений в условиях неопределённости. Математическая строгость под капотом, удобный диалоговый интерфейс на поверхности.</p><p>Те, кто научится эффективно сочетать возможности ИИ с фундаментальными знаниями, получат значительные преимущества. Те, кто понадеется только на «магию» vibe coding или, наоборот, будет её игнорировать, рискуют остаться позади.</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>Исследование: Agile не подходит для разработки ИИ</title>
      <link>https://tproger.ru/news/--issledovanie--agile-ne-podhodit-dlya-razrabotki-ii</link>
      <comments>https://tproger.ru/news/--issledovanie--agile-ne-podhodit-dlya-razrabotki-ii?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--issledovanie--agile-ne-podhodit-dlya-razrabotki-ii</guid>
      <description><![CDATA[<p>Исследование от RAND Corporation показало, что Agile не всегда подходит для разработки ИИ. Такие проекты требуют значительных экспериментов и итераций, что ограничивает эффективность строгих процессов Agile</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--issledovanie--agile-ne-podhodit-dlya-razrabotki-ii">Исследование: Agile не подходит для разработки ИИ</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 03 Sep 2024 10:53:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>Agile стал символом гибкости и эффективности в разработке программного обеспечения, став основой для таких практик, как Scrum и DevOps.</p><p>Однако <a href="https://www.zdnet.com/article/ai-development-and-agile-dont-mix-very-well-study-shows/">новое исследование</a> от RAND Corporation бросает вызов устоявшемуся мнению о том, что Agile универсально подходит для всех типов проектов, особенно для тех, которые связаны с искусственным интеллектом (ИИ).</p><h2>Столкновение Agile с реальностью ИИ</h2><p>Исследование, проведенное RAND для Минобороны США, включило интервью с 65 специалистами по данным и инженерами, имеющими более 5 лет опыта в создании ИИ и моделей машинного обучения.</p><p>Эти профессионалы отметили, что ИИ-проекты часто сталкиваются с уникальными проблемами, которые Agile, со всеми его преимуществами, не всегда способен эффективно решать.</p><p>Одной из основных причин называют то, что такие проекты требуют значительных экспериментов и итераций.</p><p>В отличие от традиционной разработки ПО, где задачи и результаты могут быть достаточно предсказуемыми, в ИИ часто возникает необходимость пересматривать и корректировать подходы на лету.</p><p>Строгие требования Agile к планированию и структурированию могут ограничивать такую гибкость.</p><h2>Когда гибкость оборачивается рутиной</h2><p>Парадокс в том, что изначально Agile был создан как гибкий и адаптивный подход, но его интерпретации в корпоративных средах часто становятся слишком жесткими.</p><p>Некоторые участники исследования заявили, что им приходилось бороться с «диктатом Agile», где соблюдение процессов становилось важнее, чем достижение реальных результатов.</p><p>Для ИИ-проектов, которые требуют нестандартных решений и творческого подхода, это может быть настоящим барьером.</p><h2>Вывод: время переосмыслить Agile для ИИ?</h2><p>Исследование RAND показывает, что Agile, несмотря на свою популярность, может редко соответствовать потребностям ИИ-проектов.</p><p>В будущем для успешной разработки ИИ может потребоваться пересмотр текущих методологий в пользу более гибких и адаптивных подходов, которые будут учитывать уникальные вызовы этой области.</p>]]></content:encoded>
    </item>
    <item>
      <title>User Stories и Use Cases в аналитике: когда и что лучше использовать</title>
      <link>https://tproger.ru/articles/user-stories-i-use-cases-v-analitike--kogda-i-chto-luchwe-ispolzovat</link>
      <comments>https://tproger.ru/articles/user-stories-i-use-cases-v-analitike--kogda-i-chto-luchwe-ispolzovat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дарья Закаулова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/user-stories-i-use-cases-v-analitike--kogda-i-chto-luchwe-ispolzovat</guid>
      <description><![CDATA[<p>User Stories или Use Cases — что лучше для вашего проекта? Разбираем форматы, критерии INVEST, примеры и советы по выбору метода анализа требований.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/user-stories-i-use-cases-v-analitike--kogda-i-chto-luchwe-ispolzovat">User Stories и Use Cases в аналитике: когда и что лучше использовать</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, 30 Apr 2024 08:30:03 GMT</pubDate>
      <content:encoded><![CDATA[<p><i>Корректно проведенный анализ требований — ключ к успешной реализации проекта. Но как не запутаться в куче подходов и выбрать подходящий? Ответ: последовательно изучать новые методы и сравнивать их друг с другом. </i></p><p><i></i>Кстати, если вы ищете новые карьерные возможности, обратите внимание <a href="https://tproger.ru/jobs/sistemnyj-analitik-hr-platforma-puls?utm_source=site&amp;utm_medium=blog&amp;utm_campaign=jobs-sber&amp;utm_content=1">на вакансию системного аналитика в Сбере</a>.</p><p><i>В этой статье я на понятных примерах расскажу про User Stories, Use Cases и их совместное использование при описании требований. Давайте разбираться.</i></p><h2>User Story</h2><p>User Story (или пользовательская история) — это подход к описанию возможностей ПО, который представляет собой короткие, независимые описания функциональности, составленные от имени конкретного пользователя.</p><p>Формат пользовательских историй можно описать формулой.</p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/359192da-9696-4621-8e9a-5395545ff890.png" alt="" /></figure><p>Сразу на примерах посмотрим, как из хотелок пользователей собирать требования в формате User Stories.</p><p><b>Пример 1</b></p><p>Студент хочет видеть полный список своих задач на главном экране университетского приложения</p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/a87bc07c-d954-4360-8448-8fd65b450af2.png" alt="" /><figcaption>User Story к примеру</figcaption></figure><p><b>Пример 2</b></p><p>Пользователь интернет-магазина хочет иметь возможность добавлять товары в корзину<br /></p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/b1df79ff-280a-4e07-a3dd-0eaca989a160.png" alt="" /><figcaption>User Story к примеру</figcaption></figure><p>И формула, и перевод к её виду нормальных примеров кажутся простыми. Но, к сожалению, не все желания пользователей и заказчиков чёткие и адекватные, поэтому для создания хороших User Stories знания одной формулы недостаточно.</p><p>Пользовательские истории должны соответствовать критериям <b>INVEST</b>.</p><p>Пояснение ниже стоит сохранить и запомнить, потому что о нём часто спрашивают на собеседованиях 😉.<br /></p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/43010a48-dc87-4907-ac90-de4daf0ccae1.png" alt="" /><figcaption>Критерии качества пользовательских историй INVEST</figcaption></figure><p>При несоблюдении этих критериев, User Stories могут превратиться в нечто, доводящее команду разработки до ужаса и истерик. И чтобы точно усвоить эти правила, вам нужно прочувствовать эту боль.</p><p>Время плохих примеров.</p><p>Чтобы научиться быстро генерировать User Stories по формуле, нужно тренироваться. Представьте, что заказчик отправил вам довольно расплывчатый набор требований к системе. <br /><br />Как бы вы оформили их в User Stories? Отправляйте свои варианты в комментариях!</p><p>То, что не указано явно, можно додумать.</p><p><b>Пользователь должен иметь возможность просматривать список товаров из каталога по категориям и подкатегориям.<br /><br /></b><b>При добавлении товара в корзину пользователь должен видеть динамическое обновление общей стоимости заказа.<br /></b><b><br /></b><b>Система должна предоставлять пользователю возможность отменить или изменить состав заказа до его оформления.<br /></b><b><br /></b><b>При покупке товара с помощью банковской карты пользователь должен видеть подтверждение успешного платежа.<br /></b><b><br /></b><b>Система должна регулярно резервировать и сохранять данные о заказах в случае сбоя или отключения.</b><b><br /></b></p><p>После того, как мы разобрались с практикой, можем перейти к теории. Чем же этот подход хорош?</p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/6a8fa96c-d4aa-4194-8dec-05e05dace547.png" alt="" /></figure><p>Заказчикам проще описывать свои пожелания в «пользовательских» формулировках, иначе начинается «ой, я эти ваши технические штуки не понимаю, давайте нормально». Поэтому User Stories отлично подходят для сбора требований в виде, который понятен и для команды клиента, и для команды разработки.</p><p>Так как требования должны быть сформулированы от имени конкретного пользователя, при формировании User Stories аналитик сразу выделяет пользователей и прочих заинтересованных в работе системы лиц и их требования к ПО. Это существенно упрощает дальнейшее определение ролей в системе и помогает расставить вашим задачам приоритеты.</p><p>Так, например, для интернет-магазина в пользовательских историях могут быть отражены запросы на возможность оформления заказа и оформления подписки на отсутствующие товары. Скорее всего, и для бизнеса, и для пользователей важнее  будет возможность оформления заказа. И если поставить две эти истории рядом и сравнить, то выбрать приоритетную будет проще.</p><p>Использование User Stories – не панацея для вашего проекта. Как было показано ранее, формат фиксирован и имеет четкую структуру, которая не всегда подходит для описания сложных и уникальных требований.</p><p>Краткий формат записи выглядит очень общим и не включает в себя достаточно деталей, что может затруднить их понимание. Такие требования часто необходимо детально прорабатывать с помощью других подходов. К тому же из-за того, что User Stories в первую очередь описывают функциональные требования, использование только этого метода может затруднить работу с требованиями к производительности, безопасности и другими нефункциональными аспектами проекта.</p><p>Также необходимо понимать, что User Stories подходят не для всех типов проектов. В некоторых случаях, например, при работе над исследовательскими проектами или проектами с высокой степенью неопределенности, использование User Stories может быть неэффективным.</p><p>Так когда же их стоит использовать?</p><ol><li><b>Когда требования к проекту меняются. </b>User Stories помогают быстро адаптироваться к изменяющимся требованиям, поскольку они могут быть легко добавлены, изменены или удалены в процессе разработки.</li><li><b>При работе по методологии Agile. </b>User Stories — основной инструмент в Agile-разработке, так как они фокусируются на ценности для конечного пользователя, способствуют итеративному процессу разработки и обеспечивают гибкость в планировании и реализации функциональности.</li><li><b>При необходимости вовлечения заинтересованных сторон. </b>User Stories понятны и доступны не только для членов команды разработки, но и для заинтересованных сторон, таких как заказчики, менеджеры продукта и конечные пользователи.<br /></li><li><b>При разработке продукта, ориентированного на пользователя. </b>User Stories помогают сосредоточиться на потребностях и задачах конечных пользователей.</li><li><b>При работе в команде со смешанным составом. </b>User Stories предоставляют общий язык для команды разработки, который понятен как разработчикам, так и не-техническим участникам процесса, таким как менеджеры продукта или тестировщики.</li><li><b>При необходимости верхнеуровневого описания сложной функциональности.</b> Пользовательские истории используются не только для конкретизации небольших функциональных требований, но и для краткого описания более сложных и крупных фрагментов функциональности. Иногда анализ стоит начинать с формулировки основных пользовательских сценариев и требований в виде User Stories, чтобы чётко определить цели и потребности пользователей, а затем доработать эти истории другими подходами.</li></ol><p><b>Резюме:</b><br /><br />User Stories — это мощный инструмент для анализа требований, который акцентирует внимание на потребностях пользователей и создании ценности для них. Использование User Stories помогает создать прозрачное понимание о том, что должно быть разработано, и стимулирует эффективное взаимодействие между заказчиком и командой разработки. Этот подход отлично подходит для описания простых или верхнеуровневого описания сложных требований.<br /></p><h2>Use Case</h2><p>Use Case (или пример использования) —<b> </b>это способ описания того, как определённый пользователь или система взаимодействует с программным продуктом для достижения определенной цели.</p><p>Use Cases описывают конкретные сценарии использования, их участников (пользователей или системы) и последовательность шагов, необходимых для достижения определенного результата.</p><p>«Примеры использования» могут видоизменяться в зависимости от потребностей проекта и привычек команды разработки. Но независимо от формы, они должны отражать то, как пользователи будут использовать систему, чтобы команда могла обеспечить соответствие разрабатываемого продукта их потребностям.</p><p>В отличии от User Stories, Use Cases представимы в разных форматах. Например:</p><ul><li><b>Текстовый формат</b> включает в себя акторов (не путать с актёрами), цели, предусловия, сценарии и постусловия. Этот формат легко читается и понимается, но может быть менее удобным для больших объемов информации.</li><li><b>Диаграммы Use Case</b>, например, Use Case UML. В этом случае каждый сценарий представлен в виде отдельного прямоугольника с указанием его имени, а акторы и связи между ними могут быть показаны стрелками.</li></ul><ul><li><b>Таблицы или матрицы.</b> При необходимости можно записать текстовое представление в табличном формате. Например, под каждый use cases могут быть созданы отдельные таблицы с двумя столбцами, где первым выступает заголовок (акторы, сценарии и т. д.), а вторым описание конкретного use case.</li></ul><p>Разберем ключевые элементы Use Cases на основе одного из вариантов структуры текстового представления.</p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/6f5c80fa-0a1b-4966-8298-04784cc6a584.png" alt="" /></figure><p>Алгоритм создания текстовых примеров использования заключается в последовательном заполнении структуры, которую мы описали.</p><p>Требования можно сразу собирать в формате Use Cases, а можно использовать этот формат для уточнения User Stories. Попробуем в текстовом формате описать «пример использования» для пользовательской истории, которую мы разбирали ранее.</p><p><b>User Story:<br /><br /></b><i>«Как студент, я хочу видеть список всех своих задач на главном экране приложения, чтобы быстро оценить свою текущую загруженность»</i><b><br /></b></p><p><b>Use Case:</b></p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/b9fb8b35-7489-4685-81c1-6875ecf41077.png" alt="" /><figcaption>Пример Use Case, составленный по пользовательской истории</figcaption></figure><p>Схема довольно простая: разбиваем задачу на небольшие блоки и не забываем задумываться, как система должна себя вести в случае ошибок и какие условия должны соблюдаться для работы вашего сценария.</p><p>Чтобы попрактиковаться, предлагаю разработать Use Cases для тех же примеров, которые вы переводили в User Stories.</p><p>То, что не указано явно, всё ещё можно додумывать. Делитесь своими вариантами в комментариях!</p><p>Главное преимущество Use Cases в том, что они помогают аналитикам идентифицировать и собирать требования к системе на основе конкретных сценариев использования. Необходимо отметить, что помимо основной своей цели — сбора требований, использование use cases помогают с определением границ функциональности проекта.</p><p>На этом хотелось бы остановиться подробнее, потому что отсутствие таких ограничений способствовало убыточности многих проектов. Как это происходит? Приведу немного утрированный пример.</p><p>Клиент приходит с требованием: «Хочу, чтобы в моем интернет-магазине был личный кабинет, как у всех».</p><p>Он же, когда вставили какой-то штатный вариант ЛК: «А где сумма по всем покупкам и список активных сессий? Мы обсуждали, что вы сделаете личный кабинет и оценили доработку. Пока не сделаете нормально, задачу принимать и оплачивать полностью не буду».<br /></p><p>Команда:</p><figure><img src="https://media.tproger.ru/user-uploads/100452/2024-04-28/c913fdbf-371a-4282-8397-f5924f37e2b8.jpg" alt="" /></figure><p>Говоря о плюсах этого подхода, стоит удостоить внимания простоту создания тестовых сценариев: формат Use Cases уже подразумевает наличие описанного порядка действий пользователя. Также они способствуют формированию общего видения того, как должен работать и выглядеть конечный продукт и служат инструментом для проверки полноты требований к системе, позволяя идентифицировать пробелы и пропуски в функциональности, которые могут быть упущены при других методах анализа требований.</p><p>Разумеется, такой подход можно использовать не всегда. Его использование для простых проектов с понятными требованиями использование Use Cases может показаться излишним и избыточным.</p><p>В то же время и при разработке крупных систем количество и сложность "примеров использования" может значительно вырасти, что делает их поддержку и управление проблемными и затратными.</p><p>Резюме:<br /><br />Use Cases — это структурированный метод анализа требований, который детализирует сценарии использования системы. <br /><br />Такой подход обеспечивает команде разработчиков понимание функциональных требований и помогает идентифицировать различные сценарии действий пользователей. Он отлично подходит для описания сложных требований. <br /></p><h2>Что выбрать: User Stories или Use Cases</h2><p><b>User Stories</b></p><ul><li>подходит для описания верхнеуровневых требований с фокусом на потребности и цели пользователей;</li><li>используется для планирования и приоритизации работ в рамках итераций или спринтов;</li></ul><ul><li>применяется в проектах, где требования могут часто изменяться.</li></ul><p><b>Use Cases</b></p><ul><li>используется для подробного анализа требований, особенно когда требуется детальное понимание сценариев использования;</li><li>подходит для описания функциональности систем с учетом предусловий, альтернативных путей и постусловий;<br /></li><li>применяется в проектах с фиксированным объёмом работ, где требуется более строгий контроль над требованиями и изменениями.<br /></li></ul><p>В некоторых проектах целесообразно использование обоих методов вместе.</p><p>Например, можно начать анализ с User Stories для высокоуровневого описания ожиданий пользователей, а затем уточнять и детализировать требования с помощью Use Case. Выглядеть это будет примерно так же, как было описано в примерах этой статьи.</p><p>Комбинация методов позволяет собрать достаточно информации о требованиях, чтобы лучше понять потребности пользователей и создать функциональный и полезный продукт.</p><p>Выбор между Use Cases и User Stories зависит от конкретных условий проекта, потребностей заказчика, требований к системе и методологии разработки.</p><p>Не бойтесь экспериментировать и адаптировать выбранный метод анализа под потребности вашего проекта.</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>Зачем компаниям Agile</title>
      <link>https://tproger.ru/articles/zachem-kompaniyam-agile</link>
      <comments>https://tproger.ru/articles/zachem-kompaniyam-agile?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дмитрий Красовский]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/zachem-kompaniyam-agile</guid>
      <description><![CDATA[<p>Рассказали, насколько может быть полезен Agile отечественному бизнесу, каким компаниям он подходит и как обучить Agile своих сотрудников.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/zachem-kompaniyam-agile">Зачем компаниям Agile</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 30 Oct 2023 11:14:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Большинство компаний сейчас переживает цифровую трансформацию. Колоссальная конкуренция на российском рынке и высокая турбулентность экономики в целом требуют от предпринимателей и топ-менеджеров нетривиальных подходов к управлению. Перейти компании на новый этап развития помогает Agile. Этот подход позволяет бизнесу экспериментировать с разными продуктовыми гипотезами и в кратчайшие сроки тестировать новые технологий, мгновенно реагировать на потребности целевой аудитории и другие внешние изменения.</p><p>Несколько лет назад Agile был в России редкостью. Про такой подход слышали и его применяли только в ИТ-разработке и банкинге. Сегодня в России работает уже немало Agile-коучей и Scrum-мастеров, а принципы гибкой философии распространяются и за пределами высокотехнологичных индустрий. Насколько может быть полезен Agile отечественному бизнесу, рассказывает Владимир Кац, Agile-коуч.</p><h2>ПреимуществаAgile</h2><p>Почему же компании переходят на Agile? Главная причина — необходимость моментально реагировать на изменения рынка в условиях высокой неопределенности. Agile ускоряет процесс принятия решений, позволяет командам концентрироваться на важном, адекватно приоритезировать задачи и всегда соответствовать актуальным запросам клиентов.</p><p>Кроме того, подход в полной мере раскрывает потенциал сотрудников, повышает их вовлеченность, помогает настроить командную работу и сокращает путь к результатам труда.</p><h2>ИТ и не только</h2><p>Часто бизнес ошибочно полагает, что Agile коснётся только его ИТ-стороны, но это не так. Agile-трансформация предполагает изменение практически всех внутренних процессов компании. Начинаются преобразования обычно с продуктового департамента, а затем охватывают практически все аспекты работы, включая юридические и HR. В противном случае другие департаменты становятся обузой для Agile-команд и замедляют их работу. Поэтому первое, что необходимо сделать руководству при переходе на Agile — скорректировать структуру компании и их внутренние политики. <b></b></p><p>Во время трансформации ведущую роль играет топ-менеджмент. Руководители должны быть готовы инвестировать время в коммуникацию с коллегами и, по существу, оценивать результаты изменений.</p><p>В некоторых случаях Agile — единственно возможный подход в команде. Например, если речь идёт о недавно появившемся продукте. На что именно направить усилия? Куда устремляется рынок? На эти вопросы поможет получить ответы Agile.</p><h2>Кому подходитAgile</h2><p>Agile успешно применяют в e-commerce, телекоммуникациях, легкой промышленности, фарме и многих других отраслях. В 2022 году 34% ИТ-компаний и финансовых организаций использовали Agile, говорится в исследовании ScrumTrek. При этом 6,5% компаний (практиковали такой подход) были из сферы торговли, 5% пришлось на телеком-компании, 4,7% — энергетика, 4,5% — промышленная отрасль.</p><h2>Чек-лист:подходит ли Agile вашей компании</h2><ol><li>Компания работает в условиях высокой неопределенности: выход на новые рынки, создание инноваций, поиск новых продуктовых решений и др.</li><li>Предметная область бизнеса позволяет экспериментировать.</li><li>Команда готова к масштабным изменениям внутри: способна адаптироваться к новой корпоративной культуре и ценностям.</li><li>Руководство хочет принимать непосредственное участие в изменениях и готово выделить ресурсы для обучения сотрудников.</li></ol><h2>Как обучитьсотрудников работать по Agile</h2><p>Обыкновенно в обучении стоит задача вложить в голову знания и навыки. Но чтобы освоить Agile, необходимо ставить гораздо более масштабную цель: трансформация корпоративной культуры и убеждений сотрудников. На первый план выходит понимание членами команды необходимости и пользы изменений, готовность получить и использовать новый опыт. Для этого требуется, во-первых, практика, а во-вторых, — взаимодействие с Agile-коучем.</p><p>Agile-коучей довольно мало, поэтому организовывать массовое обучение сотрудников в очном формате с высококвалифицированными мастерами сложно и дорого. Конечно, существует масса лекций по Agile в онлайн, однако без практики и личного взаимодействия с экспертом такие усилия малоэффективны.</p><p>Поэтому стоит рассмотреть гибридный подход, который совмещает достоинства обоих вариантов: комбинировать записанные лекции, которые можно посмотреть в любое время, и групповые практические занятия с участием экспертов. При этом обучение не должно заканчивается прохождением курса. Идеально, если заключительная часть обучения — это менторство и индивидуальное наставничество. Например, Группа «Иннотех» запустила Школу Scrum-мастеров, чтобы обеспечить себя как организацию из тысяч разработчиков нужным количеством специалистов, которые выполняют критическую роль для организации эффективной работы Agile-команд.</p><p>Для этого Группа провела аудит, собрала все требования, предложения, блокеры и возражения от HR, IT и руководителей подразделений. На их основе методисты и эксперты спроектировали образовательный курс, куда вошли онлайн-занятия в формате самостоятельного обучения, практические вебинары с Agile-коучами, а также менторская программа.</p><p>Комбинируя разные активности, удалось перераспределить нагрузку Agile-коучей и направить часть их рабочего времени на менторство и индивидуальную работу со Scrum-мастерами. В результате получилось выделить до 100 часов в месяц на дополнительные консультации. Такое перераспределение в пользу менторства повысило эффективность работы коучей, выровняло учебный процесс и в целом подняло качество обучения на новый уровень. До перехода на гибридное обучение с менторской программой доля прошедших тестирование и успешно выполнивших первую рабочую задачу составляла 12%, а после она увеличилась до 100%. Количество выпускаемых ежемесячно Scrum-мастеров возросло с 25 до 50 человек. <b></b></p><p>Таким образом, обучение влияет на культуру и ценности компании. Принимая решение об Agile-трансформации, стоит заранее продумать образовательный процесс. Ведь правильно сформированное обучение увеличивает поддержку Agile-ценностей в компании, без которой даже лучшие инструменты и практики не дадут результата.</p>]]></content:encoded>
    </item>
    <item>
      <title>Использование нотаций ARIS и BPNM для описания процессов: почему необходимо следовать правилам</title>
      <link>https://tproger.ru/articles/ispolzovanie-notacij-aris-i-bpnm-dlya-opisaniya-processov-pochemu-neobhodimo-sledovat-pravilam</link>
      <comments>https://tproger.ru/articles/ispolzovanie-notacij-aris-i-bpnm-dlya-opisaniya-processov-pochemu-neobhodimo-sledovat-pravilam?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Sergio]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ispolzovanie-notacij-aris-i-bpnm-dlya-opisaniya-processov-pochemu-neobhodimo-sledovat-pravilam</guid>
      <description><![CDATA[<p>Рассказали, зачем бизнес аналитику описывать функционирование продукта с помощью нотаций ARIS eEPC и BPMN 2.0 и как это делать.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ispolzovanie-notacij-aris-i-bpnm-dlya-opisaniya-processov-pochemu-neobhodimo-sledovat-pravilam">Использование нотаций ARIS и BPNM для описания процессов: почему необходимо следовать правилам</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Бизнес-аналитика]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 29 Sep 2023 13:36:47 GMT</pubDate>
      <content:encoded><![CDATA[<p>Здравствуйте! Меня зовут Сергей Гусев, я ведущий системный аналитик IT_One. В данной статье я бы хотел затронуть важные нюансы деятельности системного аналитика и команд разработки ПО.</p><p>Начиная новый проект или работая над модернизацией текущего проекта, в ходе обсуждения бизнес-аналитик или другое ответственное лицо собирает множество требований, которые возникают у заинтересованных сторон. Первоначально это текстовое описание, таблицы, затем к ним добавляются UML-диаграммы.</p><p>Эти инструменты позволяют описать то, как будет работать продукт и как пользователи будут с ним взаимодействовать. Чаще всего получается довольно объемный документ или набор документов, где описаны функциональные и нефункциональные требования, варианты взаимодействия (use case diagrams) и чек-листы для тестирования. Что же из этого лучше с точки зрения разработчика? В идеале – это готовый прототип программного продукта, демонстрирующий, как пользователь взаимодействует с ним, что именно требуется разработать, как и в какой последовательности должны появляться окна для заполнения информации. Остается только открыть текстовый документ, чтобы в нем свериться со свойствами атрибутов. Увы, чаще всего из-за нехватки времени и желания сэкономить многие команды пренебрегают созданием такой модели.</p><p>Второй, не менее популярный, метод — это описание функционирования продукта с помощью нотаций ARIS eEPC и BPMN 2.0. Чем же они удобны?</p><h2>Преимущества ARIS eEPC – простыми словами</h2><p>Нотацию ARIS eEPC разработал основатель IDS Scheer Август Вильгельм Шеер со своими коллегами. Взяв за основу методологию IDEF3, он дополнил ее до модели EPC – расширенной цепочки процесса, управляемого событиями, которую позже стали называть «процессно-событийная модель» (дословно Event-driven Process Chain). Используемая для моделирования бизнес-процессов в инструментарии ARIS, она представляет собой последовательность событий и функций, отражающих логику выполнения взаимосвязанных действий, направленных на достижение определенного результата. По сути, если созданная модель описывает функциональность разрабатываемого ПО, то она является инструкцией для разработчика.</p><p>Посмотрим на основные компоненты данной нотации:</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-28/85e632d3-df95-44fc-9fee-7a7ffdd6844c.jpeg" alt="" /></figure><p>Функция служит для описания функции или набора действий (процедур, работ), выполняемых подразделениями или сотрудниками организации над исходным объектом и ведущих к получению промежуточного или финального результата или события.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/109175bd-639e-439d-9630-e4323cf08f8c.jpeg" alt="" /></figure><p>Событие – описывает состояние процесса, которое является существенным в рамках этого процесса и оказывает влияние на этот бизнес-процесс или контролирует его дальнейшее развитие</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/e30e6ed1-7c3c-4b1c-925b-a55812b01992.jpeg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/fa64d570-e16f-4b30-9032-cb040b965750.jpeg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/4de36384-2bf7-4ad9-ad69-a7e8a180c237.jpeg" alt="" /></figure><p>Операторы «И», «Или», «Исключающее ИЛИ», служат для развилок по какому сценарию далее пойдет выполнение сценария в зависимости от того. что выберет пользователь или какой будет вариант ответа на вопрос.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/e5befc4d-9ef4-4e09-9050-e3363f706b78.png" alt="" /></figure><p>Документ – используется для отображения на диаграмме документов, файлов и т.п. сопровождающих выполнение функции.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/5db6afef-63ff-42de-b173-ca6b6947997c.jpeg" alt="" /></figure><p>IT system используется для отображения на диаграмме некоторой информационной системы, её модуля или даже отдельной функции ИС, поддерживающей выполнение функции, с которой её связывают в модели.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/82acbe74-45af-4592-933e-048dda00581f.jpeg" alt="" /></figure><p>“Подразделение” и т.п. – используется для отображения на диаграмме организационных единиц, являющихся исполнителями, владельцами или участниками функции, с которой субъект связывается.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/fb228d17-a2ac-4d70-a8d1-08f487bb2729.jpeg" alt="" /></figure><p>Функции в модели ARIS EPC запускаются событиями: например, «Поступила заявка на рассмотрение». Событиями они и оканчиваются: например, «Запрос удовлетворён» или «Заявка отклонена». Если в результате исполнения функции имеется только один вариант дальнейшего выполнения бизнес-процесса, т.е. в результате формируется только одно событие, после которого идет следующая функция, – событие между этими функциями может не рисоваться. В Интернете можно найти множество статей на данную тему и детально познакомиться с данной нотацией.</p><p>Какое преимущество она имеет с точки зрения разработчика? Лично мне нравится работа с данной нотацией потому, что я вижу, какие окна программы могу создать, что расположить на них, где сделать развилки с вариантами выбора, разместить загрузчики файлов и т.п. Мне остается только посмотреть типы полей и ограничений, чтобы создать модель базы данных и разместить соответствующие компоненты в окнах программы. Нет необходимости в чтении обширной документации по продукту. Это очень удобно, особенно когда я попадаю в проект не в самом начале или подменяю коллегу, который заболел или в отпуске. С помощью этой нотации понять смысл продукта, как он должен работать, где искать ошибку в той или иной ситуации – быстрее и проще, чем смотреть пользовательские истории или документацию ПО.</p><p>Но есть и сложности. Чаще всего разработкой ARIS eEPC занимается бизнес-аналитик без опыта в программировании или создании баз данных. Поэтому многие моменты, которые он может посчитать очевидными и понятными, являются проблемами для разработчика. Вот наиболее типичные ошибки при составлении нотаций, которые я встречал:</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/2cfe68b5-b9c2-425b-8338-e618a37ab700.jpeg" alt="" /></figure><p>Некорректное изображение самой цепочки работ</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/f957fa6f-401a-427b-bc0a-f124231a5b96.jpeg" alt="" /></figure><p>Последовательное использование двух функций одной за другой.</p><p>После каждой функции должно следовать «событие». Использование событий помогает быстро определить, где необходимо создать формы для ввода данных, а где необходимо использовать компоненты для загрузки файлов.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/89170459-01d8-4963-b538-3dda8b58db7b.jpeg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/d3cfbf8d-fce2-4bac-8b8e-de4ac1a60042.jpeg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/b9120b37-7519-4bd8-83f9-8e1f02ef00a8.jpeg" alt="" /></figure><p>Пример из жизни: требование «Предоставить сведения о земельном участке». Без обозначения на нотации документа пояснения в виде «Предоставлен документ со сведениями о земельном участке» или «Введены сведения о земельном участке» сложно угадать, что нужно сделать: создать загрузчик для документов или все-таки поля для ввода реквизитов документа.</p><p>И самое опасное – когда нотацию строят не только сверху – вниз, но еще и слева – направо.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/fb306fca-ae0a-485d-871e-ebd826fbd44a.jpeg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/e9534ce0-8213-4291-8bef-c4d6ff439208.jpeg" alt="" /></figure><p>Чем же данные ошибки опасны? Основным ограничением проекта является время и трудозатраты. Последний вариант является самым рискованным, так как разработчик очень легко может спутать направления ветки сценария и спроектировать программу неправильно. Также могут не быть указаны дополнительные компоненты, такие, как «Документ», или события, поясняющие, что должно произойти после функции. В этих случаях разработчики тратят время на изучения всего пакета документов, чтобы определить, что же они должны сделать. Или им необходимо планировать встречу с аналитиком или владельцем проекта для получения разъяснений. В ситуациях, когда «проект должен быть сделан вчера» или необходимо исправить ошибку в течении нескольких часов, – иногда простые задачи превращаются в сложные. Данных ошибок можно легко избежать, если делать нотацию ARIS eEPC в соответствии с правилами.</p><h2>Применение BPMN 2.0 в разработке ПО</h2><p>В первом десятилетии XXI века стали активно развиваться технологии Workflow, ориентированные на автоматизацию обработки документов и выполнения заданий. В связи с этим стала актуальной автоматизированная поддержка управления гибкими и часто изменяющимися бизнес-процессами. Существующие в тот момент методологические и технологические ограничения в сфере моделирования и автоматизации процессов не позволяли оперативно реагировать на изменяющиеся потребности бизнеса, своевременно вносить изменения в информационные системы, сопровождающие эти процессы.</p><p>В ответ на этот вызов международная организация BPMI (Business Process Management Initiative) разработала новый подход к управлению бизнес-процессами – BPM (Business Process Management) и предложила нотацию BPMN – систему условных обозначений для моделирования бизнес-процессов. В 2011 году в нее был внесен ряд улучшений и вышла версия BPMN 2.0, которая сегодня активно используется в бизнесе. Чем она лучше прежних нотаций? В ней стали использовать параметр «Время», на моделях бизнес-процессов стало возможно показывать события и множество моментов, которые ранее было сложно описать.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/5058dcd2-6d78-4c5e-b258-bdf9b952ea71.jpeg" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/1bff6aac-f3db-4c01-88b1-e1722c3c879b.jpeg" alt="" /></figure><p>Но самое важное – на базе данной нотации разрабатываются системы Business Process Management System (BPMS). Программное обеспечение для управления бизнес-процессами (BPMS) помогает компаниям определять и развертывать автоматизированные бизнес-процессы, а также управлять ими. Оно заменяет трудоемкие операции, выполняемые вручную, на оптимизированные рабочие процессы в бизнес-приложениях. По сути, мы не только рисуем бизнес-процесс, но и используем его в работе нашего ПО.</p><p>BPMS используют различные BPM-движки. В нашем случае используется платформа Camunda, которая поддерживает BPMN, нотацию описания бизнес-процессов. То есть в BPMN можно нарисовать логику любой сложности, а движок её выполнит. Большинство процессных вещей, которые можно сделать в BPMN, делать в чистом коде дороже в десятки раз.</p><p>Camunda поддерживает последнюю версию Java и вообще любой JVM-язык — Kotlin, Scala, Groovy и т.п. Более того, в ней гораздо проще менять логику работы или исправлять ошибки и оперативно обновлять программное обеспечение.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/5ffb5f18-6558-4540-9cfd-b472c1b72fdc.jpeg" alt="" /></figure><p>В инструменте Camunda Modeler или его аналогах можно создать весь бизнес-процесс работы приложения и вставить программный код, который будет исполняться на каждом его этапе. Это существенно облегчает разработку модели бизнес-процессов, использование BPMS в решении задач. При использовании данного инструмента тоже необходимо придерживаться правил. К сожалению, их часто нарушают аналитики при разработке модели:</p><ul><li>Нотация должна идти слева-направо.</li><li>Если используете цвета, делайте легенду: к какой группе относятся данные процессы.</li><li>Подписывайте потоки, указывайте, какой из них выставляется по умолчанию, если есть несколько вариантов.</li><li>Если несколько процессов выполняют одну функцию – объедините в группу.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/114ad286-ae45-4951-a1d3-0b79bd9159b0.jpeg" alt="" /></figure><p>Нотация BPMN нотации и реальный процесс в BPMS системе процесс могут различаться. Например, одно действие, указанное в документе как «Одобрить счет» может состоять из ряда операций, которые проще разделить на несколько последовательных процессов и разместить их последовательно. Это не считается ошибкой, но многие специалисты рекомендуют в таких случаях составлять подпроцесс и в нем помещать уже необходимые процессы. Это не всегда удобно. При отладке процессов легче найти ошибку, если все задачи расположены в одном процессе.</p><p>К сожалению, чаще встречается проблема с тем, что разработчик процесса начинает составлять процесс не только справа – налево, но и сверху вниз, забывая оставлять подписи на потоках и процессах. При работе с такими процессами очень сложно найти допущенные ошибки или переделать скрипты в задачах, особенно если результаты передаются в другие задачи.</p><figure><img src="https://media.tproger.ru/user-uploads/90484/2023-09-29/4b939638-45bf-4e3c-9114-d7d57da4435d.jpeg" alt="" /></figure><p>Данные ошибки в реальном проекте, например, привели к значительной потере времени. Когда проект передавали новому сотруднику, ему пришлось долго разбираться в процессе, чтобы внести необходимые изменения.</p><p>Также встречались случаи, когда процессы зависали в ходе выполнения из-за того, что был случайно удален поток, но из-за «загромождения» задачами, разработчик не видел этой потерянной связи между задачами. Если процесс рисовать слева – направо, то нет проблем с его пониманием и легко ориентироваться как в нем происходят развития различных вариантов использования.</p><p>Надеюсь, что данный материал поможет командам разработки избежать типовых ошибок при создании ПО. Указанные в статье нотации действительно облегчают понимание функционирования будущего программного продукта. Но отступление от правил при составлении этих нотаций лишает их преимуществ перед бумажным вариантом.</p>]]></content:encoded>
    </item>
    <item>
      <title>Портрет и профессиональное развитие русскоязычных DevRel-специалистов в 2022: данные исследования</title>
      <link>https://tproger.ru/articles/portret-i-professionalnoe-razvitie-russkojazychnyh-devrel-specialistov-v-2022-dannye-issledovanija</link>
      <comments>https://tproger.ru/articles/portret-i-professionalnoe-razvitie-russkojazychnyh-devrel-specialistov-v-2022-dannye-issledovanija?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Jane Goleva]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/portret-i-professionalnoe-razvitie-russkojazychnyh-devrel-specialistov-v-2022-dannye-issledovanija</guid>
      <description><![CDATA[<p>В этом году я провела исследование русскоязычного деврела. Рассказываю, кем оказались специалисты и как они развивались в 2022.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/portret-i-professionalnoe-razvitie-russkojazychnyh-devrel-specialistov-v-2022-dannye-issledovanija">Портрет и профессиональное развитие русскоязычных DevRel-специалистов в 2022: данные исследования</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 03 Apr 2023 07:51:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Привет! Я — <a href="https://t.me/speakersclub">Евгения Голева</a>, работаю в Developer Relations с 2016 года и делюсь мыслями о работе в телеграм-канале <a href="https://t.me/speakersclub">«Говорите громче!»</a>. А в прошлом году провела первое <a href="https://habr.com/ru/post/583300/">исследование специалистов Developer Relations в РФ и СНГ</a>.</p><p>Если вы не знаете, кто такие деврелы, то вкратце объясню:</p><p>Предыдущее исследование дало почву для многих гипотез. Но с тех пор ландшафт индустрии изменился полностью, и деврела, который мы знали, больше не существует. Поэтому теперь мы говорим про русскоязычный деврел.</p><p>Моё исследование состояло из семи частей:</p><ul><li>индивидуальные рабочие задачи;</li><li>деврел-команда;</li><li>метрики;</li><li>профессиональное развитие и сообщество;</li><li>компания (и в какой ситуации её люди сейчас);</li><li>зарплаты, про которые многие спрашивали в прошлом году;</li><li>и, разумеется, про самих деврелов.</li></ul><p>В этой статье говорим про профразвитие и портрет участника.</p><ol><li><a href="https://tproger.ru/#part1">Насколько выборка репрезентативна?</a></li><li><a href="https://tproger.ru/#part2">Распределение по полу.</a></li><li><a href="https://tproger.ru/#part3">Распределение по возрасту.</a></li><li><a href="https://tproger.ru/#part4">Распределение по опыту в Developer Relations.</a></li><li><a href="https://tproger.ru/#part5">Распределение по предыдущему опыту.</a></li><li><a href="https://tproger.ru/#part6">Технический бэкграунд.</a></li><li><a href="https://tproger.ru/#part7">Техническое образование.</a></li><li><a href="https://tproger.ru/#part8">Как отличить Developer Advocates от Developer Relations?</a></li><li><a href="https://tproger.ru/#part9">Распределение по профессиональному уровню.</a></li><li><a href="https://tproger.ru/#part10">Распределение по организационному уровню в компании.</a></li><li><a href="https://tproger.ru/#part11">Как деврелы официально записаны в трудовой книжке?</a></li><li><a href="https://tproger.ru/#part12">Распределение по странам.</a></li><li><a href="https://tproger.ru/#part13">Распределение по городам.</a></li><li><a href="https://tproger.ru/#part14">Где работаете сейчас?</a></li><li><a href="https://tproger.ru/#part15">Какие ресурсы наиболее эффективно помогают вам развиваться как DevRel-специалисту?</a></li><li><a href="https://tproger.ru/#part16">Какие именно телеграм-каналы помогают развиваться?</a></li><li><a href="https://tproger.ru/#part17">Остальные ресурсы, которые помогали в развитии.</a></li><li><a href="https://tproger.ru/#part18">За кем из русскоговорящих экспертов в DevRel сообществе вы следите?</a></li><li><a href="https://tproger.ru/#part19">Какие DevRel команды вы считаете самыми сильными в 2022 году?</a></li><li><a href="https://tproger.ru/#part20">Что самое сложное в работе деврела в 2022 году?</a></li><li><a href="https://tproger.ru/#part21">Какие сложные профессиональные вопросы у вас возникали в 2022 году?</a></li><li><a href="https://tproger.ru/#part22">Как вы видите свое дальнейшее развитие в профессии в ближайшие три года?</a></li><li><a href="https://tproger.ru/#part23">Что дальше?</a></li><li><a href="https://tproger.ru/#part24">Благодарности.</a></li></ol><h2>Насколько выборка репрезентативна?</h2><p>Я постаралась связаться со всеми специалистами в области Developer Relations, до которых смогла дотянуться, включая тех, кто не является прямыми участниками этой сферы. Мой призыв к деврелам в Телеграме прочитали более 6 500 человек. Всего опросом поделились 60 источников. Вот несколько из них:</p><ul><li><a href="https://t.me/speakersclub">Говорите громче!</a></li><li>DevRel Community (закрытый чат</li><li><a href="https://t.me/channel_23derevo">23derevo</a>: чат и канал</li><li><a href="https://t.me/docops">t.me/docops</a></li><li><a href="https://t.me/devrel_jobs">t.me/devrel_jobs</a></li><li><a href="https://t.me/cmblog">t.me/cmblog</a></li><li>DevRelAll</li><li>репосты в ФБ и телеге от коллег по цеху (спасибо вам!)</li></ul><p>В исследовании участвовали 89 специалистов по Developer Relations к концу 2022 года — это на 25% больше, чем в прошлом году. Большая часть ответов была получена в ноябре. Данные уже очищены от спама и нерелевантных комментариев. В выборку, по понятным причинам, попали только те компании, в которых уже есть хотя бы кто-то причастный к деврелу.</p><p>Надеюсь, в следующих исследованиях нас станет ещё больше. Чтобы не пропустить анонс, следите за моим каналом <a href="https://t.me/speakersclub">«Говорите громче!»</a> или <a href="https://forms.gle/PSkceBxPU5MWNmSi8">оставьте свои контакты</a> — я сообщу о новом запуске.</p><p>Иногда сумма ответов больше 100%. Это значит, что в вопросе можно было выбрать несколько значений. No cheating!</p><p>Спустя месяц после запуска исследования мы с Женей Финкельштейн подготовили <a href="https://www.youtube.com/watch?v=1Wcbknelyf8&amp;list=PLBlI8n1N_s6UwV3e3dWWi3kuh5dJgBoLu&amp;index=10&amp;ab_channel=DevRelChannel">доклад для DevRelConf #6</a>, который мы готовили на основе ответов 72 респондентов. Благодаря этому за декабрь удалось собрать ответы ещё 17 специалистов. Они не учтены в нескольких объёмных вопросах — количество опрошенных я указываю отдельно.</p><h2>Портрет участника</h2><p>Прежде чем говорить о профессиональном развитии, давайте посмотрим на всё разнообразие внутри нашей профессии.</p><h3>Распределение по полу (89 респондентов)</h3><p>В этот раз женщин оказалось больше — три четверти против почти четверти мужчин. В прошлом году соотношение было примерно одинаковым. Я думаю, это связано с тем, что больше женщин решили принять участие в исследовании (потому что вряд ли гендерный состав профессии мог измениться так резко).</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-14.jpg" alt="" /></figure><h3>Распределение по возрасту (89 респондентов)</h3><p>Больше 40% участников оказались достаточно молодыми — от 26 до 30 лет. На втором месте коллеги в возрасте от 31 до 35 лет, и на третьем — от 36 до 40 лет. Не оказалось среди респондентов людей младше 20 лет и старше 50. Я делаю вывод, что в профессию приходят уже с каким-то опытом, и готовы оставаться в ней достаточно долго.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-12.jpg" alt="" /></figure><h3>Распределение по опыту в Developer Relations (89 респондентов)</h3><p>Я решила разбить варианты ответов на более мелкий шаг, чтобы график стал более показательным.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-23.jpg" alt="" /></figure><p>Средний (среднее арифметическое взвешенное) опыт работы в области developer relations сейчас составляет примерно три года. Люди с опытом менее года по-прежнему слабо участвуют в исследовании — вероятно, потому, что не считают себя достаточно опытными в сфере.</p><h3>Распределение по предыдущему опыту (89 респондентов)</h3><p>В прошлом исследовании я объединяла PR и Маркетинг. Это было не очень правильно, теперь у нас есть более точная картинка.</p><p>Наиболее популярными сферами, откуда приходят участники исследования в деврел, остаются HR, IT и маркетинг, что неудивительно.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-24.jpg" alt="" /></figure><p>Некоторые респонденты указывали неожиданные области, такие как журналистика, книгоиздание и наука, они собраны в «Разном». Один респондент даже рассказал о том, что сразу стал деврелом, без предыдущего опыта.</p><h3>Технический бэкграунд оказался необязателен (89 респондентов)</h3><p>Я задала жёсткий вопрос об опыте работы в коммерческой разработке на полную ставку — хотя бы в течение года. Результаты показали, что у менее четверти опрошенных есть опыт написания кода. Это, конечно, заметная доля, но остальные 75% рассказали о том, что это не обязательно для начала работы.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-13.jpg" alt="" /></figure><h3>Техническое образование — тоже (89 респондентов)</h3><p>Женя Финкельштейн говорит, что она училась программированию, и это очень помогает в работе деврелом: можно проверить скобочки в коде или формулы написать. Но исследование показало, что большинство деврелов работают без технического образования.</p><p>В компании уже есть много высококвалифицированных инженеров, от деврела нужно верхнеуровневое понимание техники и прокачанные скилы в совершенно других специализациях. За счёт того, что в команде собираются люди с разным опытом и знаниями, выигрывают все. Дайверсити рулит)</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-3.jpg" alt="" /></figure><h3>Как отличить Developer Advocates от Developer Relations? (89 респондентов)</h3><p>Была гипотеза, что вопрос «Являются ли разработчики основными клиентами для вашей компании?» поможет разделить респондентов на две группы: Developer Advocates и Developer Relations Managers.</p><p>Мы предоставляли два варианта ответа: «Да, разработчики являются клиентами нашей компании (Developer First)» и «Нет, разработчики не являются клиентами нашей компании (Developer Plus)». Но нам это не помогло.</p><p>Девадвокаты и деврелы оказались в обеих категориях. Люди без технического образования работают в компаниях, где разработчики являются клиентами, а люди с техническим образованием работают там, где не являются.</p><p>В общем и целом, мы не нашли никаких закономерностей. Профессия новая, и каждый — уникальная снежинка, которая находит нишу самостоятельно.</p><p>А вот вопрос «Какими задачами на внешнюю аудиторию вы занимаетесь большую часть своего рабочего времени?» как раз помог, особенно те варианты ответов, которые подкинул Антон Черноусов. Но об этом в следующей статье.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-1.jpg" alt="" /></figure><h3>Распределение по профессиональному уровню (89 респондентов)</h3><p>Разумеется, джуниоров по факту больше. Многие постеснялись участвовать в опросе, и даже мои пояснения в анонсах и предисловии не особо помогли. Если у вас есть идеи, как решить эту проблему, напишите в комментариях или мне лично.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-5.jpg" alt="" /></figure><h3>Распределение по организационному уровню в компании (89 респондентов)</h3><p>Мы выдвинули гипотезы о возможной корреляции между уровнем профессионализма именно в Developer Relations и позицией в компании, но ничего не вышло. В выборке оказались и сеньоры, которые не занимают руководящие должности, и руководители направлений, которые недавно начали отвечать за DevRel и находятся на entry-уровне.</p><figure><img src="https://media.tproger.ru/uploads/2023/04/IMG_7266.jpg" alt="" /></figure><h3>Как деврелы официально записаны в трудовой книжке? (89 респондентов)</h3><p>Нейтральные формулировки всё ещё лидируют: руководитель направления и менеджер проектов. Но появились и новые, повторяющиеся, должности: менеджер по работе с IT-сообществами и менеджер по развитию бренда работодателей в сегменте IT. Если ни одна из них вам не нравится, можете выбрать из длинного списка ниже ?</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-6.jpg" alt="" /></figure><h3>Распределение по странам (89 респондентов)</h3><p>63 участника опроса находятся в России. Также у нас есть коллеги с Кипра, Грузии, Германии и других стран.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-28.jpg" alt="" /></figure><h3>Распределение по городам (89 респондентов)</h3><p>41 участник опроса находится в Москве. 48 — в других городах, в основном в Санкт-Петербурге, Тбилиси, Казань, Екатеринбург.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-18.jpg" alt="" /></figure><h3>Где работаете сейчас? (58 респондентов)</h3><p>Только 58 участников указали свою компанию, в том числе 1С, 2ГИС, EPAM, IT_One, JetBrains, Karuna, Quadcode, Skillbox, SkillFactory, Sytac, VK, Yandex.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-17.jpg" alt="" /></figure><h2>Профессиональное развитие</h2><h3>Какие ресурсы наиболее эффективно помогают вам развиваться как DevRel-специалисту? (72 респондента)</h3><p>В этом году мы изменили формулировку, поэтому сравнивать с прошлым напрямую не буду, но вижу, что по всем направлениям заметное снижение, кроме менторства и мастер-классов — их стало больше.</p><h4>2021 год</h4><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-21.jpg" alt="" /></figure><h4>2022 год</h4><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-10.jpg" alt="" /></figure><h3>Какие именно телеграм-каналы помогают развиваться? (89 респондентов)</h3><p>Дисклеймер: так как выборка смещена на те ресурсы, через которые я набирала респондентов, статистика — в мою пользу и наверняка искажает реальную картину.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-11.jpg" alt="" /></figure><p>Полный список со ссылками</p><ul><li><a href="http://t.me/speakersclub">t.me/speakersclub</a></li><li><a href="http://t.me/My_DevRel">t.me/My_DevRel</a></li><li><a href="http://t.me/devrel_ru">t.me/devrel_ru</a></li><li>DevRel Community (вход по приглашению от участника сообщества)</li><li><a href="http://devrel_all/">@devrel_all</a></li><li><a href="http://t.me/devrel_sklad">t.me/devrel_sklad</a></li><li><a href="http://t.me/devrel_ru">t.me/devrel_ru</a></li><li><a href="http://t.me/dododev">t.me/dododev</a></li><li><a href="http://t.me/channel_23derevo">t.me/channel_23derevo</a></li><li><a href="http://t.me/ux_writers_from_everywhere">t.me/ux_writers_from_everywhere</a></li><li><a href="http://t.me/technicalwriters">t.me/technicalwriters</a></li><li><a href="http://t.me/ozon_tech">t.me/ozon_tech</a></li><li><a href="http://t.me/no_shame_facilitation">t.me/no_shame_facilitation</a></li><li><a href="http://t.me/leadgr">t.me/leadgr</a></li><li><a href="http://t.me/KnowledgeConfChannel">t.me/KnowledgeConfChannel</a></li><li><a href="http://t.me/itbrand_rules">t.me/itbrand_rules</a></li><li><a href="http://t.me/ilyahov_smotrit">t.me/ilyahov_smotrit</a></li><li><a href="http://t.me/docsascode">t.me/docsascode</a></li><li><a href="http://t.me/devrel_jobs">t.me/devrel_jobs</a></li><li><a href="http://t.me/compot_me/">t.me/compot_me/</a></li><li><a href="http://t.me/avitotech">t.me/avitotech</a></li><li>Devrel Yerevan (вход по приглашению от участника сообщества)</li></ul><h3>Остальные ресурсы, которые помогали в развитии (36 респондентов)</h3><p>Вопрос был необязательным и со свободным вводом, поэтому всего на него ответили 36 участников.</p><figure><img src="https://media.tproger.ru/uploads/2023/05/242dc12a-983e-44b2-8a81-2df7dc48e60c-autoconverted.jpeg" alt="" /></figure><p>Полный список со ссылками</p><ul><li><a href="http://podlodka.io/">podlodka.io</a></li><li><a href="http://www.youtube.com/">youtube.com</a></li><li><a href="http://zapuskzavtra.libsyn.com/">zapuskzavtra.libsyn.com</a></li><li><a href="http://teamleadconf.ru/">teamleadconf.ru</a></li><li><a href="http://hr-kafedra.ru/devrel/">hr-kafedra.ru/devrel/</a></li><li><a href="http://habr.com/">habr.com</a></li><li><a href="http://vc.ru/u/143730-newhr">vc.ru</a></li><li><a href="http://ontico.ru/">ontico.ru</a></li><li><a href="http://highload.ru/">highload.ru</a></li><li><a href="http://devrelweekly.com/">devrelweekly.com</a></li><li><a href="http://developerrelations.com/">developerrelations.com</a></li><li><a href="http://conf.geecko.com/">conf.geecko.com</a></li><li><a href="http://www.writethedocs.org/">writethedocs.org</a></li><li><a href="http://writers-in-tech.simplecast.com/">writers-in-tech.simplecast.com</a></li><li><a href="http://vk.com/frontendweekend">vk.com/frontendweekend</a></li><li><a href="http://t.me/speakersclub">t.me/speakersclub</a></li><li><a href="http://t.me/devrel_ru">t.me/devrel_ru</a></li><li><a href="http://podcasts.apple.com/us/podcast/make-sense-podcast/id1417851966">podcasts.apple.com/us/podcast/make-sense-podcast/id1417851966</a></li><li><a href="http://podcast.ru/1551786898">podcast.ru/1551786898</a></li><li><a href="http://mobiusconf.com/">mobiusconf.com</a></li><li><a href="http://maximilyahov.ru/">maximilyahov.ru</a></li><li><a href="http://job.kolesa.kz/">job.kolesa.kz</a></li><li><a href="http://ithrconference.timepad.ru/event/2120255/">ithrconference.timepad.ru/event/2120255/</a></li><li><a href="https://intercomm.media/">intercomm.media</a></li><li><a href="http://getinvolved.hanselman.com/">getinvolved.hanselman.com</a></li><li><a href="http://www.devrelxsummit.com/">devrelxsummit.com</a></li><li>DevRel Community (вход по приглашению от участника сообщества)</li><li><a href="https://communityforpeople.com/">Communityforpeople-Yana-Belova</a></li><li><a href="http://cmxhub.com/summit/">cmxhub.com/summit/</a></li><li><a href="http://bureau.ru/">bureau.ru</a></li><li><a href="http://blog.pragmaticengineer.com/">blog.pragmaticengineer.com</a></li><li><a href="http://13.codefest.ru/">13.codefest.ru</a></li><li>@devrel_all</li></ul><h3>За кем из русскоговорящих экспертов в DevRel сообществе вы следите? (53 респондента)</h3><p>В топ попали люди, за которых проголосовало больше одного человека. Вопрос был необязательным и со свободным вводом, поэтому всего на него ответили 53 участника.<br />Дисклеймер: так как выборка смещена на те ресурсы, через которые я набирала респондентов, статистика — в мою пользу и наверняка искажает реальную картину.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-7.jpg" alt="" /></figure><h3>Какие DevRel команды вы считаете самыми сильными в 2022 году?</h3><p>Вопрос был необязательным и со свободным вводом. Всего были упомянуты 106 компаний.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-22.jpg" alt="" /></figure><p>Кстати, сейчас нанимают:</p><ul><li><a href="https://hh.ru/vacancy/78376917?hhtmFrom=employer_vacancies">event-менеджера в Avito</a>;</li><li><a href="https://spb.hh.ru/vacancy/78689114">координатора программного комитета в Онтико</a>.</li></ul><h2>Что беспокоило деврела в конце 2022 года?</h2><h3>Что самое сложное в работе деврела в 2022 году?</h3><p>Искать докладчиков всегда было сложно, но в этом году стало труднее из-за кризиса, неопределённости и того, что нужно было поддерживать людей. Впервые стала заметной категория «Новые рынки».<br />Фан факт: в прошлом исследовании топ-темой был онлайн, а теперь наблюдаем проблемы с оффлайн мероприятиями.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-20.jpg" alt="" /></figure><h3>Какие сложные профессиональные вопросы у вас возникали в 2022 году? На что не находилось очевидных ответов или было не у кого спросить? (72 респондента)</h3><p>Категория новых рынков сразу же попала в топ. Ранее деврелы редко работали не только на внутренний рынок, но и на внешний, и в этом году ситуация изменилась.</p><p>Появились вопросы относительно карьеры. Отрасль взрослеет, и люди хотят заботиться о своём развитии и будущем.</p><p>Руководители команд начали задумываться о том, как измерять успех своих сотрудников и помогать им развиваться. Невозможно же с горящими глазами писать статьи или проводить ивенты в течение пяти лет подряд.</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-16.jpg" alt="" /></figure><h4>Новые вопросы:</h4><ol><li>С какого момента необходимо расширять команду?</li><li>Какие роли и в какой конфигурации нужны?</li><li>Перестройка структуры команды?</li><li>Как «измерять сотрудников», чтобы у руководства не было вопросов и сотрудники понимали, за что они получают деньги и куда они могут дальше расти?</li><li>Какую систему мотивации создать для адвокатов бренда работодателя?</li></ol><h3>Как вы видите своё дальнейшее развитие в профессии в ближайшие три года (72 респондента)</h3><p>Оказалось, что вариантов у нас довольно много. Можно углубить экспертизу и понимание технологий, расширить зону влияния и отвечать не только за разработчиков, но и, например, за дизайнеров, или вообще начать управлять продуктом. Или стать менеджером, который управляет деврелами (некоторые уже успешно консультируют компании или менторят коллег). Или выйти на международный рынок. Есть и те, кто хочет сфокусироваться на собственной публичности (сапожники без сапог, привееееет!).</p><figure><img src="https://media.tproger.ru/uploads/2023/03/Frame-8.jpg" alt="" /></figure><h2>Что дальше?</h2><p>Я планирую сделать цикл из 5 статей на основе проведённого исследования:</p><ol><li>Профессиональное развитие деврела.</li><li>Кое-что про метрики.</li><li>Задачи и роли DevRel-специалистов.</li><li>DevRel-команды: сокращаются, расширяются или качественно эволюционируют?</li><li>Обезличенные зарплаты DevRel-специалистов.</li></ol><h2>Благодарности</h2><p>Над этим материалом вместе со мной работали Даша Тиходеева, Илья Васильев, команда Tproger. Спасибо вам огромное, без вас этот проект не случился бы.</p>]]></content:encoded>
    </item>
    <item>
      <title>Domain Driven Design: давайте не будем усложнять</title>
      <link>https://tproger.ru/articles/domain-driven-design-davajte-ne-budem-uslozhnyat</link>
      <comments>https://tproger.ru/articles/domain-driven-design-davajte-ne-budem-uslozhnyat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Kozhin Dev]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/domain-driven-design-davajte-ne-budem-uslozhnyat</guid>
      <description><![CDATA[<p>Что такое DDD и зачем он нужен: принципы предметно-ориентированного проектирования, инструменты Bounded Context и Ubiquitous Language, плюсы и минусы подхода — с примерами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/domain-driven-design-davajte-ne-budem-uslozhnyat">Domain Driven Design: давайте не будем усложнять</a>»</p>]]></description>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 17 Feb 2023 07:13:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>Представьте, что к вам обращается клиент, который хочет создать веб-сервис для промышленного предприятия. Ему нужны модули для контроля производства, состояния склада, форма для приема заказов и оплаты, построение маршрутов и отслеживание машин, доставляющих продукцию. Если попытаться уместить все эти функции в одном приложении, неизбежно возникнет путаница: появится много лишнего кода, который будет мешать программе работать. В такой ситуации вспоминается «бритва Оккама»: не плоди лишних сущностей без надобности.</p><p>И у программистов есть инструменты, которые работают по этому принципу. Один из них — подход Domain-Driven Design, предметно-ориентированное проектирование. Мы в KozhinDev применяем DDD на практике и расскажем о его преимуществах в статье.</p><h2>Что такое Domain-Driven Design</h2><p>Domain-Driven Design — подход к проектированию ПО, в основе которого положено тесное сотрудничество клиента и разработчиков. Заказчик посвящает команду в бизнес-логику своей компании, объясняет, как устроена ее работа, участвует в проектировании сервиса. Основной принцип DDD — разделение приложения на домены.</p><p>Домен — предметная область, которая описывает совокупность проблем и целей бизнеса. Можно сказать, что это — отрасль деятельности компании заказчика, которую необходимо автоматизировать с помощью IT-решения. Например, если компания занимается грузовыми перевозками, в домен будут входить все связанные с этим проблемы: выбрать машину, построить маршрут и другие.</p><p>В проектируемом веб-сервисе выделяют также основной домен — core domain, ядро продукта, его основную функцию. Так, если продолжить пример с перевозкой грузов: основная задача приложения — обеспечить доставку посылки из пункта А в пункт Б.</p><p>Домены в свою очередь делятся на субдомены — подобласти, которые отвечают за отдельные проблемы. Например, для сервиса грузоперевозок в качестве субдомена оформление заказа и выбор оптимального маршрута.</p><p>Для решения проблемы могут использоваться модели (model), которые описывают отдельные аспекты предметной области. Пример — сценарии пользовательского поведения на сайте. Человек открывает главную страницу, ему нужно заказать перевозку — он нажимает на кнопку «отправить груз».</p><p>Впервые подход Domain-Driven Design описал Эрик Эванс еще в 2004 году в книге</p><p>«Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем». Более краткое изложение принципов Domain-Driven Design можно найти у Вона Вернона в издании «Предметно-ориентированное проектирование. Самое основное», которое вышло в 2016 году.</p><h2>Зачем нужен Domain-Driven Design</h2><p>Мы использовали подход Domain-Driven Design для создания информационной системы «Абитуриент», которая автоматизировала работу приемной комиссии Сибирского федерального университета. Этот сервис включает в себя личный кабинет оператора, личный кабинет абитуриента, возможность подачи документов онлайн, приема документов онлайн и офлайн, двустороннюю интеграцию с Порталом Госуслуг и другие возможности. В процессе проектирования возникали все новые и новые потребности, архитектура сервиса разрасталась.</p><p>Такое разрастание функционала грозит образованием «больших комков грязи» — big balls of mud. Это крупные массивы запутанного, неряшливого кода, которые снижают производительность сервиса и осложняют его поддержку в будущем.</p><p>Объясняем на котиках: если у длинношерстного кота образуется колтун, то ему будет некомфортно. Комок шерсти будет мешать ему в повседневной жизни, мешать. Можно попытаться распутать колтун, но обычно это не так уж легко и доставляет животному еще больше дискомфорта. Чаще всего спутанную шерсть приходится просто срезать и следить, чтобы она не путалась впредь.</p><p>Также и с крупными веб-сервисами: «комок» некачественного кода мешает ему нормально работать, даже разработчики не всегда могут разобраться в его назначении, но взять и «вырезать» его — сложная задача. Поэтому лучше предотвратить его появление на этапе проектирования — например, использовать DDD.</p><h2>Основные инструменты Domain-Driven Design</h2><p>Для упрощения работы со сложными системами в DDD используются:</p><ul><li>Ubiquitous Language — язык описания или универсальный язык. Он нужен, чтобы описание домена и моделей было однозначным, не возникало противоречий.</li><li>Bounded Context — ограниченный контекст. Ограниченная предметная область, которая отвечает за строго определенный функционал, со своим языком описания.</li></ul><p>Основной принцип работы по DDD — разделение предметной области на ограниченные контексты со своими языками описания. Так, без DDD модель «пользователь» описывает все роли, и поэтому очень разрастается. Она описывает и посетителей сайта (имя пользователя, адрес), и данные авторизации (когда пользователь зашел в систему), и разграничения прав доступа для модераторов. В DDD такая модель разделяется на отдельные модели для каждого ограниченного контекста, чтобы не возникало путаницы. Посетитель, модератор, администратор — это разные типы пользователей, каждый из которых относится к своей области.</p><p>Другой пример ограниченного контекста — отправка уведомлений через почту или смс. Это замкнутая область, которая пересекается с бизнес-моделью в четко определенных местах вызова функций отправки, и не использует модели из других областей.</p><p>С помощью Domain-Driven Design мы структурировали сервис для СФУ. Выделили главный домен — прием документов от абитуриентов из разных городов. Обособили личный кабинет абитуриента, личный кабинет оператора приемной комиссии, контентную часть — полезную информацию, которую добавляют модераторы, а также заверение документов простой электронной подписью без визита в вуз, систему документооборота, формирование списков и другие модули.</p><p>В итоге архитектура проекта получилась четкой и понятной:</p><ul><li>небольшие и понятные контексты;</li><li>каждый контекст отвечает за свой свою подобласть;</li><li>ясные и лаконичные названия сущностей.</li></ul><h2>Связи в Domain-Driven Design</h2><p>Чтобы сервис корректно работал и выполнял все свои функции, между модулями системы нужно настроить связи. В DDD-подходе это называется context mapping.</p><p>Нужно помнить, что:</p><ul><li>у разных связей есть свои плюсы и минусы, но нет плохих или хороших связей в общем смысле.</li><li>создание правильных связей между контекстами и обновление их в зависимости от ситуации — важный элемент DDD.</li></ul><p>Типы связей в Domain-Driven Design:</p><ul><li>Партнерство (Partnership), общее ядро (Shared Kernel): используются для тесно связанных между собой контекстах. Обычно самые быстрые в реализации, но несут в себе опасность связанности кода. Механизм партнерства похож на слаженную работу команд для разработки фронтенда и бэкенда: они обмениваются информацией, подстраиваются под изменения друг друга. Общее ядро подходит для ситуаций, когда нужно использовать в разных контекстах одну сущность, например, пользователя.</li><li>Потребитель-поставщик (Customer-Supplier), конформист (Conformist): нужны, когда для разных контекстов приходится использовать один универсальный язык. Потребитель-поставщик похож на партнерство, но выделяется главная команда — поставщик, которая не всегда отзывчива к изменениям другой команды — потребителя. Конформист — когда потребитель вообще никак не может влиять на то, что отдает ему поставщик.</li><li>Антикоррупционный слой (Anticorruption Layer): применяется, когда нужна прослойка между универсальным языком источника данных. Более безопасный вид связи между поставщиком, у которого меняется API, и потребителем. Все данные от поставщика проходят через прослойку, меняется только она, а структура потребителя остается неизменной.</li><li>Open Host Service, опубликованный язык (Published Language): используются на стороне источника данных для стандартизации протокола обмена и приема. Некоторые авторы разделяют их, но мы рассматриваем, как один вид. Эта связь обратна антикоррупционному слою: поставщик поддерживает постоянный API, чтобы потребителю не приходилось постоянно обновлять свои данные.</li></ul><p>Кроме прямого вызова методов объектов, связи в DDD можно реализовать также с помощью механизма сообщений Messaging, событий — Domain Events, Event Sourcing. Доступно также создание сценариев через Event Storming. Домены реагируют на событие по-своему: например, если событие «пользователь создан», то модуль биллинга может создать ему аккаунт для оплаты, модуль отправки сообщений — прислать приветственное письмо.</p><h2>Недостатки Domain-Driven Design</h2><p>Главная сложность подхода DDD — необходимость работать в тесной связке с клиентом. Не все заказчики готовы выделить людей в своем штате, которые будут вводить разработчиков в курс дела, оставаться на связи, участвовать в проектировании. Если клиенту нужен сложный, многофункциональный продукт, то придется объяснять ему важность участия.</p><p>Также, если команда ранее не работала по Domain-Driven Design, то программистам придется изучать новые для себя инструменты, адаптироваться к более плотному сотрудничеству с клиентом. Например, разработчикам при использовании этого подхода нужно внимательнее подходить к созданию и изменению сущностей и связей, к переименованию.</p><h2>Подведем итог: что дает клиенту и разработчику DDD</h2><p>Сложное практически всегда состоит из простых частей, соединенных простыми связями. Благодаря применению Domain-Driven Design код веб-сервиса или мобильного приложения получается несложным и понятным. В итоге упрощается его чтение, а значит — поддержка и развитие сервиса в будущем.</p><p>Основные инструменты DDD — универсальный язык и ограниченный контекст. Но не обязательно использовать все инструменты, можно ограничиться основными и добавлять новые по мере необходимости. Даже простого разделения предметных областей, продумывание их перед разработкой поможет сделать код приложения более качественным. При развитии продукта важно продолжать придерживаться принципов DDD.</p><p>В растущих системах стоимость поддержки плохого кода вырастает в геометрической прогрессии, тогда как сложность планирования на старте разработки почти линейная при линейной сложности предметной области. Применение DDD делает поддержку сервиса не только проще для разработчика, но и дешевле для заказчика.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как я написал свою поисковую систему для быстрого поиска личной информации</title>
      <link>https://tproger.ru/articles/kak-ja-napisal-svoju-poiskovuju-sistemu-dlja-bystrogo-poiska-lichnoj-informacii</link>
      <comments>https://tproger.ru/articles/kak-ja-napisal-svoju-poiskovuju-sistemu-dlja-bystrogo-poiska-lichnoj-informacii?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Eugenio Uglov]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-ja-napisal-svoju-poiskovuju-sistemu-dlja-bystrogo-poiska-lichnoj-informacii</guid>
      <description><![CDATA[<p>Как создать собственную поисковую систему для быстрого поиска личной информации с применением метода графов или тэгов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-ja-napisal-svoju-poiskovuju-sistemu-dlja-bystrogo-poiska-lichnoj-informacii">Как я написал свою поисковую систему для быстрого поиска личной информации</a>»</p>]]></description>
      <category><![CDATA[Сортировка и поиск]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Пост пользователя]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 29 Dec 2022 11:30:07 GMT</pubDate>
      <content:encoded><![CDATA[<p>Все началось с того, что мне стало трудно находить нужную информацию, файлы. Чем больше файлов и папок у меня образовывалось, тем больше времени уходило на поиски нужного. Я понял, что каждый раз искать в бесконечных списках файлов и папок, особенно с условием вложенности это не вариант для больших объемов данных.</p><p>Что касается поиска по названию файла, то количество символов, указанных в названии ограниченно и слова при поиске должны быть в строго определенной последовательности. Тем более, если система индексирует другие, не нужные для поиска файла (системные файлы, файлы проектов), то поиск выдает много «мусора».</p><p>Поиск по содержанию файла даёт не самый релевантный результат. Может выдать бесполезные результаты с содержанием содержащие ключевые слова, но не относящиеся к тому, что действительно необходимо найти.</p><p>Более того, по содержанию можно искать только текстовые файлы.</p><p>Ссылка на проект — <a href="https://eugeniouglov.000webhostapp.com/yessir/#main">тут</a>.</p><h2>Структура содержания информации</h2><p>Структура папок представляется собой в виде дерева. Мне это не нравится, потому что каждая папка может содержать только определенные файлы, если не учитывать копирование и ссылки.</p><p>Так же это можно представить с примером из реальной жизни, для того, чтобы найти зелёное свежее яблоко сорт «Девственный». Необходимо найти отдел с фруктами, затем отдел с яблоками, затем ищем зеленные, затем сорт, ну там ещё их на свежие, не свежие фасуют в этом воображаемом примере и наконец найти нужное apple.</p><p>Усложняется ещё все и тем, что я не помню есть ли там вообще яблоки, и если есть, то хранятся ли они в отделе фрукты.</p><p>А почему бы об этом просто не попросить прихвостня (они уже у всех есть, правда?): «Принеси мне зелёное свежее яблоко».</p><p>Как сразу становится удобно!</p><p>В общем, всем этим я хочу сказать, что поиск нужной информации в папках хорош, если папок немного и если помнить какие папки существуют, а не перебирать все подряд.</p><p>А вот если мы не знаем существуют ли яблоки вообще, то спрашиваем прихвостня:</p><p>— Яблоки есть?</p><p>— Есть, господин! Сотни, игрушечные, красные, гнилые….</p><p>— Мне нужно свежее яблоко.</p><p>— Понял! Есть красное свежее яблоко «Сирота», красное свежее яблоко «Курага», …</p><p>— А что насчёт зелёного свежего яблока.</p><p>— Есть! Зелёное свежее яблоко «Пух-тибидух» и Зелёное свежее яблоко «Девственный».</p><p>— В таком случае, принеси мне, пожалуй, Зелёное свежее яблоко «Девственный».</p><p>— Да, сэр.</p><p>Вот последняя фраза как раз таки и стала названием приложения. Как ответ на команду пользователя — «Yes Sir».</p><p>Возвращаясь к яблокам. Заметили, что в первом случае нужно искать яблоки не пойми где, а во втором мы задаём уточняющие условия к запросу?</p><figure><img src="https://media.tproger.ru/uploads/2022/12/6d82f5dd-e858-47bb-be82-3d5dc1a64353.png" alt="" /></figure><p>Приведу пример более реалистичный. Есть папка с музыкой и подпапки для разделения на жанры. Но что если в какой-то момент мне захочется послушать французскую музыку не зависимо от жанра. Вот тут то и вся проблемность древовидной структуры папок вылазит. Можно конечно, как советовали на форумах, создавать отдельные папки под язык произведения и кидать ссылки, но опять папки…</p><p>А вот, что произойдет, если каждому файлу установить теги с жанром, языком, ну и конечно что это музыка, песня.</p><p>В этом случае возможно группировать, сортировать музыку гораздо гибче. Например, скомбинировав 3 тега: французская, русская, рок можно получить то, чего стандартными средствами Windows не возможно, ну или я чего-то не знаю.</p><h2>Попытки найти готовое решение</h2><p>Первой идеей было воспользоваться «тегированием» файлов, папок. Таким образом можно искать информацию комбинируя теги, не зависимо от порядка слов. И лучшими приложениями для этого, могу выделить XYplorer и Tagging for windows. Первая из себя представляет отдельный файловый менеджер с опцией тегирования. Второе приложение — дополнение к стандартному файловому менеджеру. Однако они позволяют искать файлы только на ПК и конечно нельзя написать как в Гугл поисковике запрос близкий к пользователю, а алгоритм уже бы сам выбрал из запроса теги и отсортировал информацию по приоритету. В последствии удалил обе, они подвисали и крашились частенько (возможно дело в моих надстройках Windows, не хочу делать анти пиар этих отличных программ).</p><h3>Визуальный поиск</h3><p>В попытках найти оптимальный способ поиска доходило до странного. Я больше визуал и поэтому загружал изображения более менее подходящее по теме информации в социальную сеть ВКонтакте, а саму информацию сохранял в комментариях под изображениями. Это дало некоторый прирост в скорости поиска и пользоваться можно с любого устройства. Но как вы, наверное, понимаете долго это продолжаться не могло. В конечном итоге я стал задумываться а к какой информации относится это изображение, на котором рельсы — означает адреса знакомых или желаемые места для путешествия… Ну а уж то, что под одним изображением образуется портянка из информации без возможности вложенности — это фиаско, бро.</p><h3>Желаемый функционал</h3><p>Я подумал, что было бы отлично разработать приложение, которое бы подходило по таким критериям:</p><ol><li>Можно использовать с любого устройства без возможности подключения к интернету.</li><li>Поиск личной информации настолько быстро, насколько это возможно.</li><li>Поиск должен быть простым как Google Search.</li><li>Возможность сохранить всю текстовую информацию в текстовый файл.</li></ol><h3>Выбор технологий</h3><p>1. По первому пункту из желаний было решено разработать веб приложение, так как с любого устройства, на котором есть браузер, можно получить к нему доступ. Данные хранятся в localstorage браузера, но при открытии сайта сразу выгружаются в переменную для обеспечения лучшей скорости.</p><p>Для синхронизации данных с другим устройством, браузером я взял базу данных mysql от 000webhost бесплатно, но потом перестал использовать из-за ограничений на объем. Сейчас единственный способ для обновления пользовательских данных — импорт и экспорт файла. Однако я делаю это очень редко, т.к. в основном пользуюсь только со смартфона. Что касается офлайн режима — я использовал serviceworking. Необходимо только один раз зайти на сайт, чтобы все ресурсы сайта загрузились и дальше использовать полностью офлайн из браузера.</p><p>2. Быстрый поиск.</p><p>Раз поиск должен осуществляться подобно Гугл поисковику, то нужно чтобы каждое слово из запроса проверять на существующий из уже созданного блока информации. Таким блоком у меня выступает объект с ключами: уникальное название блока, действие(показать информацию, открыть ссылку…), содержимое, теги.</p><p>Итак, по ключу «теги» у нас будет храниться массив из символов(слов) для конкретного блока информации.</p><p>Сразу возьмём пример блока.</p><p>Название: как создать сайт.</p><p>Действие: показать информацию.</p><p>Содержимое: берём html, добавляем js и украшаем css.</p><p>Теги: создание сайта, веб программирование, верстка.</p><p>Массив из тегов формируется из текстов полученных с полей ввода для тегов и названия. Каждое слово это тег, разделять можно запятой и пробелом. Была идея конечно сделать как на Ютубе, теги как словосочетания, но я решил остановиться на более широкой выдаче по ключевым словам. Из примера блока выше массив тегов будет таким: [«как», «создать», «сайт», «создание», «сайта», «веб», «программирование», «верстка»].</p><p>Теперь самое важное — определиться как будет происходить поиск. Первое, что пришло в голову это брать каждое слово из поискового запроса и сравнивать с каждым словом из тега каждого блока. В голову как пришло, так и ушло, это отвратительная идея. Следующей идеей было создание объекта, в котором каждый тег это отдельный ключ, а значение это массив из индексов блоков.</p><p>3. Итак, при вводе запроса проверяется есть ли слово в хранилище тегов, если да, то блок добавляется в массив на отображение.Теперь нужно отсортировать по приоритету. Чем выше результат в выдаче, тем более он подходит запросу. Это я реализовал с помощью количества ключевых слов в запросе, чем больше слов из запроса содержится в массиве тегов блока, тем более блок приоритетнее.</p><p>4. И насчёт сохранение в файл совсем кратко. Можно сохранять и импортировать файл в виде json.Так же мой опыт с использованием ВКонтакте как поисковик по изображениям дал мне идею для возможности добавлять изображение к каждому блоку при желании.</p><h2>Итоги</h2><p>В результате я сделал то, чем пользуюсь уже больше года. Как веб, так и ПК версия оказались очень полезными. Использую для работы и личной жизни. Скорость поиска, которую я в итоге получил меня многократно выручала, когда нужно было найти что-то очень быстро.</p><figure><img src="https://media.tproger.ru/uploads/2022/12/010d352d-7202-48cf-9033-f5cfda9fa510.png" alt="" /></figure><h2>Ответвление в другие проекты</h2><p>Веб приложение мне настолько понравилось, что я захотел написать программу для исполнения программ по команде от запроса пользователя на ПК. Вдохновлённый голосовыми помощниками, я создал программу, которая ищет и исполняет файлы. А поиск соответственно так же подобен веб поисковику. Особенность в том, что можно перетащить файл/файлы напрямую в программу и алгоритм автоматически установит теги исходя из названия файла и папок, в которых он содержится. Но это тема другого поста, если этот окажется интересным.</p><h2>Послесловие</h2><p>Буду рад любым комментариям. Узнать ваше мнение по поводу идеи. Полная ли это ерунда. Или, в чем я почти не сомневаюсь, есть уже приложения с подобной реализацией. Спасибо!</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему Agile не работает, и как наладить работу IT-команды</title>
      <link>https://tproger.ru/articles/pochemu-agile-ne-rabotaet</link>
      <comments>https://tproger.ru/articles/pochemu-agile-ne-rabotaet?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Виктория Овсянникова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pochemu-agile-ne-rabotaet</guid>
      <description><![CDATA[<p>Разбираемся, почему методология Agile не работает и что следует предпринять, чтобы команда IT-специалистов работала эффективнее.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pochemu-agile-ne-rabotaet">Почему Agile не работает, и как наладить работу IT-команды</a>»</p>]]></description>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Nov 2022 14:50:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Agile считается одним из универсальных способов выстраивания работы IT-команд. Про него написано множество книг, по нему проводятся курсы, на его основе создаются новые профессии для внедрения итеративного подхода к управлению проектами и разработке программного обеспечения. Но так ли всё гладко? Заместитель начальника управления автоматизации брокерского бизнеса Группы «Иннотех» Роман Островский готов поделиться подводными камнями методологии Agile и особенностями выстраивания эффективных IT-команд на практике.</p><ol><li><a href="https://tproger.ru/#1">Agile vs современный мир</a></li><li><a href="https://tproger.ru/#2">О важности командной работы</a></li><li><a href="https://tproger.ru/#3">Роли, неофициальные лидеры и условия</a></li><li><a href="https://tproger.ru/#4">Выстраивание общения</a></li><li><a href="https://tproger.ru/#5">Выгорание и снижение мотивации</a></li><li><a href="https://tproger.ru/#6">Главный принцип создания эффективной команды</a></li></ol><h2>Agile vs современный мир</h2><p>В теории внедрение Agile начинается с изучения <a href="https://agilemanifesto.org/iso/ru/principles.html">манифеста</a> с 12 принципами разработки. Кстати говоря, их придумали 17 человек, собравшихся в начале 2001 года в городе Сноуберд, штат Юта. Они были обеспокоены, что в разных компаниях по-разному представляют оптимальный процесс разработки программного обеспечения. Но один вывод был общим для всех: компании настолько сосредоточены на избыточном планировании и документировании циклов разработки ПО, что уже неспособны эффективно и вовремя решать задачи клиентов.</p><p>Прошло более 20 лет, и можно сказать, что, на моей практике, подход Agile не работает. Почему? В большинстве случаев используются косметические моменты: например, есть команда, которая работает по спринтам, проводит стендапы, планинги и ретро. Но это не значит, что разработка проходит по Agile.</p><p>В чём же сложности внедрения, казалось бы, разумных подходов? Скорее всего, не очень умеем пока. К тому же в больших компаниях много бюрократии, что накладывает отпечаток.</p><p>Методология даёт определённую свободу. Именно поэтому её так любят многие молодые специалисты. Но всё равно команде нужен такой «бесполезный» человек, как руководитель проекта. Он приземляет команду в желаниях по улучшению MVP и чётко блюдёт интересы заказчика. Мы в IT работаем в первую очередь на продукт, результат.<br /></p><h2>О важности командной работы</h2><p>Необходимо правильно понимать, что неработающие принципы не повод отказываться от всей философии. Agile на самом деле гораздо обширнее, чем кажется. Приведу пример не из IT-отрасли.</p><p>Так совпало, что дочка ходит в школу, которая учит не совсем по стандартной школьной программе. В ней делается много акцентов на коммуникации, взаимодействии, командной работе и тому подобном.</p><p>В шестом классе в классе организовали некую проектную работу, которую должны были делать командой из пяти человек. Первые полгода рассказывали, как выбирать тему, что и как должно быть в проекте, как его делать и презентовать. Всё вроде красиво и интересно — уже в 11 лет работа в команде, всё самостоятельно и прочее, но было одно но. Ребятам никто не донёс и не объяснил, как надо работать в команде, а куратор, который должен был выправлять какие-то шероховатости в процессе работы над проектом, не сильно уделял этому внимание.</p><p>По итогу в команде организовался «самоназванный лидер», причём именно «самоназванный». Как выяснилось, по факту какими-то лидерскими качествами он и не обладал, всё, что делал: раздавал ЦУ и возмущался, если что-то было не так, как он считал нужным. Влезал в создаваемые рабочие процессы и вносил лишь сумятицу. Никого не напоминает?</p><p>Вдогонку пошли конфликты, наезды, поклёпы, полураспад команды, дотаскивание со скрипом того, что осталось. Результат — кое-как и кое-что вынесли в «прод», получили по 4 балла и разбежались, перекрестившись, что это закончилось.</p><p>В чём тут мораль? Да, наверное, в том, что правила, описание процессов и прочее — не главное в командной работе. Главное — это именно командная работа. Ответственность всей команды, а не одного конкретного её члена, помощь в сложных ситуациях и прочее. К сожалению, в реальности далеко не всегда так получается. И это печалит, потому что этому очень мало уделяют внимание.<br /></p><h2>Роли, неофициальные лидеры и условия</h2><p>А теперь перенесём эту детскую историю на рабочие проекты. По моему мнению, чётких ролей в проектах быть не должно: каждый член команды должен делать то, что позволит получить максимальный результат, в силу своих знаний, умений и опыта. Это не значит, что тестировщик должен разрабатывать программный код продукта. Но если он знает программирование, то пусть внедряет автотесты. Тот же тестировщик может где-то подсобить с аналитикой, технической документацией, согласованиями или ещё чем-то. Главное — помнить: если ты такой везде помощник, но свои задачи не успеваешь выполнять, лучше уж не помогай.</p><p>Если вернуться к вопросам о неформальных лидерах, то, по опыту, я не встречал с ними проблем. Во-первых, достаточно часто формальный и неформальный лидеры — одно лицо. Во-вторых, лидер в данном случае — не начальник, а человек, который двигает вперёд всю команду. И ему не нужны какие-то лавры, должности, звания, а достаточно того, что команда идёт за ним. В-третьих, чаще всего неформальные лидеры адекватные и договороспособные. Поэтому руководители проектов или отделов могут найти с ними общий язык для решения поставленных задач. Если формальный лидер не сможет договориться, то есть высокий риск, что его просто вынесет из проекта команда.</p><p>При этом условия работы, о которых также говорится в манифесте Agile, должна создавать сама команда.<br /></p><h2>Выстраивание общения</h2><p>Если говорим про условия работы команды, то коммуникация — один из ключевых моментов. К сожалению, стоит констатировать факт: многие люди разучились говорить простым человеческим языком. И дело даже не в пресловутых софт-скилах, а в навыке донести точку зрения, передать информацию и так далее.</p><p>Можно внедрить довольно простые принципы коммуникации в команде. Сейчас большая часть общения проходит в чатиках, и тут многое зависит от их состава. Где-то нужно поофициальнее — когда в участниках продукт-овнеры, руководители. А в иных стоит и неформально — вспоминая наследие Нассима Талеба, можно и выматериться, если так информация дойдёт более точно до собеседников.</p><p>Общаться с заказчиком нужно как минимум уверенно. Зачастую именно он продавливает сокращение сроков, расширение функциональности и тому подобное. Но тут нужно понимать — это не просто его прихоть, поэтому нужно относиться с уважением к изменениям техзадания и искать компромиссы.</p><p>Про топ-менеджмент сложно найти универсальные стратегии коммуникаций. Но точно могу сказать, как с ними не нужно общаться. Точно не нужно подключать их к темам из серии «в туалете закончилась туалетная бумага, мне не выдают ручку, почему мне выдали монитор 27″, а не 4К».<br /></p><h2>Выгорание и снижение мотивации</h2><p>Ещё одна популярная тема после Agile, про которую написаны тонны книг и записаны терабайты видео, — борьба с выгоранием и снижением мотивации. Компании тратят огромные средства на комнаты психологической разгрузки, массажные кресла и так далее. Но чтобы работники трудились эффективно, нужен просто баланс между жизнью и работой — подбор оптимального, комфортного для каждого режима, который не будет кардинально идти вразрез с командой.</p><p>Расскажу собственную историю. Больше года я работал в режиме с 9 до 23 в офисе. Как следствие, уходил из дома, когда дети ещё спали, а приходил — когда они уже спали. Видел их в лучшем случае только на выходных в тот небольшой период, когда не отсыпался.</p><p>Через год заметил, что младший, которому в период начала активной работы был год, подрос, и я уже не смогу поучаствовать в периоде его взросления с года до двух лет. А это очень классный период.</p><p>Тогда понял, что работа в таком режиме — совсем не вариант. Дети — это, наверное, главное, что есть в жизни, по крайней мере, для меня. Сделав неглубокий анализ, я решил всё поменять. Привело это, правда, к смене работы, но это немного другая история.</p><p>Шли годы, и при очередном проекте с жесточайшими сроками, оглядываясь на прошлый опыт, я пришёл к такому графику:</p><ul><li>с 9 до 18 — стандартный рабочий день в основном с акцентом на встречи, обязательные задачи и прочее;</li><li>с 18 до 22 или 23 (по ситуации) — личная жизнь, дети, семья, друзья, уроки, посиделки;</li><li>с 23 до 2 или 3 (по состоянию и критичности задач) работа над какой-то текучкой, которая, с одной стороны, не требует большого количества умственных затрат, а с другой — отнимает довольно много времени, и если её не делать, количество задач скопится до необозримых размеров.</li></ul><p>Но этот режим подходит мне как «сове». Я отказался от залипания в YouTube или книжку в пользу работы. Не удивлюсь, если найдутся «жаворонки», которым по кайфу будет работать в период с 6 до 9 утра, ещё до начала стандартного рабочего периода.</p><p>Также добавлю, что работа в выходные должна быть по возможности исключением, чем правилом. И уж тем более не нужно рассматривать работу в выходные как возможность дополнительного заработка. На восстановление после выгорания уйдёт наверняка больше денег.<br /></p><h2>Главный принцип создания эффективной команды</h2><p>Подводя итог: рецепт эффективной разработки можно уместить в простую фразу «вся команда целиком ответственна за результат, и нет чётких рамок, ролей и задач». Лидеру команды не должно быть зазорно помочь в тестировании или поковырять код, если это обеспечит более быстрый результат. Но и придерживаться принципа «хочешь сделать хорошо — сделай это сам» повсеместно не стоит. Нужно искать баланс и компромиссы.</p><p>Буду рад в комментариях почитать опыт построения эффективных команд в других компаниях. Возможно, что положительных примеров использования Agile будет больше, чем негативных.</p>]]></content:encoded>
    </item>
    <item>
      <title>CI/CD или конвейер качественного кода</title>
      <link>https://tproger.ru/articles/ci-cd-or-quality-code-pipeline</link>
      <comments>https://tproger.ru/articles/ci-cd-or-quality-code-pipeline?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ci-cd-or-quality-code-pipeline</guid>
      <description><![CDATA[<p>CI/CD объединяет автоматические тесты, доставку и развёртывание кода, помогая реже пропускать баги на боевой сервис и сокращать потери времени.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ci-cd-or-quality-code-pipeline">CI/CD или конвейер качественного кода</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Product Development]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 20 Nov 2020 07:58:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Часто при релизе обновлений проектов возникают ситуации, когда по различным причинам на боевой сервис попадает баг, не выявленный прежде на тестовых серверах. И в связи с этим, у клиентов появляется ряд неудобств вплоть до полного отсутствия работоспособности проекта. Одно дело, если речь идет об одностраничном лендинге, и потенциальный покупатель не может найти контактов компании для связи, совсем другое — если мы имеем дело с интернет-магазином, который становится недоступным — это уже прямая потеря денег. Не говоря уже о финтех секторе, где каждая секунда неработающего сервиса выливается в колоссальные денежные потери.</p><p>Можно ли избежать страха и ненависти как клиента, так и конечных пользователей? Равно как и потери значительной части времени специалистов от общего количества часов разработки? Мы в <a href="https://chillicode.ru/">агентстве CHILLICODE</a> считаем, что да. И в этом нам может помочь применение методологии CI/CD.</p><p>Непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) представляют собой культуру, набор принципов и практик, которые позволяют разработчикам чаще и надежнее развертывать изменения программного обеспечения.</p><p>В свое время Генри Форд перевел создание автомобилей от ручной сборки к поточному конвейерному производству, перевернув тем самым промышленность своего времени. Принцип действия CI/CD (Continuous Integration &amp; Continuous Deployment) в чем-то похож на конвейер: методика выполняет интеграционную функцию, включая различные типы автоматических тестов на каждом этапе, с последующей доставкой и развёртыванием кода в готовый продукт для конечного пользователя.</p><p>Мы у себя с недавнего времени внедрили CI/CD в большинство  наших проектов, что позволило выстроить процесс релиза обновлений буквально в один клик, снизить риски появления багов, внедрив автотестирование и анализ качества кода перед каждым релизом, а также исключить особенности различий окружения хоста разработчика и сервера путем упаковки приложения в так называемые «контейнеры».</p><p>Многим клиентам, чей формат проекта подразумевает регулярные обновления, мы предлагаем работать с нами вместе с настроенной системой CI/CD. Потратив немного времени на старте на настройку окружения для непрерывной интеграции, мы сократим риски и сможем предложить клиенту высвободившиеся часы на более сложные задачи.</p><h2>Какие этапы релиза можно автоматизировать?</h2><h3>Тестирование и контроль качества</h3><p>Конечно же, об этом речь должна пойти в первую очередь. Тестировщиков нельзя полностью заменить, но львиную долю повторяющихся проверок можно автоматизировать путем модульного и регрессионного тестирования. Мы предлагаем автоматизацию в квадрате. CI/CD имитирует среду выполнения конечного сервера и запускает тесты автоматически, чтобы подтвердить работоспособность программного обеспечения и полностью исключить возможность выпустить в релиз продукт при возникновении ошибки. И клиент всегда будет уверен, что обновление не повредит работоспособности проекта.</p><h3>Сборка и упаковка кода</h3><p>Отныне разработчикам не нужно вручную подключаться к продакшн серверам проекта и с дрожащими руками пересобирать проект на боевом сервере. Пользователи более не увидят страницу «ведутся технические работы» во время обновления сайта благодаря методике «горячей подмены» контейнеров с развернутыми приложениями внутри.</p><h3>Открытая отчетность</h3><p>При добавлении клиента в репозиторий, он сможет самостоятельно отслеживать все процессы тестирования, сборки и доставки приложения на прод.</p><h2>Как обезопасить релиз?</h2><h3>В каких местах могут возникнуть проблемы?</h3><p>Стоит понимать, что автоматические модульные тесты и единая среда лишь фиксируют результат выполнения кода в определенных условиях, позволяя избежать нарушения их целостности в будущем. Однако в ситуациях, требующих ввода данных человеком, автоматизация может быть нежелательной или невозможной. Например, мы никогда не сможем автоматизировать приложение, когда дело доходит до удобства использования.</p><h3>Как предохраниться от логических ошибок функциональности и багов?</h3><p>Чтобы полностью исключить ошибки при деплое стоит комбинированно подойти к каждой итерации разработки продукта. Мы в CHILLICODE проводим релизы проектов в 5 этапов:</p><ol><li>После разработки новой фичи разработчик создает запрос на слияние ветки с новой функциональностью в основную ветвь приложения.</li><li>Тимлид проекта перед слиянием проверяет качество его кода и при возникновении проблем отправляет код на доработку.</li><li>После принятия запроса на слияние приложение проходит несколько этапов автоматического тестирования, анализа качества кода и разворачивается на нашем стейдж сервере.</li><li>Выделенный QA специалист дополнительно проверяет всю функциональность приложения на стейдж серверах перед показом клиенту.</li><li>И уже после одобрения клиентом всех правок мы отправляем приложение в релиз.</li></ol><h3>Что делать если критическая ошибка все равно осталась незамеченной и попала в прод?</h3><p>На этот случай мы держим в арсенале систему тегирования версий для каждого релиза и в случае возникновения критических ситуаций можем моментально откатить изменения до предыдущего состояния без необходимости вручную убирать участки ошибочного кода и заново проводить деплой приложения.</p><h2>Итого</h2><p>При работе с CI/CD мы имеем:</p><ul><li>Сокращение действий для деплоя до одного клика.</li><li>Снижение рисков появления потенциальных ошибок.</li><li>Автоматизация модульных и регрессионных тестов.</li><li>Щепетильный контроль качества кода.</li><li>Контейнеризация приложений и исключение различий среды разработки со средой выполнения.</li><li>Возможность моментального отката версии приложения при возникновении критических ситуаций.</li><li>Общее сокращение времени разработки на 10-20%.</li></ul><p>Внедряйте CI/CD в свои проекты, как это делаем мы в агентстве и пользуйтесь на здоровье. Если вы все еще сомневаетесь или остались какие-то вопросы, пишите комментарии и мы постараемся ответить.</p>]]></content:encoded>
    </item>
    <item>
      <title>Гибкая методология разработки Scrum, или как мотивировать всех участников проекта быть в потоке 24/7</title>
      <link>https://tproger.ru/articles/scrum-how-to-motivate-workers</link>
      <comments>https://tproger.ru/articles/scrum-how-to-motivate-workers?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/scrum-how-to-motivate-workers</guid>
      <description><![CDATA[<p>Рабочая модель адаптированной под внутренние процессы методологии Scrum и пример того, насколько просто с её помощью находиться в потоке проекта.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/scrum-how-to-motivate-workers">Гибкая методология разработки Scrum, или как мотивировать всех участников проекта быть в потоке 24/7</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 12 Nov 2020 11:24:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>За последние несколько лет в IT, слова Agile и Scrum настолько стали распространены, что любой, кто хоть малую долю своего времени тратит на развитие, в курсе теоретической и возможно практической области, что это за Agile философия и как работать с фреймворком-методологией Scrum.</p><p>Вот уже несколько лет, мы плотно работаем по адаптированной, под свои внутренние и проектные процессы, Scrum методологии.</p><p>Теоретическая канва заслуживает отдельной статьи, а пока, предлагаю ознакомиться с нашей рабочей моделью as-is и убедиться, насколько просто быть в потоке проекта, применяя Scrum методологию.</p><h2>Модель as-is в действии</h2><h3>Версия продукта (Релизность)</h3><p>Это отправная точка нашего пути. План выпуска релизов формируется в предшествующем текущему году.</p><p>Версии мы ведём в формате гг.нн, где гг — год, нн — номер версии. Например, первый релиз 2020 года будет под номером 20.1, затем 20.2, 20.3 и т. д. Такой формат очень удобен, во-первых, для ведения историчности, во-вторых, для планирования задач в разрезе года.</p><p>Согласно плану выпуска в backlog Jira SM заводит версии:</p><figure><img src="https://media.tproger.ru/uploads/2020/11/1.-T-A-B-.jpg" alt="" /></figure><p>Постепенно у бизнес-заказчика формируется понимание о реализации глобальных доработок в привязке к версиям. В течение года составы версий могут меняться. Конкуренция, различные факторы, влияющие на бизнес, новые открытия, технологии и прочее, и прочее находят отражение в глобальных задачах. Вчера бизнес планировал запустить версию в 3-м квартале 2020 года (версия 20.10), сегодня аналитики, проведя сильные исследования, говорят бизнесу поторопиться и запускаться во 2-м квартале (20.4).</p><p>В нынешних реалиях IT, да и не только нашей вотчины, такие изменения норма. Чем быстрее сможешь адаптироваться, настроиться, организовать команду и сделать то, что от тебя ждут, тем интереснее ты для рынка и для общества в целом.</p><p>Как бы то ни было, мы взяли и держим планку вот уже более 2 лет по количеству разрабатываемых релизов одновременно — 3 штуки.</p><h3>Глобальные задачи</h3><p>Здесь из самой формулировки ясно, что есть задачи, которыми говорит бизнес. Ему нужен комфортный авто, четыре колеса, полный бак и музыка хорошая. А что там под капотом, разберутся технологи и ОТР.</p><p>В нашем случае бизнес говорит: к 4-му кварталу 2020 года будем взаимодействовать с новым вендором для обеспечения и покрытия следующих процессов: a, b, c … n. И ещё приходит с тремя-четырьмя десятками таких глобальных задач, с разными приоритетами и ожиданием запуска в релизы 20.1–20.xx.</p><p>Регистрируем в бэклог Jira глобальные задачи — бизнес-запросы (Business-request, BR) с описанием и привязками к версиям. BR заводим запросами с типом Epic, начиная выстраивать пирамиду, где вершина — версия продукта, а основание — задачи спринта. Epic’и, так же как и версии, заводит SM.</p><figure><img src="https://media.tproger.ru/uploads/2020/11/fig2.jpg" alt="" /></figure><h3>Груминг</h3><p>Обрастаем фактурой. Теперь у нас есть списки версий и Epic’и с BR:</p><figure><img src="https://media.tproger.ru/uploads/2020/11/3.-BR.jpg" alt="" /></figure><p>Самое время плотно включаться командам на проработку BR для формирования историй и подзадач. SM организовывают груминги со всеми заинтересованными лицами со стороны заказчика, а также с командами внутри проекта. Именно с командами, т. к. BR могут иметь отношение к нескольким командам в зависимости от функциональности задач.</p><p>Так сложилось исторически, что у каждой BR есть направление в большую сторону одной из функциональных команд. Соответственно, ещё на стадии заведения BR в backlog, из первичного описания, у нас складывается представление, к какой функциональной области, а равно к какой команде в большей степени относится BR. SM такой команды автоматически становится драйвером всех оргпроцессов и коммуникаций.</p><p>Оценивая задачи с командой, SM собирает свой бэклог, наполняя историями. Свой бэклог SM формирует через создание спринтов в Jira. Как говорил ранее, в главе описания процесса формирования бэклога: «Оставив “жмых” более чем из сотни задач, стали распределять по командам, там же, в бэклоге, путём создания новых спринтов с припиской Backlog. Данные спринты никогда не берутся в работу, а служат только для хранения историй/задач для последующего взятия в спринт». Это действие относится и к новым задачам.</p><figure><img src="https://media.tproger.ru/uploads/2020/11/4.-backlog-sprint.jpg" alt="" /></figure><p>На выходе мы получаем бэклоги команд со списком историй и оценёнными подзадачами. Но не все задачи грумятся сразу. Есть ряд задач, которые ожидают оценок, формирования историй и включения в бэклоги команд для дальнейшей реализации. Как правило, это низкоприоритетные задачи или предназначенные к реализации в долгий горизонт.</p><figure><img src="https://media.tproger.ru/uploads/2020/11/5.-backlog-task.jpg" alt="" /></figure><h3>Истории</h3><p>Запросы данного типа, как вы уже поняли, позволяют нам детализировать BR, систематизировать задачи на команды и в будущем распределить их по спринтам.</p><p>Основное условие детализации BR на истории — одна история в один спринт. История представляет собой запрос с множеством конечных подзадач. Если понимаем, что оценка задач в истории больше чем на один спринт, дробим историю на части.</p><p>Теперь backlog приобретает такой вид:</p><figure><img src="https://media.tproger.ru/uploads/2020/11/6.-Screen.jpg" alt="" /></figure><p>В один клик в прямом смысле можно посмотреть состав версии по BR и историям вплоть до подзадач историй, всех статусов, оценок, комментариев и прочей полезной информации.</p><p>На скриншоте видны не заполненные цифрами серые овалы, это как раз те истории, которые предстоит оценить в ближайшем груминге.</p><p>Внутри каждой истории множество подзадач:</p><figure><img src="https://media.tproger.ru/uploads/2020/11/fig7.jpg" alt="" /></figure><h3>Спринты</h3><p>SM открывает доску с бэклогом в Jira, расшаривает всей команде и все совместно приступают к формированию предстоящего 2- недельного спринта. В ходе формирования могут вноситься корректировки в составы бэклогов, историй и оценки подзадач.</p><p>После взятия в достаточном объёме задач и историй для 2 недель спринт запускается</p><figure><img src="https://media.tproger.ru/uploads/2020/11/8.-Start-Sprint.jpg" alt="" /></figure><p>В приведённом примере отображены дробления историй: (Часть 2), (Часть 3). В бэклоге лежит ещё по парочке «Частей» в будущие спринты.</p><p>Согласно ЖЦ доски, исполнитель проводит задачи через все циклы: Нужно сделать → Разработка → Тестирование → Выполнено.</p><p>Что касается цикла тестирования: на старте спринта тестировщики берут разработанные задачи в соответствующем статусе «Тестирование». Окей, а как быть с задачами, которые к концу спринта будут только разработаны? Здесь мы идём по двум сценариям:</p><ol><li>Если функциональность не затрагивает монолит, да даже если и затрагивает, но разработчик на 100% уверен в своём результате и находит поддержку тестировщика, то выходим на показ и тестим на горячую.</li><li>Если дорабатывалось что-то глобальное, то тестирование переносим на следующий спринт.</li></ol><p>Заведомые переносы задач проговариваются с командой в момент формирования спринта либо в момент исполнения, когда видны и озвучены причины, мешающие закрыть задачу в срок.</p><p>Процесс ведения спринта описан ранее. Остановлюсь на ещё одном инструменте в Jira, который использую в рабочем процессе и который будет полезен тем, кто держит руку на пульсе — Отчёт по спринту.</p><figure><img src="https://media.tproger.ru/uploads/2020/11/fig9.jpg" alt="" /></figure><p>А именно — диаграмма погашения. Диаграмма отражает текущую ситуацию команд с задачами. Любые отклонения — сигнал к действию.</p><p>Наша адаптация гибкой методологии Scrum оказалась настолько гибка, что в каждый описанный выше шаг мы можем вносить корректировки согласно потребностям существующих и стартующих процессов производства. В то же время нам удаётся придерживаться вектора философии Agile и достигать синергии внутри проекта, команды и каждого из нас 24/7.</p><p>Я описал адаптацию Scrum к нашим процессам, но настоятельно рекомендую ознакомиться с первоисточником, возможно, пройти курсы и понять, как лучше интегрировать фреймворк у себя. Быть может, вам зайдёт чистый Scrum, без адаптаций? Пробуйте!</p><p>На этом всё. Ну а мы пошли засучивать рукава, брать маркеры, рисовать, генерировать и воплощать в цифру самые крутые вещи ?</p>]]></content:encoded>
    </item>
    <item>
      <title>Разработка ТЗ: как составить качественное техническое задание — отвечают эксперты</title>
      <link>https://tproger.ru/experts/writing-good-technical-task</link>
      <comments>https://tproger.ru/experts/writing-good-technical-task?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/experts/writing-good-technical-task</guid>
      <description><![CDATA[<p>Эксперты о технических заданиях: какие ошибки допускают при составлении, каких подводных камней ждать и как сделать ТЗ понятным всем сторонам.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/experts/writing-good-technical-task">Разработка ТЗ: как составить качественное техническое задание — отвечают эксперты</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Ответы экспертов]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 27 Aug 2020 14:02:41 GMT</pubDate>
      <content:encoded><![CDATA[<p>В разработке качественного ТЗ заинтересованы и заказчик, и исполнитель. Корректное техническое задание поможет избавить друг друга от лишней головной боли и точно определить, что и как должно быть сделано в проекте. Узнаём у экспертов, какие ошибки допускают при составлении техзадания и как сделать так, чтобы оно было понятно всем сторонам.</p><p>Как составить правильное ТЗ?</p><p>Мое направление в департаменте разработки ПО занимается проектами автоматизации процессов документооборота. Мы разрабатываем и внедряем ECM, СЭД (вендорские решения и систему КСЭД 3.0, собственную разработку, которая включена в реестр российского ПО), электронные архивы, помогаем интегрировать эти системы с ERP, сервисами ЭДО, МЭДО, ССТУ и пр. И входим в пятерку ведущих российских игроков на рынке систем документооборота.</p><p>Каждый месяц мы отсматриваем примерно три-четыре десятка ТЗ от разных организаций и сами их пишем, например, для проектов внутренней автомаизации компании или оказывая консалтинг по составлению технического задания в рамках проектов обследования бизнес-процессов заказчиков. При этом мы готовим проектные решения, схемы бизнес-процессов as is / to be, а также экспертные рекомендации по их оптимизации. И здесь важно иметь ввиду возможность последующей реализации таких рекомендаций. Некоторые заказчики или другие игроки рынка ИТ об этом периодически забывают. И, бывает, открываешь техническое задание и не знаешь, как это все сделать исходя из описанного в ТЗ.</p><p>В некоторых ТЗ — сотни страниц текста, и почти ничего по сути. Например, часто пункты в ТЗ просто противоречат друг другу. Например, в одном из разделов техзадания на разработку системы документооборотом был пункт, что система должна отвечать требованиям законодательства российского делопроизводства. А в другом разделе было написано, что эта же система должна отвечать требованиям текущего процесса делопроизводства в компании. Все бы ничего, только компания эта была международная, и процессы делопроизводства у нас сильно отличаются, а внутренние локальные регламенты с учетом российской специфики отсутствуют. И это только самая мелочь.</p><p>Иногда в руки попадают ТЗ на 2-3 страницы, и это может быть болью для потенциального исполнителя этого проекта, которому, например, нужно быстро принять решение о подаче заявки на тендер. Плюс при обсуждении такого ТЗ с заказчиком появляются крайне неудобные фразы типа: «Коллеги, мы же все описали в ТЗ, что вам непонятно?». При этом заказчик, который будет потом принимать работы по такому ТЗ, тоже будет в недоумении.</p><p>Поэтому этот документ должен быть понятен всем участникам процесса разработки. Правильное ТЗ на разработку автоматизированной системы – это практически-полезный документ, содержание которого понятно и ИТ-специалисту, и функциональному заказчику со стороны бизнеса, и владельцу этого бизнеса/топ-менеджеру, и, конечно, исполнителю проекта.</p><p>Нередко, уже взглянув на первые 3-4 страницы технического задания, можно определить, кто готовил — айтишник, будущий пользователь или бизнес-аналитик. И это плохо, потому что первые — нередко слишком углубляются в технические детали реализации проекта, вторые — концентрируются на деталях работы в системе, которой еще пока нет и не понятно, как она будет выглядеть по результатам опытной эксплуатации, а третьи — на том, как это повлияет на эффективность бизнеса. А еще сразу заметно, когда техническое задание написано наотмашь или когда весь результат проекта не столь важен.</p><p>Качественные технические задания получается только в результате командной работы, которая может быть выполнена как силами внутренних экспертов заказчика, так и вместе в внешними ИТ-командами. Внешние команды наиболее целесообразно подключать при реинжиниринге и оптимизации бизнес-процессов, когда требуются опытные специалисты узкого профиля. Также востребованы такие услуги, когда компания планирует построить звездолет невиданных размеров из невиданных материалов. Например, в нашей компании с этой задачей помогают системные и бизнес-аналитики, архитекторы, отраслевые и другие эксперты, которые имеют за плечами успешный опыт реализации подобных проектов.</p><p>Техническое задание (ТЗ) — это инструкция к применению для исполнителя и контракт для заказчика в одном лице. Перед началом работ обязательно погрузитесь в предметную область заказчика и, если есть возможность, проведите с ним интервью.</p><p>Во время разговора фиксируйте слова, которые чаще всего произносит заказчик, они помогут в дальнейшем при формулировке требований. Не бойтесь задавать вопросы, задача интервью — выяснить истинную проблему бизнеса и обозначить конкретные цели создания продукта.</p><p>Если вы располагаете информацией об исполнителе, то стоит на этапе анализа обсудить с ним возможные варианты реализации, выслушать его экспертное мнение.</p><p>Немаловажно выстроить регулярные коммуникации с заинтересованными лицами. Показывайте свои промежуточные успехи, обсуждайте возникающие сложности и предполагаемые риски. Систематическая обратная связь поможет обеим сторонам убедиться в том, что выбрано правильное направление и на выходе будет получен ожидаемый результат.</p><p>По итогам каждой встречи составляйте протокол принятых решений. Таким образом у вас на руках всегда будут аргументы для ответов на спорные вопросы.</p><p>При составлении ТЗ излагайте свои мысли от общего к частному, от проблемы к решению, от бизнес-требований к системным.</p><p>Не нужно начинать с акцента на технические детали, даже если вы считаете, что крайне важно обратить на них внимание. На старте читатель еще не в курсе проблематики и не сможет по достоинству оценить выбранное решение.</p><p>Каждое требование должно быть сформулировано четко. Избегайте вводных слов, метафор, лирических отступлений, личных размышлений по теме. Приводите наглядные примеры и иллюстрации.</p><p>Не забывайте про оформление: структурированный текст — 50% успеха.</p><p>Техническое задание должно конкретно описывать конечное ожидание заказчика и при этом не быть перегруженным. Из правильно составленного ТЗ исполнителю обычно ясны ценность продукта (для чего это нужно? что это даст заказчику?), а также для какой аудитории планируется реализация. Не менее важно определить сроки и, если это какая-то крупная задача, декомпозировать ее на этапы, тем самым сформировав предварительный план действий, оценить состав работ и риски.</p><p>Внутри команды разработки допускается менее формальное ТЗ — это дает программистам возможность реализовать свой творческий потенциал. Разработчику может быть доступен выбор собственных методов исполнения задачи, поиск необходимой технической информации и альтернативных вариантов.</p><p>Типичные ошибки и подводные камни при составлении ТЗ:</p><ul><li>Не указана ЦА. Когда необходимо рассказать о пользователях продукта или какой-то отдельной его функциональности, заказчик часто углубляется в описание рабочих процессов, но никакой информации о ЦА или о том, какие ее проблемы необходимо решить, так и не обозначает.</li><li>Нет конкретной цели. Из полученного ТЗ не всегда могут быть понятны приоритеты задач и назначение функций.</li><li>Не определены ответственные с каждой из сторон. Очень важно, чтобы заказчик и исполнитель одинаково прозрачно понимали конечное ожидание от продукта или его функциональности. Для этого необходимо иметь возможность обратиться друг к другу с уточняющими вопросами. Чтобы этот процесс был структурирован, с каждой из сторон должны быть определены ответственные сотрудники.</li></ul><p>Думаю, самая большая ошибка — это огромное подробное техническое задание.</p><p>Чем больше проект, тем дольше пишется ТЗ и тем чаще не учитываются взаимосвязи между блоками системы или не прописывается логика реализации.</p><p>Возьмем для примера интернет-магазин. В техзадании может быть прописано, что после оформления заказа пользователю придет подтверждение, но не сказано, по какому каналу — через смс, по почте или в виде пуш-уведомления. Или в ТЗ может быть указано, что на карточках выводится блок похожих товаров, но не описано, по какому признаку определяется, что они похожи.</p><p>И обычная история: к тому моменту, когда ТЗ написали, оно уже устарело. Многое меняется по ходу проекта, и в итоге ТЗ подписывается как есть, а исполнитель и заказчик разбираются с деталями в процессе.</p><p>Если же пытаться расписать все подробно, придется потратить огромное количество времени, но учесть все не получится.<br />Есть часть работ, которые обязательно подробно закрепить в ТЗ. Это все сложные и дорогие моменты, например, протоколы обмена данными, интеграции и тому подобное.</p><p>В целом лучше работать с небольшими итерациями: прописали работы, сделали, протестировали, сдали, выкатили на прод или взяли следующий пул работ. Эта схема лучше тем, что у заказчика быстрее появляется работающая версия продукта, а времени на согласование уходит меньше.</p><p>В ТЗ бизнес-логика пишется простыми словами, чтобы было понятно любому человеку, и согласовывается с менеджером на стороне заказчика. А техническая реализация пишется техническим языком, к ней прикладываются форматы обмена, и все это согласовывается с техническим специалистом на стороне заказчика. Так же как ТЗ пишется несколькими людьми ответственными за свою часть, так оно и согласовывается с несколькими людьми.</p><p>Многие думают, что ТЗ — это пережиток прошлого и атрибут излишней бюрократии в современном IT-мире с agile-подходом ко всему. Но по моему опыту, ТЗ по-прежнему неплохо работает как инструмент для повышения прозрачности на проекте и, кроме того, является неким страховым полисом для участников проекта. А страхует оно от неоправданных ожиданий Заказчика и неправильно трактуемых требований Исполнителем.</p><p>Правильное ТЗ должно быть прежде всего таким:</p><ul><li>Максимально подробным в отношении важных функций проекта.</li><li>Однозначно трактуемым.</li></ul><p>Нужно понимать, что все, что не описано в ТЗ, Исполнитель может сделать по-своему. Поэтому важно все критичные требования к проекту зафиксировать.</p><p>ТЗ можно менять в ходе проекта, это вполне нормальная практика. Прорабатывайте и фиксируйте все изменения независимо от того, влияют они на стоимость проекта или нет.</p><p>Не нужно слепо гнаться за стандартами оформления. Помните, основная задача ТЗ – зафиксировать содержание проекта и убедиться, что все участники проекта одинаково его понимают.</p><p>Вот основные пункты, которые точно должно содержать любое ТЗ:</p><ul><li>Цели и задачи, которые должны быть решены в проекте.</li><li>Сроки.</li><li>Рамки проекта (что должно быть сделано, а что не входит в проект).</li><li>Подробное описание состава проекта и требований к нему.</li><li>Требования к результату.</li><li>Порядок сдачи/приемки проекта.</li></ul><p>Ну и последнее, но немаловажное. Цель должна оправдывать средства, поэтому если проект небольшой (условно, сделать работу по нему будет быстрее, чем написать ТЗ), то скорее всего для такого проекта ТЗ будет избыточным. В таких кейсах можно использовать более лаконичные способы формулировки содержания проекта, например, Бриф или Устав.</p><p>Техническим заданием в целом называют подробное описание задачи по исполнению работы или услуги. Это определенный текстовый документ, имеющий свою структуру, где излагается, что конкретно хочет заказчик от исполнителя. Техзадание может быть приложением к договору подряда, услуг, а может быть самостоятельным документом, которым руководствуется исполнитель, если договорные отношения стороны не оформляют письменно.</p><p>Основная задача ТЗ – донести до разработчика идею заказчика. При этом важно, чтобы:</p><ul><li>при выполнении работ не оставалось сомнений, что же именно хочет получить заказчик;</li><li>возникающие в ходе работы вопросы сводились к минимуму (в идеале, чтобы вопросов и не возникало, а все было понятно из задания);</li><li>исполнитель четко понимал, какой результат работы удовлетворит заказчика.</li></ul><p>Грамотно составленное техническое задание важно и нужно обеим сторонам. Для заказчика – это гарантия правильно переданной идеи, поставленных дедлайнов и того, что все нюансы им учтены. Для исполнителя — четкое понимание цели и результата, а также промежуточных шагов, если они важны в процессе работы. Для обеих сторон правильное ТЗ сводит к минимуму процесс переговоров, общения, выяснения непонятных моментов, что в итоге экономит время (исполнитель не тратит его на уточнения, а сразу приступает к работе), нервы (чем грамотнее составлено задание, тем больше шансов, что ожидания заказчика оправдаются) и способствует комфортному, результативному взаимодействию обеих сторон.</p><p>Потратить время и силы на составление качественного ТЗ стоит. Для начала заказчику важно понять и структурировать для себя, что в результате он хочет получить. Это первый шаг к успеху в передачи информации другому. Для структурирования можно воспользоваться вопросом «какую проблему я хочу решить?». Это поможет сформулировать результат. Затем неплохо представить, если бы вы выполняли эту задачу сами, с какими трудностями столкнулись бы в процессе? Тогда снова задаем вопрос «как эти проблемы можно решить?» и формулируем примерные ответы. Это будет раздел алгоритмов выполнения задачи. Таким образом, оптимально, чтобы техническое задание было разбито на разделы. Например, такие: введение и цели разработки (работы), этапы выполнения, требования, которым должен отвечать результат работы, порядок приемки (тестирования, контроля). Для более сложных технических разработок, конечно, ТЗ по разделам будет объемнее.</p><p>Несколько советов для заказчика:</p><ul><li>Помните, если речь идет о творческой работе, ваши представления о чем-либо всегда отличаются от представлений другого человека. Поэтому формулируйте все фразы четко, без эмоций, с единственно возможной трактовкой.</li><li>Если есть примеры работ, которые вам нравятся, передайте их исполнителю, так будет больше шансов на понимание. Визуально для творческих людей воспринять проще, чем текстом.</li><li>Даже по идеально составленному ТЗ могут возникнуть вопросы. Не игнорируйте исполнителя. Некоторые гениальные и продающие идеи рождаются даже не в процессе механической работы, а в ходе обсуждения. Не лишайте себя шанса получить от исполнителя даже больше, чем вы описали в ТЗ.</li><li>Для некоторых работ (IT-разработки, исследовательские изыскания) необходима документация. Без ее изучения не получится нужный результат. Не забудьте предоставить ее исполнителю или будьте готовы по его просьбе выдать нужные документы. Не всегда можно обойтись одним техническим заданием.</li></ul><p>Умение писать задания – навык, который тренируется, как и многие другие. Однако вложенные в отработку этого умение время и силы сполна окупаются.</p><p>Прежде всего надо определиться с отношением к техническому заданию как таковому. Либо это «священная корова», документ, в рамках которого действует исполнитель и сверяется результат его работы, либо это общее видение проекта, задающее его рамки.</p><p>В первом случае ТЗ — больше юридический документ, который должен быть подписан, прикреплен к договору, и при любых спорах именно он будет иметь приоритетное значение. Причем любые изменения в ТЗ должны быть также зафиксированы документально с подписью и печатью — иначе вы ни о чем не договаривались и не важно, сколько времени потратили на работу.</p><p>Этот формальный подход вынуждает разработчика быть очень внимательным к ТЗ при чтении и оценке проекта, а заказчика — подключать технического специалиста, консультанта или аналитика для написания этого документа. Важно то, что человек от бизнеса, сисадмин, менеджер или интернет-маркетолог не напишет ТЗ на разработку сайта в таком формализованном виде, потому что оно должно содержать технические детали реализации.</p><p>Речь не идет о конкретных архитектурных решениях — как именно мы будем хранить данные. В ТЗ должны быть отражены вопросы такого плана: удаление или архивирование сущностей (пользователей, данных), логирование, статистика, администрирование контента и фильтры, сортировки по этому контенту в административном разделе. Использование коробочных систем, например 1С-Битрикс, много таких вопросов снимает. Но при кастомной разработке ничто не может «подразумеваться по умолчанию». Для разработчика не существует того, что не описано в ТЗ и договоре. Хорошо, если при вышеупомянутой оценке разработчик обратил внимание на отсутствие ряда функциональностей и в смету включил. Но на этапе тендера такие правильные детали могут сделать коммерческое предложение неконкурентным, а представитель заказчика, проводящий тендер, не всегда готов улавливать такие тонкости – у него иные критерии на этапе выбора подрядчика: цена, опыт в схожих проектах и тематике. А внимательность и техническая компетенция при оценке проекта будут далеко не первым критерием при оценке.</p><p>Получается палка о двух концах. Либо мы профессионалы и еще на этапе оценки помогаем заказчику с ТЗ, либо мы выбираем другой подход – с рамками и рисками.</p><p>В этом случае нам ТЗ важно для определения ожиданий со стороны бизнеса. Мы доносим до заказчика, что его ТЗ не техническое, а функциональное. Важно то, что оно определяет и что нужно получить на выходе, а не как это должно быть сделано. Как проект будет сделан, определится и на этапе проектирования и дизайна (которого в этот момент нет), и на этапе архитектурного проектирования и консультирования в начале разработки. А сейчас, на старте проекта, мы оцениваем функциональность в привязке к выбранной технологической платформе и в зависимости от сложности проекта закладываем вот такой люфт бюджета на риски. Этот задел позволит нам гибко реагировать на пожелания заказчика и отвязаться от ТЗ как от той самой «священной коровы».</p><p>Есть и третий вариант: когда ТЗ пишет исполнитель уже после подписания договора, в рамках обозначенной работы за фиксированную сумму, а после написания уже делает смету на проект. С этим ТЗ заказчик может уйти и в другую компанию. Но на практике крайне редко на такое соглашается заказчик – риск смены подрядчика никому не нравится и создается ощущение, что написание ТЗ слишком отложит старт проекта, на который уже есть четкие требования по срокам, обусловленные бизнесом либо финансовой отчетностью за выделенный на проект бюджет.</p><p>Примеры ошибок в ТЗ из нашей практики:</p><ol><li>Не учтено логирование при большом количестве контент-менеджеров: невозможно найти, кто внес то или иное изменение. Здесь же обратный случай: не продуманы группы пользователей и их права, со стороны клиента все ходят в админку под одним логином администратора (и люди, отвечающие за добавление новостей, и seo-специалисты, и бухгалтеры).</li><li>Не продумано удаление и архивирование элементов и разделов: если на элементы завязана какая-то статистика или заказы и это где-то демонстрируется, надо продумать, оставляем ли мы архив и как мы решаем, что показывается. Это важно и для поискового индекса.</li><li>Не описан механизм нетиповой интеграции с 1С (endpoint, принципы, пр.) – согласование и выстраивание этой интеграции потребует плотных коммуникаций разработчиков и 1с-специалистов, времени и плотного контроля заказчика.</li><li>Нет выгрузки товарного каталога и описания хранимых данных в 1С по товарам – все они в итоге отдают одно свойство «характеристики», а в ТЗ предусмотрена фильтрация.</li><li>Не описана созависимость фильтров.</li><li>Упущены сортировки как таковые.</li><li>Административный раздел не описан полностью.</li><li>В административном разделе не описаны фильтры по заказам по дате, номеру, телефону, вообще какие-либо фильтры, которые будут необходимы администратору.</li><li>Управление мета-тегами забывают всегда: про то, откуда у страницы берется title – нигде не зафиксировано. Здесь же можно отметить весь пул SEO чек-листа (ЧПУ, 404, хлебные крошки, robots, коды счетчиков, редиректы и т.п.).</li><li>Не прописаны обязательные по законодательству ссылки в футере (например, СОУТ или «Политика конфиденциальности»).</li><li>Не описаны почтовые уведомления, которые вообще должны быть (о заказе, регистрации, отправленной форме и т.д.).</li><li>Не описано управление промо-баннерами. Описано все, но про сквозные картинки в дизайне и про слайдер – забыли.</li><li>Не продумана и, соответственно, не описана работа с заказами, оплатой и доставкой. Какие будут возможности оплатить заказ? Будет ли работа с юридическими лицами, можно ли им дать возможность сразу выставлять счет или работаем только через менеджера? Какие службы доставки используются, какие данные по заказу и товару нужны для расчета стоимости и сроков доставки? Какие статусы заказов, на каких этапах происходит оповещение пользователя о смене статуса и по каким каналам?</li><li>Клиент при написании ТЗ не продумал структуру контента, не определил разделы и подразделы. Необходимость вложенного меню с подуровнями может выясниться уже после завершения программирования при внесении контента.</li></ol><p>Пишите и читайте ТЗ внимательно. Помните: любые неоплачиваемые доработки проекта вне ТЗ и договора съедают вашу маржинальность.</p><h3>Разбалансированность ТЗ (превалирование «как » над «что»)</h3><p>Часто бывает, что большую часть ТЗ занимают требования, как должен работать требуемый функционал ПО (процессы работы). А требования к самим результатам работы ПО даны в малом и часто недостаточном количестве. Обычно это связанно с тем, что ТЗ написано специалистами, которые уверены, что если очень детально описать процессы, то этот «путь» неминуемо приведет исполнителя к разработке требуемого ПО. Это ошибка. В реальности, исполнитель потратит дополнительное время на уточнение требований к целевому функционалу, а часть требований к процессам/методам/способам будут оспорены и в итоге признаны опциональными и вторичными.</p><p>В первую очередь, в ТЗ должны быть требования к результату работы («что»).</p><h3>В ТЗ нет нефункциональных требований или они неполные</h3><p>Многие ТЗ содержат требования только к функционалу ПО. Его разработчики забывают, что у работы любого ПО есть и нефункциональная сторона — производительность, надежность, безопасность, и т.п. Также в нефункциональных требованиях должен быть прописан пункт по документированию проекта, то есть описан состав пакета сопровождающих документов (руководства для пользователей и администраторов, инструкции и т.п.).</p><p>Полноценные нефункциональные требования должны быть неотъемлемой частью ТЗ.</p><h3>Противоречивые требования</h3><p>Бывает, что заказчик, часто сам того не осознавая, не знает точно, что хочет получить в результате. Из-за этого в ТЗ появляются требования в многословных общих расплывчатых формулировках. Более того, потом такие требования начинают ссылаться друг на друга, тем самым все окончательно запутывая. В итоге заказчик с исполнителем потратят значительное время на уточнение всех неконкретных и неточных формулировок.</p><p>ТЗ должно содержать конкретные и точные требования. Многословности без конкретики следует избегать.</p><p>Перед началом работ по проекту следует выделить отдельное время на проработку ТЗ: количество часов аналитика и руководителя проекта, которое планируется потратить на работу с заказчиком и сбор требований. Лучше выяснить максимальное количество нюансов перед составлением ТЗ и, тем более, стартом проекта, чем что-то менять по ходу его реализации.</p><p>Начать работу над ТЗ можно со знакомства с командой заказчика, чтобы понять, кто за что будет отвечать. Затем рекомендую запланировать с ней интервью, чтобы собрать необходимую информацию: цели проекта, план работ, что хотим получить в итоге, требования к функциональной части будущего решения. Важный момент – фиксация ответов и отправка summary обсуждения собеседнику с вопросом: можете ли вы подтвердить или скорректировать оговоренные в беседе пункты? Только после финального подтверждения от заказчика рекомендую запускать собранную информацию в работу.</p><p>Формат ТЗ тоже лучше обсудить заранее. Очень важно, чтобы содержимое этого документа было понятно. Лучше не усложнять его специально, иначе придется потратить дополнительное время на разбор ТЗ. Например, оформленные по ГОСТу документы сложнее для восприятия, чем спецификации, написанные простым техническим языком.</p><h3>Как разработать хорошее ТЗ?</h3><p>Вот что советуют эксперты:Тщательно обговорите проект с заказчиком, чтобы понять, что именно он хочет, и уточнить какие-то детали.Укажите в ТЗ сроки, цели и задачи, которые должны быть решены в проекте, их приоритет.Избегайте противоречивых требований.Требования должны быть чёткими и трактоваться однозначно.ТЗ должно быть понятно всем участникам процесса, а не только пользователям или разработчикам.Показывайте свои промежуточные успехи и корректируйте ТЗ при необходимости.</p><p>Напоминаем, что вы можете <a href="https://docs.google.com/forms/d/e/1FAIpQLSdSanNvlfPRrSyQWfnoGPflSVwO4KctnjOdEKHzuxjCmFX2dA/viewform">задать свой вопрос</a> экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков <a href="https://tproger.ru/experts/">рубрики</a>. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на <a>experts@tproger.ru</a>, мы расскажем, как это сделать</p>]]></content:encoded>
    </item>
    <item>
      <title>С чего начать внедрять безопасную разработку приложений</title>
      <link>https://tproger.ru/articles/secure-app-development</link>
      <comments>https://tproger.ru/articles/secure-app-development?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/secure-app-development</guid>
      <description><![CDATA[<p>Практики SecSDLC и DevSecOps в разработке: как применять их, чтобы снизить риски информационной безопасности без больших затрат сил и средств.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/secure-app-development">С чего начать внедрять безопасную разработку приложений</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 23 Jun 2020 10:07:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>Развитие технологий разработки в сторону микросервисной инфраструктуры, построение CI/CD процессов, ускорение процесса разработки размывает границы классического подхода информационной безопасности, когда основной акцент делается на защиту периметра и этап проверки кода. На замену ему приходят новые методики и практики такие как: SecSDLC и DevSecOps. Их основная задача создать условия для разработки программного продукта, которые обеспечили бы минимизацию рисков информационной безопасности и прозрачное (прогнозируемое) развитие продукта.</p><p>Вообще сам подход SDLC – не новый, ему уже более 12 лет и он успешно применяется при разработке продуктов информационных гигантов: Microsoft, Cisco и т.д. Каждая компания старается создать свою концепцию и набор практик, которые помогли бы определить общие правила построения процесса разработки приложений и связанных с ним контролей. А также обеспечить определенный уровень доверия к результатам разработки команд, которые использую на практике зарекомендовавшие себя подходы. В свою очередь, международные институты ISACA, OWASP, ISO, ГОСТ и т.д. принимают активное участие в создании и систематизации подходов, описании лучших практик, формировании требований, проверяемых при аудите.</p><p>Из изложенного выше видно, что работа в направлении SDLC ведется и достаточно успешно, есть материалы и стандарты, есть практика внедрения и накоплен опыт использования, однако изучив все это актуальным остается вопрос: «Как адаптировать эти практики к реальности и как не потратить на их внедрение много сил и средств?»</p><p>Для ответа на этот вопрос предлагаю рассмотреть некоторые примеры сложных ситуаций, с которыми сталкиваются команды разработки при внедрении у себя практик SecSDLC:</p><ol><li>Отсутствие у руководства компании риск-ориентированного мышления;</li><li>Неустоявшиеся практики проектного управления (или использование различных подходов проектного управления на разных проектах, что не позволяет обеспечить оптимизацию процессов разработки. Например, большое количество команд разработки, пересечение команд, отсутствие контролей или наоборот для разных команд свое);</li><li>Низкая квалификация команд разработки в вопросах информационной безопасности;</li><li>Отсутствие накопленного систематизированного опыта в вопросах информационной безопасности, что приводит к решению повторяющихся кейсов с нуля;</li><li>Отсутствие моделирования угроз и управления рисками информационной безопасности;</li><li>Безопасность не успевает за развитием и внедрением новых технологий разработки;</li><li>Старые подходы мешают создавать синергетические схемы работы ИТ и ИБ.</li></ol><p>На самом деле таких ситуаций гораздо больше и специфика их зависит от исторического опыта команды разработки, зрелости процессов управления в компании. Но данный перечень должен помочь понять с чем в основном приходится сталкиваться при внедрении практик SecSDLC.</p><p>К решению задачи построения SecSDLC предлагаем подходить комплексно и выделять следующие основные ветки внедрения практики безопасной разработки:</p><ul><li>создание процессов безопасной разработки – это внедрение цикла SDLC с включенными контролями ИБ на каждом этапе разработки (см. рис.1) с учетом специфики работы команд разработки и накопленного ими опыта (что может изменять базовый подход);</li><li>создание безопасной среды разработки – внедрение на уровне инфраструктуры разработки практических мер защиты информации, базирующихся на актуальных угрозах безопасности и оценках возможного ущерба (рисков).</li></ul><h2>Классика или новация</h2><p>Для начала необходимо определить какой подход к управлению разработки ближе в вашей компании классический или agile. В большинстве случаев невозможно дать универсальный ответ — какой из этих подходов оптимален для процесса разработки. Все зависит от того, какие цели ставит руководство перед командой разработки, и что из себя должен представлять сам продукт – его жизненный цикл. Если речь идет о web-разработке, адаптивном функционале, изменяемых требованиях от релиза к релизу, оперативном устранении багов и доработке новых фич – то лучше остановиться на гибкой методике разработки (agile). Если необходимо создать фундаментальный продукт с высокими требованиями к качеству и безопасности кода в ущерб оперативности изменения функциональности – то бесспорно подойдет каскадная модель (waterfall), определяющая четкую последовательность этапов и контролей.</p><figure><img src="https://media.tproger.ru/uploads/2020/06/image1-1.png" alt="" /></figure><p>Рисунок 1 – Создание безопасного цикла разработки приложений</p><p>В большинстве случаев получается так, что необходимо использовать смешанный подход (combi) как в рамках одной команды разработки, так и при выстраивании взаимодействия между командами разработки.</p><p>Если не погружаться в глубокое описание специфики перечисленных выше подходов, то можно представить их плюсы и минусы в виде такой таблицы:</p><figure><img src="https://media.tproger.ru/uploads/2020/06/table.png" alt="" /></figure><p>Тема экспериментов в области управления проектами разработки приложений раскрыта в художественной книге Тома Демарко «Deadline».</p><h2>Начинаем с нуля</h2><p>После того, как есть понимание в выборе подхода к управлению проектами разработки в компании можно приступить к созданию безопасного цикла разработки.</p><figure><img src="https://media.tproger.ru/uploads/2020/06/image2.png" alt="" /></figure><p>Рисунок 2 – Безопасный цикл разработки</p><p>Из практики, в первую очередь необходимо определить правила игры и команду игроков. В компании должен появиться центр компетенции в вопросах информационной безопасности, который будет осуществлять основные функции контроля, управления и развития продукта в части требований безопасности к создаваемому продукту. В качестве такого центра структурно могут выделяться отдельные подразделения: департаменты ИБ, отдел ИБ, группа ИБ, но важно чтобы этот центр компетенций был финансово и политически независим от блока ИТ в компании и имел прямое подчинение руководству компании. Такой подход сильно упрощает жизнь ИБ внутри компании и дает широкий маневр для эффективной деятельности (правда не во всех компания готовы идти на такой шаг, например, стартапы).</p><p>Внутри команды разработки должны внедряться и развиваться тимлиды по информационной безопасности, это разработчики, которым интересно развиваться в области ИБ и которые хотят, чтобы создаваемый ими код был безопасным. Немаловажным является способность таких тимлидов передавать свои знания и проводить обучения.</p><p>После того как определен центр компетенций он должен разработать и утвердить, совместно с другими заинтересованными сторонами, следующие артефакты:</p><ul><li>Модель угроз безопасности. Должна учитывать все актуальные угрозы и риски информационной безопасности, которые по разным причинам могут влиять на безопасность создаваемого продукта. Документ должен учитывать особенности инфраструктуры, процесса разработки (например, привлечение внешних организаций), используемые технологии.</li><li>Оценка и управление рисками. Необходимо понять какие риски являются для компании и ее руководства важными, а какими можно пренебречь или делегировать. Исходя из принятого решения, актуализируется модель угроз и встраиваются контроли ИБ в процесс разработки ПО.</li><li>Формирование базовых требований ИБ к архитектуре создаваемого продукта и к процессу разработки в целом. Требования должны относиться к специфике безопасного использования технологий, patch-management, разделение сред, мониторинг инцидентов ИБ, обезличивание данных в тестовых контурах и контуре разработки и пр.</li><li>Разработка соглашения о кодировании. Документ, определяющий основные правила безопасности и требования к чистоте разрабатываемого программного кода. Обычно в группе разработки есть такие документы их достаточно дополнить в части безопасности.</li></ul><p>Также не стоит упускать из виду обучение команды разработчиков основным вопросам безопасности создания кода. Как показывает практика, многие из них и не задумываются о безопасности, а когда сталкиваются, новые знания их увлекают.</p><p>Последнее несколько лет активно набирает обороты направления DevOps – это специалисты участвующие в процессе разработки в качестве инфраструктурных инженеров, своего рода микс разработчика и системного администратора. А с появлением микросервисных технологий и процессов CI/CD в разработке влияние DevOps на разработку становится колоссальным. Поэтому считаем, что не лишним будет обучить DevOps инженера азам информационной безопасности или взять на работу специалиста, который имеет опыт DevSecOps. Это важный момент, т.к. распространена ситуация, когда DevOps инженер — это выходец из команды разработки или бывший системный администратор, как следствие, субъективно, пренебрегающих вопросами информационной безопасности в угоду оперативности и удобству. Безопасники, ставшие DevOps инженерами в моей практике пока не встречались.</p><p>Следующим шагом, исходя из имеющегося опыта, определенных рисков и моделировании угроз, с учетом зрелости команды разработки в вопросах ИБ, зрелости и возможностях самого центра компетенции необходимо определиться с достаточностью контролей безопасности в процессе разработки продукта (рис.2). В данном случае речь идет не столько про технические средства анализа кода, а про процессный подход: согласование, утверждение, информирование и т.д. Команда безопасности должна иметь возможность информировать, а в ряде случаях, и принимать вето в отношении решений, которые идут в разрез принятой в компании политики безопасности. Встраивание контролей ИБ в процесс разработки – это поиск компромиссов между руководством, ИБ, ИТ и командой разработки, направленных на поиск решений, позволяющих обеспечить безопасность разработки продукта без фатального влияния на сроки и качество.</p><p>Использование технических средств анализа защищенности кода позволяет ускорить процесс выявления критичных уязвимостей и ошибок, при этом работать такие средства могут на различных этапах цикла безопасной разработки. Не буду подробно останавливаться на технических средствах анализа безопасности кода, лишь отмечу основные классы этих решений:</p><ul><li>статические анализаторы кода – применяются в отношении не компилируемого кода на этапе сборки кода или на промежуточных этапах разработки непосредственно из репозитория;</li><li>динамический анализ кода – применяется в отношении уже готового кода, в основном web;</li><li>интегрированные анализаторы кода – позволяющие реализовывать сканирование статического и динамического кода, интегрируются в CI;</li><li>Left Shift анализаторы, позволяющие проверять код непосредственно в процессе его разработки;</li><li>проверка open source компонентов – решения интегрируются с большим количеством внешних репозиториев, могут детектировать открытый код и уязвимости в нем;</li><li>BugBounty – практика привлечения экспертного сообщества к поиску уязвимостей (для очень зрелых компаний);</li><li>ручной анализ кода и pentest.</li></ul><p>Скорее всего создавать безопасную среду разработки придется не с нуля, а с учетом уже имеющегося опыта и как-то выстроенных процессов. В этом случае могу порекомендовать внимательно изучить, что в текущей ситуации может использоваться и дальше, а что лучше изменить. С учетом полученных результатов принимать взвешенное решение.</p><h2>Защищенная среда разработки</h2><p>Необходимо также затронуть тему создания защищенной среды разработки. Как бы хорошо мы не выстраивали процессы внутри команд и компании в целом, нельзя забывать про целостность, конфиденциальность и доступность информации в процессе разработки и компонент инфраструктуры разработки.</p><p>Тезисно отмечу основные решения по информационной безопасности, которые могут использоваться при создании защищенной среды разработки:</p><ol><li>Сегментирование сети и управление сетевыми проходами: сегмент разработки, тестирования, продуктивный сегмент, сегмент DMZ и тд.;</li><li>Управление ролями и правами доступа, особое внимание необходимо уделять вопросу контроля действий привилегированных пользователей (администраторов систем);</li><li>Управление и хранение парольной информации;</li><li>Защищенный удаленный доступ;</li><li>Управление уязвимостями инфраструктуры и патч-менеджмент;</li><li>Мониторинг и аудит ИТ и ИБ;</li><li>Обезличивание чувствительной информации в БД тестовых сегментов сети.</li></ol><p>Полнота мер и решений зависит от модели угроз и результатов оценки рисков, завязанных на производственные процессы в компании.</p><h2>Заключение</h2><p>В заключении хочется дать короткий подытоживающий ответ на поставленный в этой статье вопрос: «С чего начать внедрять безопасную разработку приложений?» — в первую очередь:</p><ul><li>с формирования профессиональной команды, погруженной в вопросы ИБ;</li><li>формирование риск-ориентированной позиции руководства компании в отношении разрабатываемого продукта;</li><li>и, конечно, обучение.</li></ul><p>Все остальное может выстроиться со временем и путем приобретения необходимого опыта. Либо, вам могут помочь те, кто уже прошел этот путь. Удачи!</p>]]></content:encoded>
    </item>
    <item>
      <title>Продуктовая разработка. О чём не рассказывают на собеседованиях</title>
      <link>https://tproger.ru/articles/inhouse-development-secrets</link>
      <comments>https://tproger.ru/articles/inhouse-development-secrets?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/inhouse-development-secrets</guid>
      <description><![CDATA[<p>Автор делится своим опытом работы в продуктовой компании и описывает этапы разработки нового продукта и изменений в существующем.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/inhouse-development-secrets">Продуктовая разработка. О чём не рассказывают на собеседованиях</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, 29 May 2020 10:06:53 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Вместо предисловия</h2><p>Часто слышу от начинающих разработчиков про муки выбора компании-работодателя: продуктовая компания vs аутсорс-компания, занимающаяся заказной разработкой. Конечно, каждый случай уникален; всё зависит от того, чего вы ожидаете и хотите от своей работы, какими качествами и скиллами обладаете.</p><h2>Для начала пару слов о том, что такое продуктовая разработка</h2><p>Продуктовая разработка — разработка продукта, ориентированного на определенную целевую аудиторию. Продуктом может быть всё, что можно продать: сайт, приложение, услуга.</p><p>Этапы разработки нового продукта:</p><p>идея → разработка → альфа/бета  → продукт</p><p>Этапы разработки в существующем продукте (на примере  CS-Cart):</p><p>бизнес-требование → прототип → демки/фидбек → фича</p><h2>Что рассказывают на собеседованиях в продуктовых компаниях</h2><p>Если вы придёте на собеседование в продуктовую компанию или загуглите «преимущества работы в продуктовой компании», то, скорее всего, услышите / прочитаете это:</p><ul><li>большой продукт, X лет на рынке;</li><li>никаких ТЗ от заказчика;</li><li>работаем по спринтам, никаких «срочно» и «сейчас»;</li><li>менеджеров нет, можно спокойно программировать.</li></ul><p>Из всего этого может сложиться ощущение, что продуктовая разработка — это только кодинг и внедрение. Но это не так.</p><p>Я не буду сравнивать особенности работы в разных типах компаний, поделюсь своим опытом работы в продуктовой компании.</p><h3>Продуктовая разработка = развитие клиента (customer development), а не развитие продукта</h3><p>Этот подход к построению бизнеса был разработан американским предпринимателем и учёным Стивом Бланком на основе его опыта с десятками стартапов и компаний. Суть подхода: важнейший актив компании — это клиенты, а не продукт; продукт должен решать проблемы покупателей и заключать в себе ценность.</p><p>В рамках этого подхода есть 4 важных этапа:</p><ul><li>Поиск — Что за задача у клиента?</li><li>Подтверждение — Как мы можем решить эту задачу? Можем ли мы продать решение?</li><li>Создание — Можем ли мы продать решение многократно?</li><li>Рост — Как масштабировать бизнес?</li></ul><p>Таким образом, продуктовая разработка находится где-то на стыке поиска, подтверждения и создания.</p><h3>Продуктовая разработка = работа внутри команды</h3><p>Всех сотрудников объединяет общая цель — совершенствование продукта, не получится работать изолированно. Если мы говорим не про стартап, то как правило, в продуктовых компаниях команда самоорганизована: обладает компетенциями, принимает решения, анализирует задачи и выдвигает гипотезы, разрабатывает и тестирует решения. В команде идёт непрерывный обмен знаниями и компетенциями, развитие и обучение каждого сотрудника.</p><h3>Продуктовая разработка = аналитика и гипотезы</h3><p>Данный пункт вытекает из 2-х предыдущих. Чтобы повысить ценность продукта, команде нужно активизировать весь ресурс сотрудников для выявления проблем, потребностей клиентов и генерации идей.</p><p>Мы много общаемся и в процессе диалогов пытаемся ответить на важные вопросы. Например:</p><ul><li>Какова задача клиента?</li><li>Решена ли эта задача в других продуктах?</li><li>Как она решена у других?</li><li>Как ее можно решить у нас?</li></ul><h3>Продуктовая разработка = прототипы и фидбек</h3><p>Чтобы понять насколько наши идеи жизнеспособны и будут ли они востребованы среди клиентов, нужно делать прототипы. Чтобы проверить гипотезу перед выкаткой фичи в продукт, мы используем MVP (minimum viable product) — «минимальный рабочий продукт». Он даёт пример решения задачи клиента, но не покрывает крайние случаи. Основная задача MVP — получение обратной связи для оценки и принятия решения. Нужно быть готовым к тому, что ряд прототипов по результатам собранного фидбека придётся выкинуть и полностью переработать. Это нормальный процесс.</p><h3>Продуктовая разработка = обязательства</h3><p>При этом обязательства возникают сразу по нескольким направлениям:</p><ul><li>перед клиентами: мы доставим фичи;</li><li>перед разработчиками: мы не сломаем обратную совместимость.</li></ul><h3>Продуктовая разработка = стандарты индустрии</h3><p>Фичи:</p><ul><li>Как эта задача решена в других продуктах?</li><li>Работает ли это решение?</li></ul><p>Разработка:</p><ul><li>Какие стандарты кодирования мы можем использовать, чтобы сделать наш код понятным всему сообществу разработчиков?</li><li>Какие готовые популярные библиотеки мы можем использовать, чтобы не изобретать велосипеды?</li><li>Как рефакторить устаревающий код?</li></ul><p>Тестирование:</p><ul><li>Какие подходы к тестированию позволяют сократить количество ошибок?</li></ul><p>Интерфейсы:</p><ul><li>Какие подходы используются в создании интерфейсов?</li><li>Какие UI kit’ы решают эту задачу?</li></ul><p>Инфраструктура:</p><ul><li>Как сейчас выпускают и разворачивают проекты?</li><li>Как организовать мониторинг доступности и производительности?</li></ul><p>Знать ответы на эти вопросы и следовать индустриальным стандартам — значит сохранять актуальность в комьюнити разработчиков.</p><h3>Продуктовая разработка = ответственность</h3><p>Разработчик возлагает на себя ответственность за успех или провал продукта. Продуктом уже пользуются, поэтому появление багов в нём гораздо критичнее, чем косяки в коде проекта, ещё не выпущенного в продакшн.</p><h2>Рекомендации для начинающих программистов:</h2><ol><li>Книга C. Макконнелл «Совершенный код». Талмуд в тысячу страниц. Несмотря на название, не весь про программирование. Содержит полезные советы по анализу требований и проектированию архитектуры.</li><li>Н. Виноградова «Самые лучшие уроки рисования для смелых и любознательных». Когда я учился в универе, декан советовал нам смотреть мультики и больше рисовать, чтобы стать хорошими программистами. Мы тогда улыбались, но сейчас я разделяю эту мысль. Инструментов для проектирования систем много, но самый доступный — лист бумаги и карандаш.</li><li>Изучить диаграммы последовательностей UML. При проектировании придется описывать процессы в системе. Диаграммы последовательностей UML — самый наглядный способ описания процессов.</li><li>Продукт, который вы хотите пилить или уже пилите, нужно изучать постоянно. Сначала — для понимания, как он работает, чтобы разрабатывать хоть что-то. Потом — для понимания, что он предлагает клиентам. Далее — для понимания, что он может предложить клиентам. Без понимания того, что важно для клиента, а что нет, вы будете тратить время впустую на кажущиеся только вам важными улучшения.</li></ol>]]></content:encoded>
    </item>
    <item>
      <title>Мнение: разработка через тестирование — это тупо. Обсуждаем TDD</title>
      <link>https://tproger.ru/translations/test-driven-development-is-dumb</link>
      <comments>https://tproger.ru/translations/test-driven-development-is-dumb?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/test-driven-development-is-dumb</guid>
      <description><![CDATA[<p>Мнение разработчика: TDD — плохая практика, которая мешает джуниорам и редко используется в работе опытными программистами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/test-driven-development-is-dumb">Мнение: разработка через тестирование — это тупо. Обсуждаем TDD</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 19 Sep 2019 13:05:18 GMT</pubDate>
      <content:encoded><![CDATA[<p>Рассказывает Майк Кронин, разработчик</p><p>Прим. ред. Мнение редакции может не совпадать с мнением автора.</p><p>Всё верно, я считаю, что разработка через тестирование (Test Driven Development — TDD) — это плохо. Более того, TDD пагубно влияет на джуниоров, ставя перед ними нереалистичные цели. Так что позвольте мне в насмешливой форме поразглагольствовать о том, почему написание тестов для несуществующих функций — это дико.</p><h2>Почему я так считаю?</h2><p>В частности потому, что мне нужно было о чём-то написать на этой неделе, но также и потому, что я общался с senior-разработчиками с реальным опытом. Не с теми, которым не нравится TDD, а наоборот. Когда я спрашивал их об использовании TDD, они в красках описали все его преимущества. Но стоило мне продолжить вопросом:«Так, а в реальности вы этим пользуетесь?», — как я получал очень разные ответы.</p><p>«Ну, эээ, в общем, с TDD такое дело...»«На это нет времени»«У нас так не принято»«Мой коллега не хочет»«Я всё время занимаюсь TDD со своей девушкой, ты просто её не знаешь, она ходит в другую школу»</p><p>Для чего-то настолько великолепного удивительно мало людей действительно этим пользовались. Это было особенно удручающе, так как на курсах я не видел, чтобы кто-то из преподавателей использовал TDD, но при этом они все говорили, что ты должен это делать. Учитывая, что все вокруг говорили о TDD, у меня начал появляться комплекс, так как в глубине души я никак не мог понять, чем это лучше, чем делать всё наоборот.</p><h2>В чём вообще преимущества TDD?</h2><p>Сторонники TDD признают, что с ним разработка идёт медленнее. В то же время, они уверяют, что в итоге код будет настолько чистым и продуманным, что вы сэкономите время в долгосрочной перспективе. Однако я начал понимать, что причина, по которой TDD-подход настолько медленный, заключается в том, что он просто… неэффективный. И я получил прекрасную иллюстрацию этого на днях, когда кто-то попытался использовать этот подход.</p><h2>Пробуем TDD</h2><p>Я был взволнован — senior-разработчик собирался показать мне, как это делается. Мы обсудили фичу и функцию, с которой мы начнём, написали тест и посмотрели, как он провалился. Мы начали работать над функцией, но минут через десять прекратили. Мы заметили, что из-за того, как мы писали функцию, тест не сможет её обнаружить. Нам пришлось прекратить работать над фичей и вернуться к работе над тестом снова.</p><p>Работа над функцией продолжилась, однако мы начали чувствовать, что не очень понимаем, как она будет взаимодействовать с остальной системой. Поэтому мы начали играться с кодом, чтобы посмотреть на его реакцию. Мы изменили функцию и залогировали результаты. Выяснилось, что дело можно упростить, если изменить файл конфигурации и сделать небольшие изменения, которые мы сразу же и сделали. Это заняло у нас немного времени, но мы наконец поняли, как фича будет взаимодействовать с системой. И тогда я заметил, что 1) наша функция была полностью написана и что 2) тест провалился. Снова.</p><h2>Почему TDD не сработал?</h2><p>Потому что не так просто разрабатывать ПО, реализующее бизнес-логику. Да, при работе над своими небольшими проектами TDD звучит клёво. Но в реальной жизни фичи устроены немного сложнее, чем «функция X должна принять имя и вывести приветствие с этим именем». Часто требования к продукту меняются посреди работы или вы вдруг осознаёте, что фича не может работать согласно требованиям. Или вы изначально всё не так поняли, и вам нужно начинать работу с нуля.</p><p>В этих ситуациях нет ничего необычного, но необходимость постоянно тратить время на написание теста в самом начале только усугубляет каждую из проблем. Гораздо проще писать код, вручную проводить какие-нибудь тесты и лишь затем писать автоматизированные тесты для имитации этих ситуаций. Имея надлежащие тесты вы можете свободно переходить к следующей фиче или провести рефакторинг, не боясь что-нибудь сломать. Используя тестирование как ограждение, а не карту, вы получаете все преимущества тестов БЕЗ проблем с попытками что-либо предвидеть.</p><h2>У TDD есть хорошие идеи</h2><p>В TDD есть много хорошего. На самом деле, хорошо буквально всё, кроме тестов. Идея TDD заключается в том, что вы можете написать тест потому, что вы сначала сели и обо всём подумали. И это здорово! Многие разработчики (я) окунаются с головой в написание кода, даже не подумав, что именно код должен делать. Просто составив список целей и требований к функции вы получаете все преимущества TDD без необходимости писать сами тесты.</p><h2>В заключение</h2><p>Я поднял эту тему, потому что тесты — это важно. Выпуск приложения в продакшн без тестов можно сравнить с ездой по шоссе без разметки. Я пытаюсь сказать, что TDD похож на попытку начертить разметку до того, как вы проложили шоссе. Возможно, вы с этим не согласны и используете TDD каждый день и вам это нравится. Но если это не так, то всё в порядке! Нам нужно быть честными с самими собой. Если стиль программирования выглядит хорошо в теории, но не на практике, то давайте оставим те части, которые работают, а всё остальное выкинем. Моя запутанная мысль заключается в следующем: есть разные стили написания кода, и мы должны перестать считать какой-либо из них «лучшим».</p><p>Подводя итог, скажу, что у Behavior Driven Development нет никаких недостатков, и если вы его не применяете, то вы дурак.</p><p>Шучу.</p>]]></content:encoded>
    </item>
    <item>
      <title>Мнение: пушить сразу в мастер — хорошо. Обсуждаем Trunk Based Development</title>
      <link>https://tproger.ru/translations/benefits-of-trunk-based-development</link>
      <comments>https://tproger.ru/translations/benefits-of-trunk-based-development?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/benefits-of-trunk-based-development</guid>
      <description><![CDATA[<p>Статья объясняет, почему пушить в мастер может быть хорошо для команды, и рассматривает два противоположных мнения о Trunk Based Development.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/benefits-of-trunk-based-development">Мнение: пушить сразу в мастер — хорошо. Обсуждаем Trunk Based Development</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 27 Aug 2019 14:20:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мэттия Бэттистон опубликовал на площадке Medium статью, где рассказал, почему ему нравится пушить сразу в мастер и какие выгоды для команды он видит в таком подходе. Публикуем его рассказ и два противоположных мнения о Trunk Based Development.</p><p>Прим. ред. Мнение редакции может не совпадать с мнением автора оригинала.</p><p>Разработка с помощью пулл-реквестов и feature-веток (даже краткосрочных) проще для индивидуальной разработки, но в целом не является оптимальной стратегией для команды.</p><p>Обычно командам, использующим краткосрочные ветки, было бы лучше работать прямо в мастере, так как практики, которые им нужно соблюдать, чтобы безопасно следовать trunk based development, приносят множество преимуществ: улучшение командной работы, улучшение качества работы, коллективное владение кодом и не только.</p><h2>«Нет, мы не пушим в мастер, ты совсем что ли?»</h2><p>Позвольте рассказать вам историю.</p><p>Недавно я устроился в консалтинговую компанию. Самая интересная часть работы консультантом заключается в том, что вам приходится работать с множеством клиентов. Так, с начала работы несколько месяцев назад я поработал с тремя разными командами. Они состояли примерно из 6–8 человек, работающих в одном офисе. В основном это были программисты плюс product owner, иногда ещё и scrum master. Почти все в команде сидят рядом друг с другом, не считая странного человека, который изо дня в день работает из дома.</p><p>Когда я присоединяюсь к команде, я всегда задаю много вопросов, в основном чтобы понять, как она работает и как я могу помочь. С каждой из трёх команд неизбежно заходил разговор о контроле версий, который проходил примерно так:</p><p>Я: «Так, что происходит, когда я делаю коммит?».Они: «Тебе нужно создать пулл-реквест, скинуть ссылку в Slack и подождать, пока кто-нибудь его проверит».Я: «А, то есть вы не пушите сразу в мастер?».Они: *уставились на меня широко открытыми глазами, словно увидели пришельца... несколько секунд тишины…*Они *неодобрительно качая головами*: «Нет, мы не пушим в мастер. Код сначала нужно проверить».И тут я прямо вижу, как они думают: «Он серьёзно? И вот этот человек должен нам "помочь"?».</p><p>Само собой, я не против, когда люди ставят под сомнение мои идеи и противятся им, это часть моей работы. Но что меня удивило, так это сколько сопротивления встретила идея, что кто-то мог даже подумать о пуше в мастер. Я много гуглил и поспрашивал людей из других компаний, и оказалось, что feature-ветки — нормальное явление. Тут даже и говорить не о чем, так работает IT-индустрия.</p><p>Будучи выходцем из компании, где пушить в мастер было нормой, я подумал и решил написать эту статью. Я хочу объяснить, почему я уверен, что обычно командам, которые используют краткосрочные feature-ветки, будет выгодней делать всё в мастере, а не в этих ветках.</p><h2>Как команды используют краткосрочные feature-ветки и пулл-реквесты</h2><p>Давайте объясню, как из моих наблюдений выглядит типичный рабочий процесс команды, использующей краткосрочные feature-ветки:</p><ul><li>У команды есть бэклог историй для реализации. Обычно есть «бэклог спринта» с историями, которые нужно реализовать в этом спринте.</li><li>Разработчик свободен, поэтому он смотрит в бэклог и выбирает историю.</li><li>Разработчик создаёт новую ветку из мастера и начинает работать над историей.</li><li>По мере работы он коммитит и пушит код в ветку с любой удобной частотой, будь то минуты, часы или дни.</li><li>При каждом пуше инструмент сборки (Jenkins, CircleCI и т. д.) запускает сборку ветки. Обычно сборка компилируется и упаковывает код, после чего запускаются какие-нибудь тесты. Возможно, происходит развёртывание в dev-среде.</li><li>Когда разработка завершена, на что может уйти от нескольких дней до недели, разработчик создаёт пулл-реквест (PR).</li><li>Кто-нибудь из команды проверяет PR. В некоторых командах любой человек может сделать это, а в других — только техлид или senior-разработчик.</li><li>Проверяющий(-ие) может оставить комментарии к PR, запросив изменения. В этом случае разработчик возвращается к работе для реализации этих изменений, а затем снова отправляет PR. Этот шаг может повторяться несколько раз.</li><li>Наконец, PR принимают. Разработчик сливает ветку в мастер, обычно совмещая все коммиты из ветки в один большой коммит в мастер («squash и merge»).</li><li>Инструмент CI запускает сборку мастера. Начинается процесс внесения этих изменений в продакшн — иногда они автоматически развёртываются на продакшне, а иногда на одном или нескольких этапах нужно вмешательство человека.</li></ul><p>Ваш рабочий процесс может отличаться, но я думаю, что всё это звучит знакомо многим людям. Этот процесс известен под именем <a href="https://guides.github.com/introduction/flow/">GitHub Flow</a>.</p><p>Просто для ясности, я знаю, что команды могут использовать ветки и другими способами, например, <a href="https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow">Gitflow</a> с долгоживущими ветками. Эти стратегии ветвления открывают целый новый мир проблем. Если вы хотите услышать об этих проблемах, я рекомендую <a href="https://www.infoq.com/presentations/death-continuous-integration/">эту презентацию</a> Стива Смита. Однако в этой статье я хочу сосредоточиться на проблемах краткосрочных feature-веток и почему я думаю, что командам будет лучше работать, придерживаясь TBD.</p><h2>Успешная альтернатива: Trunk Based Development, без веток</h2><p>Что я предлагаю в качестве альтернативы, так это работать напрямую в мастере, без использования веток. Само собой, нужно делать это безопасным образом. Чтобы это стало возможным, команда должна использовать следующие основные методы:</p><h3>1. Парное программирование</h3><p>Вам нужно заниматься парным программированием и делать это часто. При работе в паре с другим человеком код пишется и проверяется в реальном времени, что исключает дальнейшую необходимость в PR. Более того, парное программирование приносит невероятное количество пользы команде:</p><ul><li>улучшается сконцентрированность команды;</li><li>люди меньше отвлекаются;</li><li>работа делается быстрее и качественнее;</li><li>в команде стандартизируется стиль кода;</li><li>люди вместе находят лучшие решения проблем;</li><li>происходит обмен знаниями и так далее.</li></ul><p>Порой это можно даже перенести на следующий уровень и устроить совместный сеанс программирования, когда вся команда работает над одной вещью на одном компьютере (например когда нужно принять командное решение вроде выбора архитектуры).</p><h3>2. Имейте сборку, которой доверяете</h3><p>Вам нужна сборка, которой вы доверяете. Она должна запускать достаточно автоматизированных тестов, чтобы вы были уверены, что кодовая база находится в состоянии, удовлетворительном для релиза. Также она должна быть достаточно быстрой, чтобы вы могли запустить её локально перед пушем в мастер, так как вы не хотите запушить что-то сломанное, что помешает остальной части команды.</p><p>Для достижения этих двух вещей команды обычно следуют практикам вроде TDD, BDD и имеют эффективную стратегию тестирования, например следуют пирамиде тестирования, чтобы свести к минимуму количество медленных тестов.</p><p>Если сборка вдруг ломается, её починка немедленно становится приоритетом команды. В маловероятном случае, если не удалось сделать это быстро, нужно сделать откат изменений.</p><h3>3. Используйте «ветвление через абстракцию» или feature-флаги, чтобы спрятать незаконченный код</h3><p>В любой момент времени в мастере будет незаконченный код. Это не приносит никакого вреда, так как такой код ещё не используется в продакшне. Зато от его нахождения в мастере есть польза: вы быстрее замечаете проблемы интеграции, вы можете провести более сложный рефакторинг и вы можете доказать, что код будет работать, написав для него тесты.</p><p>На деле я обнаружил, что в большинстве случаев можно использовать шаблон «<a href="https://trunkbaseddevelopment.com/branch-by-abstraction/">ветвление через абстракцию</a>», чтобы избежать использования кода в продакшне до его готовности. Для более сложных сценариев я использовал <a href="https://martinfowler.com/articles/feature-toggles.html">feature-флаги</a>.</p><p>В моей предыдущей компании работать так было нормой. Я проработал там около 6 лет, но я знаю, что там следовали этим практикам более 10 лет. Так что я точно знаю, что такой способ работы может быть успешным (в конце статьи буду подробности того, как мы работали).</p><h2>Преимущества Trunk Based Development</h2><p>Я считаю, что описанные мной практики приносят команде массу преимуществ и хорошее взаимодействие, к чему команды должны стремиться. Применив их, вы сможете забыть о ветках и начать безопасно пушить сразу в мастер. Вот некоторые из преимуществ, которые я заметил:</p><ul><li>Более быстрая обратная связь: при использовании PR фидбек поступает только после того, как разработчик посчитает, что он закончил. На этом этапе уже, как правило, поздно менять что-то основательно. Когда вы работаете в парах, обмен фидбеком происходит во время написания кода — или даже раньше, когда вы обсуждаете подход к решению задачи — поэтому его гораздо проще менять.</li><li>Более качественная обратная связь: при использовании PR фидбек обычно представляет собой простой текстовый комментарий. За редкими исключениями такой способ не может донести все нюансы, которые часто требуются при обсуждении программы. Автор PR вполне ожидаемо воспринимает всё в штыки, кода речь заходит о том, что он считает «своим кодом», а комментарии, которые легко могут показаться грубыми, зачастую вызывают раздражение или конфликты. С другой стороны, когда вы работаете в парах, вы обсуждаете ваши идеи лицом к лицу, где на порядок проще объяснить, что вы пытаетесь сказать, и провести здоровую дискуссию.</li><li>Коллективное владение кодом: когда код написан одним человеком, обычно он воспринимает его как «мой код». В итоге ты начинаешь слышать вещи вроде «о, это Алекс написал» или «мы не можем работать над этим, пока Сэм не вернётся». Если работать в парах, то гораздо более вероятно, что команда начнёт смотреть на код как на «наш код».</li><li>Командный стиль кода: хорошие команды пишут код, который выглядит так, словно его писал один человек. Это признак того, что каждый участник ценит командную работу больше, чем собственные предпочтения. При работе в парах становится гораздо проще выработать командный стиль и всегда о нём помнить.</li><li>Более частая интеграция («настоящая» Непрерывная Интеграция): очень часто PR создаётся, когда история/фича закончена. При пуше сразу в мастер мы интегрируем код незамедлительно, приближаясь к реальному значению «непрерывности» в Непрерывной Интеграции.</li><li>Мы привыкаем не ломать вещи: при работе непосредственно в мастере мы не хотим запушить что-нибудь сломанное, поэтому у нас появляется привычка запускать локальную сборку перед пушем и реализовывать код через последовательность изменений, которые ничего не ломают. С другой стороны, при работе с ветками проще простого проигнорировать неудавшуюся сборку и исправить всё только в конце.</li><li>Легче справляться с большими рефакторингами: при работе с ветками мы стараемся избегать делать что-то, что может привести к конфликтам слияния, например, переименовывание пакетов, перемещение файлов, архитектурные изменения. При работе в мастере такие вещи делать даже если не легко, то по крайней мере легче, так как мы можем коммитить небольшие изменения, чтобы у всей команды был актуальный код. Для особо сложных изменений мы собираемся возле одной машины всей командой у устраиваем быстрый сеанс совместного программирования, когда мы сидим вместе и обсуждаем, как должно выглядеть решение.</li><li>Лучше видно, кто над чем работает: когда изменения находятся в ветке, их гораздо сложнее заметить, чем когда все пушат их в мастер. Таким образом становится на порядок лучше видно, кто чем занимается и кому нужна помощь.</li><li>Более удобный просмотр изменений: вместо того, чтобы смотреть на красные/зелёные строки на странице, как это обычно происходит при просмотре PR, можно использовать гораздо более удобные инструменты для просмотра изменений перед их коммитом.</li><li>Сохранение оригинальной истории коммитов: при слиянии изменений из ветки в мастер люди зачастую объединяют все коммиты в один, теряя историю того, как и почему автор сделал те или иные изменения. С другой стороны, при работе в мастере мы сохраняем полную историю каждого коммита. Я работал с кодовыми базами, которым было лет по 10 и чьи авторы уже давно были недоступны, и могу сказать, что возможность посмотреть в истории Git конкретно на коммит, где что-то изменилось, была бесценной, так как это позволяло нам посмотреть на описание этого и любого другого изменения, сделанного в то же время.</li></ul><h2>Trunk Based Development — показатель здоровья команды</h2><p>Позвольте быть предельно ясным: TBD сам по себе не является чем-то особенным и не даёт каких-то особых преимуществ. Что их даёт, так это практики, которым нужно следовать для применения TBD. Чтобы команда могла работать прямо в мастере, её члены должны знать, как работать, не ломая код, как писать хорошие тесты, как работать вместе эффективно и так далее.</p><p>Можно сказать, что TBD является показателем здоровья команды. И этому действительно есть подтверждение в книге «<a href="https://www.amazon.co.uk/Accelerate-Software-Performing-Technology-Organizations/dp/1942788339">Accelerate</a>»: после изучения более 10 000 сотрудников и 2 000 организаций исследование показало, что существует тесная взаимосвязь между командой, следующей TBD, и высокими показателями эффективности этой команды. В частности, было обнаружено, что в высокоэффективных командах срок жизни веток составляет менее суток.</p><h2>Оптимизация эффективности команды</h2><p>Когда я спрашиваю у команд, почему они используют ветки или почему они думают, что не стоит пушить сразу в мастер, мне обычно отвечают что-то вроде: «Мы должны поддерживать мастер в хорошем состоянии, готовом к релизу» или «Мы хотим проверять код друг друга, чтобы убедиться, что он хорошего качества и соответствует нашим стандартам». Я полностью согласен с обоими утверждениями, но в этой статье я показал вам, как добиться тех же результатов без использования веток.</p><p>Однако есть и другая причина, о которой часто умалчивают, почему так много команд используют feature-ветки: «Гораздо проще и эффективнее, когда все работают со своими ветками и не наступают друг другу на пятки».</p><p>И хотя это утверждение справедливо, я с ним категорически не согласен. Именно отсюда растут многие проблемы команд. Большинство команд оптимизируют работу отдельного человека, а не всей команды. Они смотрят на продуктивность отдельного человека, а не команды. В терминологии <a href="https://ru.wikipedia.org/wiki/Бережливая_разработка_программного_обеспечения">Lean</a>, это является прекрасным примером оптимизации ресурсоэффективности вместо эффективности рабочего процесса.</p><p>Feature-ветки оптимизируют индивидуальную производительность, но TBD оптимизирует производительность команды. Когда вы проводите оптимизацию команды, начинает казаться, словно каждый её член начинает работать медленнее. Это смена подхода, которая выглядит нелогично. Но именно так группа отдельных разработчиков превращается в команду.</p><h2>Хорошие примеры использования feature-веток</h2><p>После долгих разговоров о том, почему не следует использовать feature-ветки, думаю, стоит прояснить следующее: да, в определённых случаях от них есть польза. Как правило, я бы сказал, что feature-ветки хорошо использовать, когда у кода есть явный владелец, но кто-то другой делает всю работу.</p><p>Прекрасный тому пример — open-source модель: в типичном open-source проекте есть владелец, будь то один человек или команда, а ещё есть множество разработчиков со всего света, вносящих вклад в проект без общения друг с другом. В этом случае имеет смысл просить разработчиков отправлять PR, так как владельцам проекта нужно его проверить. Собственно, это то, для чего в GitHub придумали PR! Также в таком случае владельцам проще отклонить любой PR, с которым они не согласны.</p><p>Аналогичная ситуация иногда возникает в компаниях, использующих внутреннюю open-source модель: код принадлежит одной команде, но поскольку разработчики слишком заняты, чтобы работать над ним, другая команда вносит в него свой вклад, отправляя PR. Это не единственное решение этой проблемы, но иногда это хороший компромисс.</p><h2>«Окей, убедили. Как мне начать использовать этот подход?»</h2><p>Если сейчас вы работаете с feature-ветками и хотите перейти к работе с мастером напрямую, вот несколько предложений:</p><ul><li>Пересмотрите вашу стратегию тестирования и поработайте над стабильной сборкой, которой доверяете. Это может означать, что вам надо начать больше применять TDD, добавлять больше тестов, сохраняя при этом быструю сборку.</li><li>Больше работайте в парах. Если вы обычно этого не делаете, то начните со сложных задач, так как в таком случае будет проще убедить кого-то работать с вами в паре. Затем вы можете продолжать делать это во всё большем количестве случаев, и в итоге образуется группа людей, которым нравится парное программирование. Остальные члены команды со временем подтянутся, особенно если вы введёте правило, что код, написанный в паре с другим человеком, не нуждается в проверке кода.</li></ul><h2>Ресурсы по теме</h2><p>Вот хорошие ресурсы, если вы хотите больше узнать о TBD:</p><ul><li><a href="https://trunkbaseddevelopment.com/">Trunk Based Development</a>;</li><li><a href="http://www.davefarley.net/?p=247">Continuous Integration and Feature Branching — Dave Farley</a>;</li><li><a href="https://www.continuousdeliveryconsulting.com/blog/organisation-pattern-trunk-based-development/">Organisation Pattern: Trunk Based Development — Steve Smith</a>;</li><li><a href="https://www.infoq.com/presentations/death-continuous-integration/">The Death of Continuous Integration — Steve Smith</a>;</li><li><a href="https://www.thoughtworks.com/insights/blog/enabling-trunk-based-development-deployment-pipelines">Enabling Trunk Based Development with Deployment Pipelines — Vishal Naik</a>;</li><li><a href="https://trunkbaseddevelopment.com/committing-straight-to-the-trunk/">Committing straight to the trunk — Paul Hammant</a>;</li><li><a href="https://paulhammant.com/2013/04/05/what-is-trunk-based-development/">What is Trunk-Based Development? — Paul Hammant</a>;</li><li><a href="https://www.amazon.co.uk/Accelerate-Software-Performing-Technology-Organizations/dp/1942788339">Accelerate — Nicole Forsgren PhD, Jez Humble, Gene Kim</a>;</li><li><a href="https://continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction/">Make Large Scale Changes Incrementally with Branch By Abstraction — Jez Humble</a>;</li><li><a href="https://martinfowler.com/bliki/BranchByAbstraction.html">BranchByAbstraction — Martin Fowler</a>;</li><li><a href="https://www.branchbyabstraction.com/">Branch By Abstraction — Paul Hammant</a>.</li></ul><h2>Бонус: реальный пример Trunk Based Development</h2><p>Вот подробная информация о том, как моя предыдущая команда следовала TBD и пушила сразу в мастер. Команда была похожа на описанные выше: 6–10 человек, из них 4–6 разработчиков, 1–2 тестера, 1 бизнес-аналитик и 1 тимлид.</p><ul><li>Разработчики работают в паре весь рабочий день.</li><li>Одна пара разработчиков выбирает новую историю. В рамках процесса подготовки к разработке они пишут скелет одного или нескольких приёмочных тестов и составляют список заданий для истории.</li><li>Когда пара думает, что готова, она собирает команду и показывает всем приёмочные тесты с целью убедиться, что у всех одинаковое понимание того, о чём история и что команда собирается реализовывать. Эта методология называется BDD, где используются примеры для формирования общего представления.</li><li>Каждая пара разработчиков выбирает задание из истории. Как правило, над одной историей у нас работало по 2–3 пары, которые выбирали независимые задачи.</li><li>Каждая пара коммитит и пушит сразу в мастер с частотой, варьирующейся от нескольких минут до нескольких часов. Они отправляют коммит, как только проходит тест, для которого они писали код. Все мы любили небольшие, частые коммиты, с понятными сообщениями, поясняющими почему было сделано то или иное изменение. В идеале сообщение использует бизнес-терминологию и фокусируется на бизнес-задаче, которую мы пытаемся решить этим коммитом. Хороший пример такого сообщения: «Реализовал приёмочный тест, чтобы доказать, что на один порт может быть выделен только один клиент».</li><li>Каждый раз, когда разработчики вытягивают изменения из Git, они делают rebase, чтобы сохранить исходный порядок коммитов.</li><li>Перед коммитом пара всегда запускает локальную сборку, чтобы убедиться, что всё хорошо. Сборка обычно занимает от 30 секунд до 2 минут.</li><li>В качестве стратегии тестирования мы придерживались пирамиды тестирования, всегда предпочитая быстрые тесты медленным. Наши усилия заметно облегчило применение чистой архитектуры, которая позволяла нам держать бизнес-логику изолированной от технических деталей. Это не единственный способ, но нам он отлично подошёл.</li><li>В любой момент времени кодовая база находится в состоянии, готовом к релизу, благодаря шаблону «ветвление через абстракцию». Иными словами, в нашем Java-проекте мы не подключали бины Spring до последнего момента. Весь новый код был доступен для тестов, но в продакшне он появлялся только когда мы были готовы его подключить.</li><li>При пуше кода CI-инструмент запускает сборку и прогоняет все тесты. Мы нигде не делали автоматическое развёртывание, но могли бы, если бы захотели.</li><li>Разработка истории обычно завершалась за несколько дней. После этого вся команда опять собиралась, чтобы посмотреть, что было реализовано.</li><li>Затем последняя версия приложения развёртывается в stage-среде, где наш QA проводит исследовательское тестирование, на которое уходит от нескольких часов до нескольких дней.</li><li>Если не всплывают никакие сюрпризы, то приложение развёртывается в продакшне (обычно на следующий день).</li><li>Тем временем, ближе к концу разработки предыдущей истории, одна пара начинает рассматривать следующую историю, чтобы подготовить её и поддерживать рабочий поток. Мы использовали ограничения на work-in-progress процессы, чтобы держать этот поток под контролем.</li><li>Если в какой-то момент пара чувствовала, что им нужно что-то обсудить с командой (например архитектурное решение), они просто звонили в колокол, чтобы привлечь всеобщее внимание. Все пары собирались вместе для импровизированной командной работы, чтобы вместе выработать решение. Когда все были довольны, пары возвращались к своим задачам.%save-sc3%</li></ul><h2>Мнения</h2><p>Само собой, нельзя ожидать, что все посчитают TBD решением всех проблем. Мнения насчёт этой методологии разделились, и мы решили привести примеры как противников TBD, так и сторонников. Мнение противника:</p><figure><img src="https://media.tproger.ru/uploads/2019/08/opinion1.png" alt="" /></figure><p>И мнение сторонника:</p><figure><img src="https://media.tproger.ru/uploads/2019/08/opinion2.png" alt="" /></figure><p>А что вы думаете о TBD? Делитесь в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>Кейсы с AgileDays: о чём сейчас говорят управленцы и разработчики</title>
      <link>https://tproger.ru/articles/agiledays-2019-cases</link>
      <comments>https://tproger.ru/articles/agiledays-2019-cases?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Саша Ушатинская]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/agiledays-2019-cases</guid>
      <description><![CDATA[<p>Тезисы конференции по гибкому управлению проектами: Agile вырос из манифеста для разработчиков, а на гибкие подходы переходят даже крупные банки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/agiledays-2019-cases">Кейсы с AgileDays: о чём сейчас говорят управленцы и разработчики</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 14 Apr 2019 17:40:19 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сходили в этом году на конференцию <a href="https://agiledays.ru/">AgileDays</a>, там общаются про тенденции в гибком управлении проектами. Вот несколько основных тезисов + ссылки для дальнейшего изучения.</p><h3>Ещё не все понимают, что такое Agile и зачем он нужен</h3><p>Изначально Agile появился как список советов разработчикам, который опубликован в виде <a href="https://agilemanifesto.org/iso/ru/manifesto.html">манифеста</a>. Сейчас это семейство подходов к организации процессов, которые объединены общими ценностями. Важна высокая адаптивность, итеративные улучшения и концентрация на людях и взаимодействии между ними.</p><h3>Большие компании тоже переходят на гибкие подходы при разработке</h3><p>Удивительно, но многие банки уже работают по Agile. Например — Сбербанк, Райффайзенбанк, Банк Хоум Кредит.</p><h3>Kanban работает и в распределённой команде</h3><p>При этом важно проводить регулярные созвоны, а также организовать работу так, чтобы вся команда была на связи хотя бы 4 часа в сутки. Подробно рассказал Андрей Ребров, CTO &amp; co-founder Scentbird. <a href="https://tprg.ru/4y9z">Презентация на Dropbox</a>.</p><h3>В России внедряют LeSS</h3><p>Это специфичный метод, когда на несколько команд — только один владелец продукта. Метод подходит не всем, так как получается сложно балансировать между гибкостью и предсказуемостью. Плюс все команды должны уметь делать всё. Антон Бевзюк и Дмитрий Павлов <a href="https://tprg.ru/dvnY">рассказали</a> про успешное внедрение LeSS в Додо Пицце. Ещё советуем <a href="https://readymag.com/konstantinserov/dodois-road-to-less">вот эту</a> статью Антона.</p><h3>При внедрении новых подходов появляются саботажники. Что с ними делать?</h3><p>Для начала надо понять, осознанно ли человек мешает работе. Если да — поговорить с конфликтологом, перенанять и, если не помогло, удалять из команды. Если нет — ставить ему дедлайны чаще, а задачи конкретнее, также поможет настройка времени на отдых. Подробнее в <a href="https://tprg.ru/uYeo">презентации</a> Agile Coach Анны Обуховой. Полистайте, может оказаться, что вы — неосознанный саботажник.</p><h3>Принципы Agile можно применять не только при разработке ПО</h3><p>Как пример — eduScrum, который внедряется в некоторых школах не только за границей, но и в России. Алексей Дерюшкин из Better Life Company <a href="https://tprg.ru/tsoD">рассказал</a>, кто такой «учитель 21 века» и почему Agile так нужен в школах. Agile можно использовать и в личной жизни, например, чтобы быстрее закончить ремонт на кухне.</p><h3>Не бойтесь скрещивать Scrum и Kanban или брать из каждого подхода понемногу</h3><p>Компании, которые занимаются чем-то связанным с технологиями, но не сконцентрированы на разработке, часто так делают. Например, берут только основные принципы и ежедневные стендапы, и это помогает.</p><p>Все презентации и информацию о докладах можно найти <a href="https://agiledays.ru/program/">на странице программы</a> конференции.</p>]]></content:encoded>
    </item>
    <item>
      <title>Непрерывная интеграция и доставка (СI/CD): идеальная методика разработки или отраслевой хайп?</title>
      <link>https://tproger.ru/blogs/ci-cd</link>
      <comments>https://tproger.ru/blogs/ci-cd?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/blogs/ci-cd</guid>
      <description><![CDATA[<p>Евгений Филатов из Accenture Russia — о месте непрерывной интеграции и доставки в современной разработке и о перспективах методики на ближайшие годы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/blogs/ci-cd">Непрерывная интеграция и доставка (СI/CD): идеальная методика разработки или отраслевой хайп?</a>»</p>]]></description>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Блоги]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 16 Dec 2018 06:21:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>Рассказывает Евгений Филатов, глава направления Infrastructure Services компании Accenture Russia</p><p>Платформы непрерывной разработки и интеграции (CI/CD), по мнению Gartner, сегодня находятся на пике хайпа. Интерес к ним проявляют все отрасли, делающие ставку на модернизацию в цифровой перспективе. Предлагая всё более эффективные программные решения, CI/CD получает и свою долю критики. Евгений Филатов рассказывает о месте CI/CD в современной софтверной разработке и о перспективах её развития в ближайшие несколько лет.</p><h2>Конвейер качественного кода</h2><p>В современной экономике использование цифровых инструментов в бизнес-решениях играет определяющую роль. Вместе с ростом сложности высокотехнологичных платформ важным фактором становится бесперебойность работы критически важных ИТ-систем. Коснулась эта тенденция и разработки программного обеспечения.</p><p>На этапе разработки возможность непрерывного тестирования и доставки кода позволяет увеличить скорость и качество готовых решений. Непрерывное (несколько раз в день) слияние рабочих копий программного кода в общую основную ветвь и тестирование результатов оформилось в «концепцию непрерывной интеграции и доставки софта» (англ. Continuous Integration &amp; Continuous Delivery или сокращённо CI/CD). Впервые её предложил Гради Буч в 1991 году.</p><blockquote>Принцип действия CI/CD похож на конвейер: методика выполняет интеграционную функцию, включая различные типы автоматических тестов на каждом этапе, с последующей доставкой и развёртыванием завершённого кода в готовый продукт для конечного пользователя.</blockquote><p>CI/CD-платформы, на базе которых реализуется концепция, поддерживают выполнение регулярной автоматизированной сборки проекта для оперативного выявления дефектов и решения интеграционных проблем. При стандартном подходе (каскадная разработка ПО или Waterfall-методика), где разработчики независимо трудятся над разными частями системы, стадия интеграции является заключительной, и при выявлении ошибок может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость работы и сделать её более предсказуемой за счёт раннего и непрерывного обнаружения и устранения ошибок и противоречий.</p><p>По своей сути концепция CI/CD реализует идеологию сращивания разработки и эксплуатации ПО (Development &amp; Operations, DevOps) и соответствует основным принципам Agile в части рекомендаций по использованию автоматического тестирования для быстрой отладки рабочей версии софта.</p><blockquote>Если Agile – это устранение зазора во взаимодействии заказчика и разработчика, а DevOps – снятие границ между разработчиком и администратором, то CI/CD – это воплощение стратегий и компонентов DevOps на практике.</blockquote><h2>Overhype 80 lvl</h2><p>Сегодня CI/CD – самая хайповая методика софтверной разработки, которую стремятся применять практически для всех задач. Со временем, скорее всего, найдётся какая-то ниша, где CI/CD признают оптимальным инструментом со статусом «золотого стандарта», но и waterfall-метод при этом полностью тоже не исчезнет.</p><p>Сейчас можно говорить о том, что методика идеально применяется для любых задач, где ведётся новая софтверная разработка, особенно базирующаяся на микросервисной архитектуре.</p><p>Для внесения корректив в монолитные ИТ-системы без дополнительной доработки (например, крупные процессинговые системы для банков с релизами обновлений 3-4 раза в год) CI/CD не подходит, поскольку для таких задач требуется полная перестройка всей архитектуры.</p><p>Другой вопрос, что не везде даже новую архитектуру, создающуюся под новую систему, можно заточить под CI/CD. Пока что очевидный спектр задач для методологии включает в себя всё, что касается веб-разработки, e-commerce, омни-канальных решений, словом, всего комплекса frontend и middleware компонентов. Для существующих core-систем каскадная парадигма пока остаётся оптимальным выбором.</p><h2>Особенности развёртывания CI/CD-платформы</h2><p>Главная сложность перехода на CI/CD заключается в адаптации подхода, где на первом месте находятся процессы, а технологии – только на втором. Необходимо выстраивать новые процессы, определять новые роли людей, находить точки интеграции уже существующих и новых процессов. Смещение акцента с софта и «железа» на людей и организационные аспекты работы для многих становится серьёзным вызовом.</p><p>Второй момент – в CI/CD ответственность разработчика за конечный результат становится гораздо выше. Теперь он не просто пишет абстрактный код по ТЗ, а ещё и мгновенно его тестирует своими же силами. Отсюда вытекают более высокие требования к компетенциям специалистов.</p><blockquote>В CI/CD разработчик не просто пишет абстрактный код по ТЗ, а ещё и мгновенно его тестирует своими же силами.</blockquote><p>При этом не стоит путать классических «инфраструктурщиков», которые конфигурируют оборудование, заливают системное ПО и проводят настройку инфраструктурных компонентов системы, с новым поколением CI/CD-профилированных сотрудников. CI/CD-специалисты должны разбираться не только в инфраструктуре, но и в её надстройках – Kubernetes, TeamCity, Jenkins и другом платформенном ПО. Можно сказать, что в CI/CD-концепции поддержка платформы добавляется к стандартной поддержке ИТ-инфраструктуры компании.</p><p>Ещё одна особенность CI/CD сегодня – огромный выбор open-source программных инструментов, из которых формируются платформы. При этом в состав многих зарекомендовавших себя платформ входят всем известные и доступные инструменты. Специалисты по CI/CD обеспечивают оптимальную подборку имеющихся на рынке инструментов, ориентируясь на задачи проекта, а также на road map их развития в плане поддержки актуальности версий.</p><p>Выбрать именно те инструменты, которые оптимально подойдут для удовлетворения клиентских пожеланий и специфики проекта, – нетривиальная задача.</p><p>В целом реализация перехода на CI/CD – комплексный процесс, традиционно на этом пути компании сталкиваются с рядом сложностей. Например, при переобучении сотрудников пересмотр существующего рабочего процесса неизбежен, а это может вести к недовольству со стороны менеджеров.</p><h2>Бонусы и profit</h2><p>В CI/CD важен быстрый цикл обратной связи, позволяющий почти мгновенно определить, насколько качественными являются изменения в коде и функциональности продукта. При waterfall-подходе можно быстро вносить изменения в код, но без постоянных проверок выявление багов потребует гораздо больше времени и может произойти уже после начала коммерческой эксплуатации, причем таких «отложенных» багов в одном релизе может оказаться несколько.</p><p>Инструменты CI помогают быстро ответить на вопросы о причинах дефектов для каждого коммита, обеспечивая раннее выявление и устранение ошибок. CI/CD-платформа помогает не только оперативно тестировать, но и выводить новую функциональность для конечного пользователя таким образом, чтобы в случае выявления ошибки всегда существовала возможность либо быстро её устранить, либо «откатить» итерацию решения на шаг назад.</p><p>Одни ошибки в ПО могут содержать другие, которые включают в себя третьи и так далее. Чем больше ошибок накапливается, тем сложнее тестировать и находить их, что в результате может привести к неприятным последствиям. Между тем в CI/CD-разработке автоматизированные тесты в случае провала покажут, что именно нужно исправить. Конечно, для внедрения системы потребуется время, но это поможет разрабатывать софт максимально быстро и удобно.</p><p>Автоматизированные процессы помогают значительно снизить трудозатраты разных отделов предприятия. Без автоматизации CI/CD могут всплывать ошибки, вызванные человеческим фактором и необходимостью совершения ручных операций.</p><p>Главные плюсы CI/CD:<br />Скорость вывода новой функциональности от запроса клиента до запуска в эксплуатацию. CI/CD позволяет запускать обновления за считанные дни или недели по сравнению с целым календарным годом при классическом waterfall-подходе. Новые сервисы – новые конкурентные бизнес-преимущества. Появляется возможность не просто воспроизводить функциональность решений конкурентов, но и значительно опережать их в разработке и внедрении новых инструментов.<br />Возможность выбора оптимального варианта за счет оперативного тестирования и большего числа итераций. Отказавшись от работы над бесперспективными решениями, вы сэкономите ресурсы компании.<br />Качество итогового результата выше: автотестирование охватывает все аспекты продукта, что труднореализуемо при стандартном релизном подходе. Все ошибки и тонкие места выявляются и удаляются ещё на ранних этапах разработки.</p><p>Главные минусы CI/CD:Искушение перевести на Agile, DevOps и CI/CD сразу всё, что связано с корпоративными ИТ-системами, включая core-уровень, без приобретения первичного опыта. Это может серьёзно нарушить работу компании, особенно при плохой организации перехода на новую методологию.Поддержка должного уровня координации между CI и CD. Быстрые и качественные результаты от применения методики возможны только после длительной и тщательной настройки взаимодействия между командами DevOps, инженерами, scrum-экспертами и руководством компании. Самое сложное в CI/CD – человеческий фактор, налаживание здоровой командной работы, которую запрограммировать и автоматизировать невозможно.</p><h2>Мода и дефицит</h2><p>Важно понимать, что все методики и технологии являются не взаимоисключающими, а взаимодополняющими. Вопрос только в том, какая методология и технология займёт определённое место в общей ИТ-экосистеме.</p><p>Пока мода на CI/CD накладывается на дефицит специалистов. Внедрять методику с высоким уровнем качества в таких условиях недёшево. При этом нельзя сказать, что это как-то особенно дорого и недоступно по своей сути. В принципе, все необходимые инструменты на рынке присутствуют: софт для CI/CD не стоит космических денег. Обучиться CI/CD-методикам также возможно, в том числе и in-house специалистам компаний.</p><p>Другое дело, что бизнесу чаще всего просто некогда вдаваться во все тонкости, а тем более осваивать их на практике. В этой ситуации чаще всего окном CI/CD в компании становится новая задача, под которую привлекается профильная команда. После запуска проекта обнаруживается, что опыт, инфраструктура и платформа CI/CD применимы на других участках под прочие задачи компании. Так часто происходит в телекоме, ритейле и банках – первый проект становится «песочницей», где компетентные специалисты занимаются прототипированием, а затем итоги их занятий масштабируются на всю организацию.</p><p>Оптимальным критерием оценки правильности выбранной стратегии CI/CD-развития разработки является сравнение эффективности процессов с лидерами рынка, которые способны осуществлять интеграцию нового функционала, его тестирование и ввод в эксплуатацию в рамках 2–3 часов.</p><p>Подводя итог, CI/CD можно назвать лучшей методикой разработки софта под задачи современности, которая в своём развитии проходит через фазу отраслевого хайпа. Это не хорошо и не плохо – это просто стадия, которая обязательно закончится, и тогда мы увидим объективное место CI/CD в системе методологических подходов современной софтверной разработки.</p><p>Смотрите также: Кто такой DevOps и как им стать</p>]]></content:encoded>
    </item>
    <item>
      <title>О методологии Agile простыми словами</title>
      <link>https://tproger.ru/explain/agile-is-simple</link>
      <comments>https://tproger.ru/explain/agile-is-simple?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анастасия Лидер]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/explain/agile-is-simple</guid>
      <description><![CDATA[<p>Просто и понятно объясняем, как функционирует Agile — гибкая методология работы над проектом, а также чем Scrum отличается от Kanban.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/explain/agile-is-simple">О методологии Agile простыми словами</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Коротко о главном]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 07 Sep 2018 16:18:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Давно слышите о том, что Agile — это классная и удобная методология для разработчиков софта, но вас пугают внушительные и подробные мануалы? В этой статье мы коротко и просто объясним, в чём суть этого подхода.</p><p>Agile — итеративный подход при работе над проектом. Знать об Эджайле полезно тем, кто уже работает в IT, и тем, кто только планирует <a href="https://tproger.ru/articles/kak-stat-programmistom/">стать айтишником</a>. Ваша команда выпускает проект маленькими шагами с самого начала, а не показывает уже готовый продукт в самом конце.</p><p><a href="https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%B1%D0%BA%D0%B0%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8">Википедия описывает</a> гибкую методологию разработки так:</p><blockquote>“Серия подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки, динамическое формирование требований и обеспечение их реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля”.</blockquote><h2>Почему именно Agile?</h2><p>TL;DR — чтобы подстраиваться под постоянно меняющиеся требования.</p><p>Agile как подход признаёт, что у людей не очень с планированием и оцениванием. И в этом нет ничего плохого. Не имеет значения, насколько вы опытны, всё равно всегда остаётся что-то, что вы не могли предусмотреть или упустили из внимания.</p><p>Более традиционные подходы вроде Waterfall (каскадная модель) диктуют тотальное планирование, когда вы ничего не можете сделать, если этого нет в плане.</p><p>В любом проекте, будь то программное обеспечение, маркетинговая кампания или рекрутинговая стратегия, появятся дополнительные возможности или поменяются требования. Особенно в случае с крупными проектами. Поэтому новые факторы приходится либо игнорировать (обычно неидеально), либо ужимать план, погружая работу в хаос. Так зачем тогда вообще планировать, правда?</p><p>А вот и нет! Предусмотрите всю неизвестность заранее, встроив её в рабочий процесс. Некоторые лучшие идеи не приходят в голову до тех пор, пока вы не зайдёте достаточно далеко.</p><h2>Что такое Agile?</h2><p>TL;DR — различные практики, которые помогут вам легче приспосабливаться и убеждать свою команду в том, что она всегда работает над чем-то важным.</p><blockquote>Agile — способность меняться легко и быстро.</blockquote><p>Эджайл это про то, как разбить ваш огромный проект на ряд маленьких задач (обычно их называют пользовательскими историями) и определить наиболее приоритетные.</p><p>Определение приоритетов очень важно, по сути это и есть самое главное в гибкой методологии разработки. Вам нужно убедиться, что команда сфокусирована на одном спринте или на наиболее важном на данный момент результате. Это будет гарантией того, что вы достигнете ваших бизнес-целей. Так ваша команда не потеряется в потоке запросов и требований и будет знать, что каждая подзадача, над которой она работает в данный момент, важна для прогресса всего проекта.</p><p>Пользовательские истории поставляются либо непрерывно, либо маленькими циклами, которые называются спринтами.</p><h2>Как работает Agile?</h2><p>TL;DR — Требования &gt; План &gt; Работа &gt; Ревью &gt; Повтор</p><p>Исходя из требований проекта составьте список всего, что должно произойти. Не переживайте, если забудете что-то, вы сможете добавить это позже.</p><p>Оцените каждый этап: по часам или по так называемым story point’ам (относительные оценки, которые выставляются в сравнении и отношении к другим историям). Есть вероятность, что результат будет несколько неточным и даст вам слабое представление о том, сколько времени займёт работа над проектом.</p><p>Установите приоритетность задач, самые важные — в начало очереди. Обычно в этой среде всё постоянно меняется, поэтому проверяйте приоритеты быстро и часто. Kanban очень реагирует на эту частоту. Scrum же основан на фиксированных циклах (спринтах), которые обычно длятся две недели.</p><p>Проанализируйте уже выполненную работу. Если вы не вписываетесь в план, увеличьте рабочую нагрузку над этим спринтом. Если такое случается постоянно, вы слишком амбициозны.</p><h2>Scrum vs Kanban</h2><p>TL;DR — это два основных фреймворка для Agile.</p><h3>Scrum</h3><ul><li>Деление работы на части, которые называются спринтами (обычно в спринте две недели);</li><li>Спринты планируются исходя из требований для этого конкретного момента времени;</li><li>Относительная оценка времени выполнения работ;</li><li>Ревью каждого спринта, чтобы понять, как он прошёл и что можно было бы улучшить;</li><li>Фидбек по поставляемому продукту;</li><li>Ежедневные собрания (очень короткие).</li></ul><h3>Kanban</h3><ul><li>Еженедельные собрания;</li><li>Непрерывная разработка;</li><li>Визуализация процесса на доске;</li><li>Решение сначала самых важных задач;</li><li>Поэтапные улучшения.</li></ul><h2>Заключение</h2><p>Самое важное — удовлетворить конечного потребителя, будь то ваш клиент, владелец продукта, ваш босс или вы сами. Охватить все изменяющиеся требования в процессе работы над проектом позволит ранний и многоэтапный выпуск. Это уменьшает риск, потому что вы застрахованы от того, что выпустите неподходящий продукт или в принципе так ничего и не выпустите.</p>]]></content:encoded>
    </item>
    <item>
      <title>Зачем вам нужен QA и как это позволит сэкономить деньги</title>
      <link>https://tproger.ru/translations/why-you-need-qa-and-how-it-can-save-your-money</link>
      <comments>https://tproger.ru/translations/why-you-need-qa-and-how-it-can-save-your-money?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/why-you-need-qa-and-how-it-can-save-your-money</guid>
      <description><![CDATA[<p>Задача QA-инженера — не только искать баги, но и предотвращать дефекты, обеспечивая качество самого процесса разработки и его результата.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/why-you-need-qa-and-how-it-can-save-your-money">Зачем вам нужен QA и как это позволит сэкономить деньги</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 30 Jul 2018 13:08:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>В этой статье речь пойдёт не о том, как QA-инженеры делают свою работу. Мы поговорим о том, почему обеспечение качества (Quality Assurance, QA) — незаменимая часть процесса разработки.</p><p>Цель профессии QA-инженера — помочь создать качественный продукт. Их работа заключается не просто в поиске багов и не в обыкновенном тестировании. Основная задача QA-инженера — предотвратить дефекты и, следовательно, обеспечить высокое качество процесса разработки и его результатов. Это достаточно общее определение, поэтому в этой статье мы попытаемся рассказать о некоторых деталях, которые помогут осознать ценность QA.</p><p>Дефект или баг — фрагмент кода с ошибкой, из-за которого система не может выполнять свою функцию. Это не всегда означает, что всё не работает. Оно может работать, но не так, как надо.</p><p>Так чем занимаются QA-инженеры? Они:</p><ul><li>Выявляют слабые места и несоответствия в продукте на всех этапах разработки;</li><li>Помогают определить требования к проекту;</li><li>Предоставляют исчерпывающую информацию о качестве продукта;</li><li>Тестируют продукт на протяжении всех фаз жизненного цикла разработки системы (software development lifecycle, SDLC).</li></ul><p>Важно отметить, что QA заинтересованы в том, чтобы сделать любой продукт удобным для пользователя как в плане функциональности, так и в плане дизайна. Для этого они тесно взаимодействуют со всеми членами команды и постоянно обращаются к заданным требованиям.</p><p>Теперь давайте разберём все этапы, на которых нужны QA, их роли на этих этапах и значимость их работы для бизнеса.</p><h2>Когда вам нужен QA?</h2><p>В этой части статьи мы опишем, что и когда делают QA. Этапы, описанные ниже, являются общими (и обобщёнными) частями цикла тестирования программного обеспечения (software testing life cycle, STLC).</p><figure><img src="https://media.tproger.ru/uploads/2018/07/stlc.png" alt="" /></figure><h3>Сбор требований</h3><p>Это, наверное, самый важный этап. На первой встрече клиенты в общих чертах описывают, что они хотят. Они описывают функциональность приложения или сервиса и какими особенностями он должен обладать, но редко упоминают технологии, которые должны использоваться в продукте.</p><p>Во многих компаниях анализ требований к функциональности является обязанностью бизнес-аналитиков. Однако они не могут гарантировать совместимость технических компонентов. Поэтому на этом этапе кроме бизнес-аналитиков заняты и другие специалисты, включая QA. Задачи последних включают:</p><ol><li>Анализ и принятие решения о том, совместимы ли между собой требования, и могут ли они быть реализованы в рамках одной системы.</li><li>Оценка того, какие решения будут работать, а какие — нет.</li><li>Планирование необходимых методов тестирования (подробнее об этом ниже).</li></ol><p>Валидация — процесс оценки проекта до начала разработки с целью выяснить, удовлетворяет ли потенциальный продукт требованиям пользователей и стоит ли вкладывать в эту идею усилия.</p><p>В течение этого этапа QA работают вместе с бизнес-аналитиками с целью выяснить, какой программный продукт может удовлетворить потребности пользователя. По сути, они проверяют, нужен ли продукт пользователям и рынку. Очень важно собрать отзывы пользователей, чтобы узнать, чего не хватает или что может быть улучшено (дизайн, функции) для обеспечения лучшего пользовательского опыта.</p><p>До прохождения валидации продукт может и не дойти до потребителя, даже если он отлично сделан с технической точки зрения. Также на этом этапе проверяется, принесёт ли продукт пользу клиенту. Иначе зачем вообще этим заниматься?</p><h3>Планирование тестирования</h3><p>На этом этапе QA определяют стратегию тестирования. Под определением стратегии имеется в виду оценка времени и усилий для всего проекта. После анализа требований QA создают документ, известный как тест-план. Он включает в себя ожидаемые результаты проекта, его масштаб и цель, а также определяет среду тестирования.</p><p>Без этого этапа процесс тестирования был бы полон неожиданных препятствий и непредвиденных обстоятельств. Чтобы дальнейшие этапы следовали строгой последовательности действий, QA должен составить и задокументировать план действий. В противном случае процесс может получиться неуклюжим.</p><h3>Разработка тестов</h3><p>Когда у нас есть тест-план, мы можем приступить к настройке среды тестирования и созданию тест-кейсов. Тест-кейс — это набор шагов, которые нужно выполнить, чтобы удостовериться, что в продукте нет ошибок и он работает согласно требованиям. После этого можно думать о критерии приемлемости — техническом стандарте, которому должен соответствовать программный продукт, чтобы считаться успешным.</p><h3>Выполнение тестов</h3><p>Этот этап многие считают единственной задачей QA — выполнение всех тест-кейсов по плану. Если какая-то часть системы работает хорошо, мы отмечаем её как прошедшую тестирование. Таким образом мы можем удостовериться, что ничего не пропустим и на выходе получим качественный продукт.</p><p>Если тест-кейс прошёл неудачно, значит в коде есть ошибка, и QA отправляют отчёт разработчикам, чтобы они проверили, что не так.</p><h3>Отчёт о результатах</h3><p>После тестирования продукта наступает время обсуждения, что было хорошо, а что не очень, для улучшения дальнейших циклов тестирования. Чтобы обеспечить быстрое исправление ошибок без каких-либо недопониманий со стороны разработчиков, каждая обнаруженная проблема должна быть хорошо задокументирована. Позже мы посмотрим на наиболее распространённые методы, которые используют QA для тестирования продукта с разных точек зрения.</p><p>Что такое цикл тестирования? Это частота, с которой мы проводим эти пять этапов тестирования.</p><h2>Особенности работы QA</h2><p>Множество компаний-разработчиков программного обеспечения работают спринтами — даётся список задач и две недели на их выполнение. Во время каждого спринта мы реализуем определённую часть требований к продукту и проходим через все пять стадий тестирования. Важно понимать, что тестирование не подразумевает только проверку каждого способа взаимодействия с продуктом. Конечно, и это тоже, но зачастую с системой можно сделать гораздо больше.</p><p>Если QA не участвуют в процессе разработки, то позже может оказаться, что команда разработчиков сделала что-то, что работает и работает хорошо, но не то, что нужно. Также QA помогают сократить время, необходимое для разработки новых тест-кейсов, так как чем раньше мы поймём, что и как мы собираемся тестировать, тем проще будет провести тестирование. Очень важно, чтобы разработчики и QA работали вместе, иначе всё превратится в соревнование «кто найдёт больше багов», что редко приводит к качественным результатам.</p><p>Теперь, когда мы знаем о циклах тестирования, можно вкратце рассказать, почему каждой команде нужен QA:</p><ul><li>Безопасный бизнес. У вас есть платёжная система, и она работает нормально. Пользователь платит за услугу и получает её. Однако вы не проверили все возможные случаи, и деньги идут не вам, а на случайный банковский счёт. Такой недочёт может очень дорого обойтись;</li><li>Экономия денег. На приведённой ниже диаграмме хорошо видна взаимосвязь между этапами жизненного цикла и затратами. Гораздо дороже исправить ошибку, чем предотвратить её. Исправление одной ошибки может повлечь за собой другие, поэтому количество ваших проблем будет быстро увеличиваться;<a href="https://media.tproger.ru/uploads/2018/07/diagram.png"></a></li><li>Защита репутации. Если выпустить багованный продукт и пользователи не будут довольны работой с ним, в дальнейшем их будет сложно убедить, что проблема решена и они могут снова им пользоваться. Первое впечатление сложно изменить, поэтому предоставьте качественный продукт. Если он не был протестирован вдоль и поперёк, то продукт может работать неправильно или не работать вовсе. Тестирование требует теоретических знаний, поэтому будет сложно обеспечить качество, если вы не профессионал;</li><li>Контроль процесса. Если процесс разработки не контролируется и идёт вразрез с установленными требованиями, итоговый продукт может сильно отличаться от запланированного.</li></ul><p>Вы могли заметить, что часто упоминается тестирование. Это потому, что есть такая отдельная дисциплина, как контроль качества (Quality Control, QC). Далее мы поговорим о работе QA, о разнице QA и QC, взаимосвязи SDLC и STLC, а также дадим детальное описание некоторых методов тестирования, используемых QA-инженерами.</p><h2>QA</h2><h3>Обеспечение качества и контроль качества</h3><p>Контроль качества (Quality Control, QC) охватывает всю деятельность, направленную на то, чтобы убедиться, что продукт хорошего качества и отвечает заданным требованиям. QC-инженеры занимаются поиском дефектов в продукте до его выпуска. Можно сказать, что обеспечение качества включает в себя контроль качества.</p><p>Есть случаи, когда продукт не требует QA, а только QC. Например, если команда получает продукт, разрабатываемый другими людьми, с целью проверить, соответствует ли код требованиям.</p><p>В некоторых командах QA и QC совмещаются с другими ролями. Иногда разработчики пытаются проверить свой собственный код. Тем не менее, это сказывается на качестве, так как гораздо сложнее найти ошибки в своём коде, чем в чужом.</p><h3>Цикл разработки программного обеспечения и цикл тестирования</h3><p>Разработка и тестирование должны быть синхронными. Команда, как единое целое, несёт ответственность за продукт. Если разработка и тестирование не выполняются одновременно, то возможны задержки и несогласованности, что ведёт к низкому качеству продукта.</p><p>Надеемся, нам удалось вас убедить в важности одновременного проведения SDLC и STLC. Теперь мы перейдём к некоторым популярным методам составления тестов, которые QA-инженеры используют для обеспечения качества.</p><h2>Методы составления теста</h2><p>Тест-кейс (или просто тест) — пошаговый подход к тестированию функциональности программного продукта. По сути сюда входят тестируемый объект и способ тестирования.</p><p>Метод составления теста — процесс выбора тестов, которые подтвердят, что продукт соответствует спецификациям до его релиза.</p><p>Есть разные методы составления теста, каждый из которых выявляет недостатки определённого типа. Поэтому выбор метода зависит от типа продукта, его готовности и требований.</p><p>На картинке ниже представлены основные методы составления теста:</p><figure><img src="https://media.tproger.ru/uploads/2018/07/tdt.png" alt="" /></figure><p>Давайте рассмотрим подробнее каждый метод и случаи, в которых мы их используем.</p><p>Статический. Этот метод тестирует исходный код, функциональные спецификации и спецификации требований до выполнения кода (до выхода в релиз). Этот метод определяет структурные недостатки. Это не одноразовая работа, поэтому мы стараемся начать её на ранних этапах процесса разработки.</p><p>На основе структуры. Мы используем такой метод, когда у нас есть полный доступ к коду. Проще говоря, он касается внутренней логики и структуры кода. Такие тесты помогают определить неправильную или отсутствующую логику и опечатки в коде.</p><p>На основе спецификации. Также известный как тестирование чёрного ящика, данный метод тестирования анализирует функциональность программного продукта без изучения кода. Исходя из требований, мы выбираем соответствующие методы составления тестов, которые помогают нам получить тест-кейсы.</p><p>На основе опыта. Это больше вспомогательный метод, который позволяет QA тестировать программное обеспечение на основе их предыдущего опыта работы с подобными системами.</p><p>Теперь вы знаете достаточно, чтобы понять, какой теоретической базой должен обладать специалист, проводящий тестирование качества. Количество требуемых навыков делает практически невозможным обеспечение качества продукта человеком, не являющимся QA.</p><h2>В заключение</h2><p>Неважно, каким простым кажется продукт, ведь в основе его качества лежит тонна проделанной работы. Как заметил Дон Норман, «Хороший дизайн гораздо сложнее заметить, чем плохой». В большинстве случаев QA-инженеры дают людям возможность наслаждаться продуктом, проверив, что всё работает хорошо.</p><p>Обеспечение качества включает много всего, от тестирования до анализа результатов. Большинству программных продуктов нужны QA-инженеры, чтобы:</p><ol><li>Контролировать процесс разработки.</li><li>Предотвращать ошибки в системе до того, как их найдут пользователи.</li><li>Обеспечивать качество выпускаемого продукта.</li></ol><p>Не так просто протестировать систему без особых навыков, даже опытному разработчику это вряд ли под силу. По этой причине в лучших командах QA и разработчики работают вместе; они могут объединить свои навыки для создания качественного продукта.</p><figure><img src="https://media.tproger.ru/uploads/2018/07/what-do-qa-do-2.jpg" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>Google и Netflix выпустили автоматизированный инструмент анализа рисков при непрерывной поставке</title>
      <link>https://tproger.ru/news/google-netflix-kayenta-introducing</link>
      <comments>https://tproger.ru/news/google-netflix-kayenta-introducing?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Тимур Кондратьев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-netflix-kayenta-introducing</guid>
      <description><![CDATA[<p>Открытый сервис Kayenta от Google и Netflix анализирует риски развёртывания в Spinnaker и при провале теста запускает откат обновления.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-netflix-kayenta-introducing">Google и Netflix выпустили автоматизированный инструмент анализа рисков при непрерывной поставке</a>»</p>]]></description>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Облачные технологии]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 13 Apr 2018 22:51:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google в сотрудничестве с Netflix показали автоматизированный аналитический сервис Kayenta для снижения рисков при развертывании проектов на больших скоростях. Об этом компания <a href="https://cloudplatform.googleblog.com/2018/04/introducing-Kayenta-an-open-automated-canary-analysis-tool-from-Google-and-Netflix.html?utm_source=%D0%90%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B+%D0%B8+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8&amp;utm_campaign=59446f41d7-EMAIL_CAMPAIGN_2018_04_12&amp;utm_medium=email&amp;utm_term=0_240c13bb08-59446f41d7-180241225">рассказала</a> в своем блоге.</p><h3>Особенности сервиса</h3><p>Инструмент является улучшением системы, которой пользуются внутри Netflix: теперь он имеет полностью открытый код под лицензией <a href="https://ru.wikipedia.org/wiki/Apache_HTTP_Server">Apache 2</a>, может расширяться и выполнять более комплексные задания. Это дает возможность внедрять изменения, снижая подверженность ошибкам, затратность и трудоемкость ручного анализа рисков.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/kayenta-pipeline.png" alt="" /></figure><p>Kayenta <a href="https://www.spinnaker.io/guides/user/canary/">интегрирована</a> в Spinnaker — облачную платформу <a href="http://devopswiki.net/index.php/Непрерывная_поставка">непрерывной поставки</a> с открытым кодом. Платформа работает с большинством популярных облаков, в том числе Amazon Web Services, Google Cloud, Kubernetes.</p><p>Благодаря интеграции становится возможной легкая настройка автоматизации тестов: разработчик сам устанавливает, что Kayenta будет измерять, использовать и выводить. На основе анализа представляется общий счет. Если программа проходит тест, установленный разработчиком, то инициируется процесс подтверждения человеком, иначе — происходит откат обновления.</p><figure><img src="https://media.tproger.ru/uploads/2018/04/kayenta-score.png" alt="" /></figure><p>Грег Буррелл (Greg Burrell), специалист по надежности Netflix, рассказал, что во время тестирования обновлений сравниваются ключевые показатели старой и новой версии. Если в показателях новой версии наблюдаются снижения, то обновление откатывается, и весь поток данных перенаправляется на стабильную версию для минимизации урона от неожиданного поведения обновления.</p><p>Для определения, является ли показатель хорошим, Kayenta поддерживает следующие источники метрик: <a href="https://prometheus.io/">Prometheus</a>, <a href="https://cloud.google.com/stackdriver/">Stackdriver</a>, <a href="https://www.datadoghq.com/">Datadog</a> и <a href="https://github.com/Netflix/atlas">Atlas</a> от Netflix. Также разработчики могут совмещать метрики из разных источников для одного анализа.</p><p>Непрерывная поставка и автоматизация тестирования являются неотъемлемыми составляющими DevOps-методологии. Подробнее с остальными инструментами специалистов DevOps <a href="https://tproger.ru/digest/8-tools-for-devops-success/">можно ознакомиться</a> в нашем материале.</p>]]></content:encoded>
    </item>
    <item>
      <title>Выпущен Android-клиент менеджера проектов Zenkit</title>
      <link>https://tproger.ru/news/zenkit-android-app</link>
      <comments>https://tproger.ru/news/zenkit-android-app?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вячеслав Шарунов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/zenkit-android-app</guid>
      <description><![CDATA[<p>Менеджер проектов Zenkit появился на Android: мобильное приложение сохраняет изменения локально, а после подключения к Сети синхронизирует данные.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/zenkit-android-app">Выпущен Android-клиент менеджера проектов Zenkit</a>»</p>]]></description>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 05 Dec 2017 15:45:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>В начале октября 2017 года Zenkit, менеджер проектов и основной конкурент <a href="https://tproger.ru/news/trello-becomes-desktop/">Trello</a>, появился в мире мобильных приложений — <a href="https://tproger.ru/news/zenkit-ios-app/">был выпущен</a> первый релиз для iOS. <a href="https://blog.zenkit.com/zenkit-for-android-d2408e817e79">Настало время</a> и для ОС Android.</p><p>По словам представителей компании-разработчика, оба приложения стали идеальным представлением тех стремлений и идей, которых Zenkit достигла в веб-версии приложения.</p><figure><img src="https://media.tproger.ru/uploads/2017/12/1_et0hqQ0s3ioh5epAOpoHxw.gif" alt="" /></figure><h3>Основные функции приложения</h3><p>В мобильные приложения попало большинство функций, полюбившихся пользователям в веб-версии Zenkit. Они включают в себя:</p><ul><li>канбан-доски, календари, todo-списки;</li><li>возможность создания команд и коллекций;</li><li>управление совместной работой;</li><li>загрузка файлов и изображений;</li><li>мощные фильтры;</li><li>избранное;</li><li>глобальный поиск.</li></ul><p>Но главной фишкой новых релизов является оффлайн-доступ к приложению. Да, теперь со всеми версиями Zenkit — как мобильными, так и браузерной — можно работать без доступа в Интернет.</p><p>Как это стало возможно? Когда вы работаете с приложением Zenkit, все изменения и внесённые данные сохраняются локально. Когда оно получает доступ в Сеть, вся информация синхронизируется. Более того, использование локальных копий данных, по словам разработчиков, значительно ускоряет загрузку приложения.</p><h3>Progressive Web App</h3><p>В отличие от первой версии iOS-приложения, разработчики решили перейти к созданию Progressive Web App (PWA) вместо нативного приложения Android. PWA — это обыкновенная веб-страница, которая выглядит и ведёт себя так же, как и мобильное приложение. Вы можете добавить значок Zenkit на экран своего телефона, получать и отправлять push-уведомления, получать доступ к аппаратным средствам вашего устройства, например, камере, и работать в автономном режиме.</p><p>Zenkit перешла на использование PWA, так как считает, что за этой технологией будущее разработки приложений. PWA позволяет поддерживать актуальность каждого приложения на всех устройствах в любое время без томительного процесса утверждения приложений. В дополнение к этому, любая будущая функция веб-приложения также будет доступна без промедления и всем мобильным приложениям.</p><p>Ещё одним плюсом использования PWA Zenkit называет небольшой вес приложения. Оно не требует загрузки большого объёма данных и может работать в зонах с плохим интернет-соединением.</p><h3>Установка</h3><p>Приложение доступно для загрузки в <a href="https://itunes.apple.com/de/app/zenkit/id964755085?mt=8">App Store</a> и <a href="https://play.google.com/store/apps/details?id=com.zenkit.zenkit">Play Store</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>«Яндекс» запускает сервис управления проектами Яндекс.Трекер</title>
      <link>https://tproger.ru/news/yandex-tracker</link>
      <comments>https://tproger.ru/news/yandex-tracker?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вячеслав Шарунов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/yandex-tracker</guid>
      <description><![CDATA[<p>Яндекс.Трекер распределяет задачи и сроки, назначает исполнителей и наблюдателей, а также поддерживает спринты, Agile-доски и диаграммы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/yandex-tracker">«Яндекс» запускает сервис управления проектами Яндекс.Трекер</a>»</p>]]></description>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Яндекс]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 16 Nov 2017 15:04:42 GMT</pubDate>
      <content:encoded><![CDATA[<p>Яндекс.Трекер был разработан компанией «Яндекс» для координации внутренней работы своего коллектива. Теперь было принято решение о предоставлении платного доступа к сервису всем желающим.</p><h3>Яндекс.Трекер</h3><p>Этот сервис предоставляет возможность управлять рабочими процессами и проектами организации. Он поможет распределять трудовые ресурсы, ставить определённые задачи и дедлайны их исполнения каждому сотруднику, определять наблюдателей исполнения задачи. По своей сути, этот сервис является общей системой управления и отслеживания проводимой работы сотрудников компании. «Трекер» похож на Jira от Atlassian и VSTS от Microsoft.</p><figure><img src="https://media.tproger.ru/uploads/2017/11/orig.png" alt="" /></figure><p>Каждая задача, создаваемая в Яндекс.Трекере, имеет поля описания, установки сроков исполнения, назначения исполнителя и наблюдателя. Все решения и договорённости по каждой определённой задаче заносятся в её комментарии для последующего отслеживания истории рабочего процесса.</p><figure><img src="https://media.tproger.ru/uploads/2017/11/eb957baa-d981-41dc-a5da-ef7f41a99c92.png" alt="" /></figure><h3>Методология Agile</h3><p>Работа с сервисом может быть организована по методологии Agile: есть возможность изначально оценить трудозатраты для каждой поставленной задачи, планировать спринты, управлять работой на виртуальных досках и следить за выполнением задач на диаграммах.</p><figure><img src="https://media.tproger.ru/uploads/2017/11/357d650b-884a-4268-bb81-919c461f13bd.png" alt="" /></figure><h3>Виджеты визуализации</h3><p>Сервис предоставляет различные инструменты визуализации и дэшборды для отслеживания протекающих рабочих процессов и занятых в них ресурсах. С помощью виджетов визуализации можно оценить производительность рабочей группы, перераспределять задачи, оптимизировать работу команды.</p><figure><img src="https://media.tproger.ru/uploads/2017/11/e1892384-d341-4ac6-8314-b5452f165ca5.png" alt="" /></figure><h3>Шифрование всех данных</h3><p>Немаловажным фактом является то, что все данные Яндекс.Трекера хранятся в зашифрованном виде в облаке. В случае утраты рабочего устройства информация с него не пропадёт, а останется сохранённой на серверах «Яндекса». Все соединения в «Трекере» осуществляются по протоколу HTTPS.</p><h3>Яндекс.Коннект</h3><p>Напомним, что у компании «Яндекс» есть другой сервис под названием <a href="https://tproger.ru/news/yandex-connect-released/">Яндекс.Коннект</a>. Он является экосистемой для совместной работы в компании, в которую помимо «Трекера» входят «Почта», «Диск», «Вики» и «Мессенджер». Например, на «Вики» есть возможность хранить подробные описания проекта и стратегические планы, а детальные планы отслеживать, вставляя на страницы ссылки на задачи «Трекера» — названия и статус задач будут отображаться автоматически.</p><h3>Стоимость</h3><p>«Яндекс» предлагает любой компании в течение 2 месяцев бесплатно попробовать функциональность «Трекера». Стоимость дальнейшего пользования зависит от размера компании. Так, если у вас от одного до десяти сотрудников, то месяц работы с Трекером обойдётся в 93 рубля за человека. Если численность сотрудников составляет от 11 до 100 — 209 рублей, 101–500 человек — 163 рубля и для 501–2000 человек — 81 рубль за человека соответственно.</p><p>Важно добавить, что «Трекер» обрабатывает все данные на серверах, расположенных в России. Это немаловажный факт в свете требований российских чиновников по хранению личных данных граждан РФ на территории страны. Подробную информацию о новом сервисе «Яндекс» и его возможностях можно получить <a href="https://yandex.ru/tracker/features">на его официальной странице</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Выпущен iOS-клиент Zenkit, менеджера проектов и конкурента Trello</title>
      <link>https://tproger.ru/news/zenkit-ios-app</link>
      <comments>https://tproger.ru/news/zenkit-ios-app?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вячеслав Шарунов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/zenkit-ios-app</guid>
      <description><![CDATA[<p>Веб-версия Zenkit предлагает канбан-доску, календарь, приоритизацию задач и интеллект-карты; iOS-клиент уже выпущен, Android-версию обещают осенью.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/zenkit-ios-app">Выпущен iOS-клиент Zenkit, менеджера проектов и конкурента Trello</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 04 Oct 2017 18:06:22 GMT</pubDate>
      <content:encoded><![CDATA[<p>Веб-приложение Zenkit — это сочетание функционала Trello с возможностью кастомизации и совместного использования. Просмотр календаря, возможность приоритезации задач и превращение заметок в интеллект-карты — вот лишь часть дополнений к стандартной канбан-доске, которая является одним из четырёх доступных вариантов просмотра задач в Zenkit.</p><figure><img src="https://media.tproger.ru/uploads/2017/10/ezgif-1-0089096549.gif" alt="" /></figure><p>Стоит добавить, что мобильное приложение имеет неполный функционал веб-версии, по крайней мере, в первом своём релизе. Но всё же есть функции добавления цитат, ссылок и дополнительного материала прямо из меню iOS. Мобильная версия больше похожа на приложение Wunderlist, в то время как веб-приложение является более традиционным конкурентом Trello.</p><h3>Дорожная карта приложения</h3><p>Главный исполнительный директор Zenkit Мартин Велкер отметил:</p><blockquote>Мы прилагаем все усилия, чтобы получить как можно больше функций из более мощного веб-приложения для приложений iOS и Android. Это всегда вопрос ресурсов, доступных на телефоне и на компьютерах. Нам нужно учитывать размер экрана и вычислительную мощность, что делает создание базы данных на вашем телефоне более сложной задачей. Но мы уверены, что со временем мы справимся со всеми этими проблемами.</blockquote><p>В планы компании по добавлению функционала в мобильные приложения также входят:</p><ul><li>создание и редактирование команд и коллекций;</li><li>создание и редактирование меток и полей;</li><li>канбан-доска;</li><li>просмотр календаря;</li><li>добавление к проекту новых участников;</li><li>избранное;</li><li>напоминания;</li><li>более глубокая интеграция с iOS — добавление ярлыков досок без открытия приложения.</li></ul><p>Android-версию обещают выпустить через месяц-полтора.</p>]]></content:encoded>
    </item>
    <item>
      <title>Atlassian выпустила настольную версию менеджера проектов Trello</title>
      <link>https://tproger.ru/news/trello-becomes-desktop</link>
      <comments>https://tproger.ru/news/trello-becomes-desktop?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вячеслав Шарунов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/trello-becomes-desktop</guid>
      <description><![CDATA[<p>Настольный Trello получил весь функционал веб-версии, нативные уведомления, горячие клавиши и управление досками через Touch Bar на MacBook.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/trello-becomes-desktop">Atlassian выпустила настольную версию менеджера проектов Trello</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 15 Sep 2017 16:35:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Об этом команда проекта <a href="https://blog.trello.com/trello-desktop-app-for-mac-and-windows">сообщила</a> 13 сентября в своём блоге. До этого момента Trello был доступен только в виде веб-приложения. Несмотря на удобство пользования, это означало, что приложение не могло быть полностью интегрировано в любой рабочий процесс, не основанный на использовании браузера.</p><p>Соучредитель и генеральный директор Trello Майкл Прайор прокомментировал выход приложения на рынок настольных компьютеров:</p><blockquote>Десктопное приложение было в наших планах с самого начала, но так как мы были всего лишь стартапом, было очень сложно воплотить в жизнь сразу все наши идеи. Именно поэтому мы решили сфокусироваться на рынке мобильных и веб-приложений, чтобы предоставить пользователям самый лучший продукт.</blockquote><p>Напомним, что в январе 2016 года Atlassian <a href="https://tproger.ru/news/atlassian-acquires-trello/">приобрела</a> стартап Trello.</p><blockquote>Теперь, когда мы являемся частью Atlassian, у нас есть больше ресурсов, чтобы быстрее осуществлять такие наши идеи по улучшению Trello, как приложение для Mac и Windows.</blockquote><h3>В чём отличия от браузерной версии?</h3><p>Пользователи новых версий получат весь функционал браузерной версии Trello с такими дополнительными возможностями, как нативные оповещения на рабочем столе компьютера и добавление карточек при помощи <a href="https://blog.trello.com/hs-fs/hubfs/desktop-shortcuts-condensed-pt2@2x.png?t=1505410043235&amp;width=647&amp;name=desktop-shortcuts-condensed-pt2@2x.png">горячих клавиш</a>. Не забыли и о пользователях MacBook — при помощи Touch Bar теперь тоже можно управлять досками и карточками.</p><p>Учитывая, что на прошлой неделе Atlassian <a href="https://tproger.ru/news/atlassian-stride-vs-slack/">запустила</a> Stride — главного конкурента Slack, неудивительно, что Trello получил полную интеграцию с ним. В частности, теперь есть возможность начинать аудио- и видеоконференции Stride прямо из Trello. Это означает, что вы можете связаться со всеми участниками конкретной доски Trello без необходимости переключения между приложениями.</p><p>Кроме того, Trello упрощает встраивание карт в приложения Bitbucket, Dropbox Paper, appear.in, Confluence Cloud и другие.</p><figure><img src="https://media.tproger.ru/uploads/2017/09/bitbucket-embedded-board-t1504907285455width647namebitbucket-embedded-board.gif" alt="" /></figure>]]></content:encoded>
    </item>
    <item>
      <title>Сервис для управления проектами Trello получил интеграцию с Bitbucket, Jira, Confluence и HipChat</title>
      <link>https://tproger.ru/news/trello-integration-bitbucket-jira-more</link>
      <comments>https://tproger.ru/news/trello-integration-bitbucket-jira-more?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Мингалеев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/trello-integration-bitbucket-jira-more</guid>
      <description><![CDATA[<p>Atlassian связала сервис управления проектами Trello с Bitbucket, Confluence и Jira, а карточки Trello теперь можно обсуждать прямо в HipChat.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/trello-integration-bitbucket-jira-more">Сервис для управления проектами Trello получил интеграцию с Bitbucket, Jira, Confluence и HipChat</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 23 Mar 2017 05:22:18 GMT</pubDate>
      <content:encoded><![CDATA[<p>Компания Atlassian <a href="https://www.atlassian.com/blog/announcements/trello-power-ups-for-atlassian-suite">анонсировала</a> появление возможности интеграции <a href="https://tproger.ru/news/atlassian-acquires-trello/">недавно приобретенного</a> сервиса для управления проектами Trello с уже существующими продуктами: Bitbucket, Confluence, HipChat и Jira.</p><p>Trello получит функции сразу трех приложений: Bitbucket, Confluence и Jira. С HipChat всё обстоит немного по-другому: Trello будет интегрирован в HipChat.</p><p>«Теперь можно обсуждать карточки и с легкостью переключаться на Trello, чтобы увидеть всю картину целиком. Или же, наоборот, можно обсуждать какие-то вопросы в Trello, создавая карточки из сообщений HipChat», — рассказала Atlassian в своем блоге. С добавлением Trello в HipChat также стало возможным контролировать, какие уведомления будут показываться в HipChat.</p><p>HipChat, помимо всего, соревнуется с Microsoft Teams и Slack, которые уже интегрированы с Trello. Теперь же владелец приложения решил убедиться, что его собственные проекты не лишены возможности такого взаимодействия.</p><p>Подробную информацию о данном нововведении <a href="http://blog.trello.com/trello-power-ups-for-jira-bitbucket-confluence-hipchat">можно найти</a> в официальном блоге Trello.</p>]]></content:encoded>
    </item>
    <item>
      <title>Atlassian приобрела сервис для управления проектами Trello: чем это обернётся для разработчиков?</title>
      <link>https://tproger.ru/news/atlassian-acquires-trello</link>
      <comments>https://tproger.ru/news/atlassian-acquires-trello?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Бирюков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/atlassian-acquires-trello</guid>
      <description><![CDATA[<p>Сделка закроется до конца марта 2017 года: у Trello около 19 миллионов пользователей и команда почти из 100 человек, а бренд останется прежним.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/atlassian-acquires-trello">Atlassian приобрела сервис для управления проектами Trello: чем это обернётся для разработчиков?</a>»</p>]]></description>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Организация разработки]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 10 Jan 2017 13:51:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Atlassian <a href="https://blogs.atlassian.com/2017/01/atlassian-plus-trello/">сообщила о приобретении</a> сервиса для управления проектами <a href="https://trello.com/">Trello</a> за 425 миллионов долларов. Сделка будет закрыта до конца марта 2017 года. Trello стал восемнадцатым по счёту приобретением компании.</p><figure><img src="https://media.tproger.ru/uploads/2017/01/screen-shot-2015-09-01-at-3-54-12-pm.png" alt="" /></figure><h4>А это что за Trello?</h4><p>Trello <a href="https://techcrunch.com/2011/09/13/joel-spolskys-trello-is-a-simple-workflow-and-list-manager-for-groups/">был запущен</a> в 2011 году и является одним из самых быстрорастущих сервисов для управления проектами. С <a href="http://blogs.wsj.com/venturecapital/2014/07/24/digital-whiteboard-trello-spins-out-of-fog-creek-with-10-3m/">момента отделения</a> от компании Fog Creek Software проект привлёк более десяти миллионов долларов инвестиций. В настоящее время у Trello насчитывается около 19 миллионов пользователей, а команда проекта состоит почти из 100 человек — все они перейдут в Atlassian.</p><h4>И что теперь изменится?</h4><p>Atlassian оставит бренд сервиса без изменений, поэтому у пользователей Trello нет причин для беспокойства. Более того, компания планирует достигнуть планки в 100 миллионов активных пользователей сервиса в месяц. Подробности интеграции Trello с другими сервисами компании, скорее всего, будут сообщены 19 января.</p>]]></content:encoded>
    </item>
    <item>
      <title>Стандартизация требований в Scrum-проектах</title>
      <link>https://tproger.ru/articles/scrum-standardization</link>
      <comments>https://tproger.ru/articles/scrum-standardization?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лапа]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/scrum-standardization</guid>
      <description><![CDATA[<p>Единый формат описания требований на реальном проекте облегчил работу тестировщиков и разработчиков и повысил производительность всей команды.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/scrum-standardization">Стандартизация требований в Scrum-проектах</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Управление проектами]]></category>
      <category><![CDATA[Материалы от друзей Tproger]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 01 Jan 2017 20:52:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>Тема форматов описания требований часто обсуждается бизнес-аналитиками. В этой статье я поделюсь своим опытом в данной области на примере недавнего проекта, где, применяя один стандартизованный формат для описания требований, мы облегчили работу тестировщиков и разработчиков, повысили производительность команды и создали более эффективный поток проектов.</p><p>Проблемы при отсутствии стандартов:</p><ul><li>Новая кровь. Когда владельцы продуктов (product owners) формируют требования, они зачастую не закладывают много времени на их тщательное описание. Это происходит из-за нехватки времени и желания как можно раньше начать разработку. Или владелец продукта не знает, как правильно задокументировать требования. В любом случае опыт членов команды и их знание продукта во многом определяет успех хода разработки. Но что происходит, когда новые специалисты приходят на проект? Правильно оформленная документация поможет новым членам команды быстрее познакомиться с проектом и с разрабатываемым продуктом /сервисом. Это особенно важно для больших, долгосрочных проектов, где отсутствие документации может привести к серьезным осложнениям.</li><li>Оценки. Если требования описаны бессистемно, без взаимно понятных правил и четко установленных стандартов, оценить эти требования становится невозможным. Если что-то было упущено в требованиях, а разработчики уже приступили к работе, образуется проблемное место (англ. bottleneck, узкое место — явление, при котором производительность или пропускная способность системы ограничена одним или несколькими компонентами или ресурсами), время теряется впустую и реализация задерживается.</li><li>Планирование. Без стандартизации описания требований разработка достоверных графиков проектных работ будет весьма затруднена. Когда владельцы продукта не предоставляют подробные требования к будущей разработке, страдает качество разрабатываемого продукта из-за большего количества ошибок. На исправление ошибок уходит гораздо большее количество времени, чем прогнозировалось в спринте.</li></ul><h4>Начало и завершение Scrum-проекта</h4><p>Эффект от стандартизации описаний требований я опишу на примере проекта с одним из наших клиентов — компанией, владеющей социальными сетями и сайтами с миллионной посещаемостью. Представьте себе: быстро развивающийся Agile-проект, амбициозные планы по покорению рынков. Однако вся проектная документация сводилась к описанию текущих процессов разработки и пользовательским инструкциям. Заинтересованные стороны не видели смысла инвестировать в создание сотен страниц документации, что, в целом, было весьма спорно.</p><p>У клиента уже была собственная команда разработчиков, тем не менее, он нуждался в большем количестве ресурсов для реализации амбициозных планов. Поэтому с нашей стороны к проекту присоединились аналитики и разработчики. Имелись планы и на команду тестировщиков.</p><p>Подключение нашей команды к проекту позволило владельцу продукта (product owner) сосредоточиться на стратегических бизнес-вопросах, так как руководитель проекта с нашей стороны взял на себя логистические вопросы, в т.ч. документирование.</p><p>Команда была распределенной. Часть разработчиков находилась в США (в разных штатах). Там же жили и владельцы бизнеса, и владелец продукта. Вторая часть команды – в Минске. Также пользователи системы были разбросаны по разным часовым поясам. Постоянное общение по рабочим вопросам было важной частью процесса разработки, поэтому разница во времени создавала дополнительные сложности в работе.</p><h4>Что было до стандартизации описания требований</h4><p>До прихода к практике стандартизированного описания требований пользовательские истории были описаны без соблюдения какого-либо конкретного формата: требования не были достаточно подробными, сценарии отсутствовали или были слишком короткими, и в целом такой информации было просто недостаточно для разработчиков. Это привело к негативным последствиям, в том числе:</p><ul><li>Сложности оценки. Во время груминг-встреч возникали вопросы, без ответа на которые было невозможно дать оценку временным затратам.</li><li>Вопросы и недоработки. На стадии написания кода и тестирования обнаруживалось, что некоторые важные аспекты для реализации требуемых функций не были учтены (например, отсутствовали целые сценарии, описание исключений и т.д.).</li><li>Время и усилия тратятся впустую. Итого эффективность команды страдала: команда не укладывалась в оценки, так как часть требований не была учтена изначально; задачи не завершались к концу спринта; пользователи были недовольны из-за задержек в выпуске новых фич. Кроме того, большое количество времени тратилось на разъяснение заинтересованным сторонам, почему отсутствовали требования, и почему команде разработчиков было необходимо все переделывать.</li></ul><h4>После стандартизации описания проектных требований</h4><p>Для улучшения ситуации команда разработчиков начала использовать подход стандартного описания требований с классической структурой:</p><blockquote>Как &lt;пользовательская роль/тип&gt;, я хочу &lt;название фичи&gt;, чтобы получить &lt;краткое описание пользы от данной фичи&gt;</blockquote><p>В дополнение были сценарии приемки работ, описываемые по следующему шаблону:</p><p>Сценарий Приемки 1:</p><blockquote>ДАНО (какая-то ситуация/предварительное условие)<br />И (дополнительные обстоятельства/предварительное условие)<br />КОГДА (событие/действие, выполненное пользователем)<br />ЗАТЕМ (ожидаемый результат – что должно произойти для удовлетворения требований пользователя, рассмотренных выше).</blockquote><p>Сценарий Приемки 2: …</p><p>До этого, когда к проекту присоединялись новые разработчики, которые начинали изучать систему, они мало что могли понять из пользовательских историй вроде «При добавлении агента влияния в очередь система должна показывать нотификацию в панели управления».</p><p>Новый формат описания требований значительно облегчил жизнь разработчикам и QA-инженерам — теперь у них появилось полное описание необходимых шагов и ссылки на соответствующие страницы.</p><p>Это снизило количество задаваемых вопросов, появилось единое понимание «что есть качество» и его конкретные метрики.</p><p>Конечно, в случае необходимости мы сопровождали пользовательские истории и сценарии приемки дополнительными артефактами. Например, прикладывали макеты UI для иллюстрирования изменений в пользовательском интерфейсе или целые дизайн-спецификации для случаев, когда изменения затрагивали интерфейс конечного пользователя. Или диаграммы, которые использовались для иллюстрации изменений в процессе работы и демонстрировали команде, что требовалось изменить в системе в целом для реализации ряда пользовательских историй.</p><h4>Пример пользовательской истории со сценарием приемки:</h4><p>Пользовательская история:</p><blockquote>Как менеджер по обслуживанию клиентов, я хочу иметь возможность исключить членов опроса из результатов поиска, так, чтобы легко различать пользователей, уже добавленных в опрос и еще не добавленных, а также быстро добавлять новых пользователей.</blockquote><p>Сценарий приемки*:</p><blockquote>Менеджер по обслуживанию клиентов исключает участников опроса из списка членов<br />ДАНО Менеджер хочет пригласить новых пользователей для участия в опросе<br />И существуют пользователи, ранее приглашенные для участия в опросе<br />И появляются новые пользователи, которые еще не были приглашены для участия в опросе<br />КОГДА выбирается Опрос(ы) в поле «Исключить участников опроса» и применяется фильтр<br />ТОГДА отфильтрованный список пользователей не должен включать в себя пользователей, которые уже являются членами выбранных с помощью фильтров опросов.</blockquote><p>* Указанный выше сценарий стал первичным, он был выбран из трех сценариев для пользовательской истории, которые были созданы для обеспечения полного охвата при выборе функции «фильтр».</p><h4>Преимущества унификации описания требований</h4><ul><li>Прозрачность. По ходу заполнения стандартного шаблона с описанием требований возникают вопросы, которые иначе бы мы с высокой степенью вероятности пропустили бы. Эти вопросы помогают владельцу продукта и команде продумать каждый шаг еще до оценки, что экономит время и уменьшает количество проблем и с оценкой, и на более поздних этапах проекта. Процессы становятся прозрачными, и бюджет расходуется более эффективно.</li><li>Полный охват. При стандартизированном подходе к описанию требований все потоки и альтернативные сценарии, связанные с функционалом будущего продукта, описываются в полной мере и с соответствующими деталями, способствую повышению качества разработки и упрощая тестирование.</li><li>Улучшение производительности. Как следствие первых двух преимуществ, производительность команды увеличивается, так как не приходиться тратить время на исправление багов, связанных с реализацией пользовательских историй. Уходит меньше времени на уточнения, больше задач реализуется в срок, пользовательские истории не блокируются.</li><li>Документирование каждого требования, процесса или функции. При работе над проектом с множеством модулей, которые разрабатываются одновременно, сложной функциональностью, десятками тысяч пользователей, множественными пользовательскими ролями, многоканальной связью, работа бизнес-аналитиков усложняется: невозможно запомнить каждую деталь проекта. А при наличии стандартизированных требований аналитики могут просто искать ответ на каждый поставленный вопрос, который включен в описаниях пользовательской истории в качестве отдельного сценария или шага в сценарии.</li><li>Выше качество конечного продукта. Добавление унифицированных описаний в JIRA для каждой функции помогает новичкам в проекте, создает общее понимание системы, так как функционал описан и понятен всей команде.</li><li>Сокращение времени на коммуникации. Когда дело доходит до аутсорсинг-проектов с разницей во времени, все выигрывают от отсутствия узких мест в работе над проектом.</li><li>Высокое качество кода итогового продукта. Качество становится выше, так как требования ясны всем. Поэтому же упрощается и процесс планирования/оценки.</li><li>Простота внесения изменений в требования и сценарии. Если требования описаны по стандартному шаблону, детально и качественно, управление изменениями требований также изрядно упрощается. В целом, привлечение на проект бизнес-аналитика, который прояснит и хорошо опишет требования, позволит сэкономить время и деньги.</li></ul><h4>Стандартизация и тестирование</h4><p>Стандартизированные требования помогают тестировщикам гораздо быстрее понять систему, ее функции и модули. Тестирование становится гладким, а сценарии приемки охватывают все функциональные потоки. В результате время тратится на тестирование системы, а не на ее предварительное изучение. Тестировщики могут также внести свой вклад в полноту описания требований, указав на какой-либо упущенный аспект функции. Кроме того, подробное описание сокращает количество информации о функции или модуле. Недоразумения и неправильные интерпретации, основанные на личных точках зрения, также исключаются.</p><h4>Управление текущими изменениями в требованиях</h4><p>Хранение пользовательских историй в JIRA является подушкой безопасности для будущих бизнес-аналитиков проекта, команды разработчиков и всех, кто присоединится к проекту в будущем. Если часть процесса в системе должна быть изменена, проще сделать это благодаря обширным возможностям поиска по ключевым словам в JIRA, где легко найти требования к конкретному сценарию и увидеть, какие сценарии нужно рассмотреть. В данном проекте при осуществлении дополнительных тестов наиболее важных функций надежные и заинтересованные пользователи были назначены «наблюдателями» для выполнения соответствующих задач в JIRA.</p><p>Они выполняли тесты приемки на предмет понимания функции и ее готовности к релизу. Также наблюдали за задачей с самого начала, чтобы можно было отследить, что происходит с требованием; проверить его описание, как только оно будет создано, и дать знать бизнес-аналитикам и владельцам продукта о необходимости обновлений.</p><h4>Вывод</h4><p>Есть четкая взаимосвязь между унифицированным форматом описания требований и успехом проекта. Процесс итераций становится проще, возникает меньше ошибок и задержек. Команда выигрывает от упрощенного планирования. Это способствует ускоренной разработке продукта и экономит человеческие ресурсы, что важно для крупных проектов. В случае нашего проекта бизнес-стейкхолдеры потратили бюджет не на исправление багов, а на реализацию запланированных возможностей будущего продукта.</p><p>Реализация стандартных описаний требований делает проект простым и понятным. Как результат, пользователи и стейкхолдеры проекта счастливы.</p><h4>Об авторе</h4><p>Елена Бельковская окончила Белорусский государственный университет по специальности в области экономики. До прихода в Itransition работала экономистом. В настоящий момент Елена — бизнес-аналитик, успешно применяющий семилетний опыт работы в ИТ и знания гибких <a href="https://tproger.ru/tag/software-development/">методологий разработки</a> ПО. В работе Елена эффективно использует аналитические навыки в проектах для предприятий, включая разработку требований и управление ими, разработку функциональной и учебной документации, планирование бизнес-анализа и оценки. Реализует коммуникации по проекту, решает вопросы проектирования систем.</p>]]></content:encoded>
    </item>
    <item>
      <title>Какие методологии разработки применяются в различных IT-компаниях — Tproger собирает рассказы представителей индустрии</title>
      <link>https://tproger.ru/experts/23</link>
      <comments>https://tproger.ru/experts/23?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лапа]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/experts/23</guid>
      <description><![CDATA[<p>Эксперты индустрии отвечают на вопрос подписчика о том, какие методологии применяются у них и как организован путь задачи до выхода продукта.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/experts/23">Какие методологии разработки применяются в различных IT-компаниях — Tproger собирает рассказы представителей индустрии</a>»</p>]]></description>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Методологии разработки]]></category>
      <category><![CDATA[Agile]]></category>
      <category><![CDATA[Ответы экспертов]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 19 Nov 2016 13:24:52 GMT</pubDate>
      <content:encoded><![CDATA[<p>Наш подписчик задал вопрос:</p><blockquote>Какие методологии разработки применяют у вас в компании? Как вы вообще организуете процесс от постановки задачи до выхода продукта на рынок?</blockquote><p>Мы передали его на рассмотрение нашим экспертам, а теперь делимся с вами полученными ответами.</p><h4>Какие методологии разработки применяются в различных IT-компаниях?</h4><p>Наша компания производит программные продукты для операторов сотовой связи. Спектр решений довольно широк: от систем самообслуживания абонентов (хорошо известный всем личный кабинет) до сложных распределенных и высоконагруженных систем, взаимодействующих с сетевым оборудованием оператора. При этом рынок, на котором работают операторы связи — очень конкурентная среда. Там быстро появляются новые технологии, сервисы и бизнес-инициативы. Чтобы донести это до своих клиентов, оператору необходимо изменить многие собственные ИТ-системы. Следовательно, компания-производитель этих систем должна уметь быстро реагировать на требования рынка и выпускать качественный софт в условиях ограниченного времени.</p><p>Существующий в нашей компании процесс разработки помогает решить эту непростую задачу. Во-первых, над созданием продуктов работают кросс-функциональные команды. В них присутствуют все стандартные роли: аналитик, разработчик, тестировщик. Во-вторых, важным фактором для нас является инженерная культура. У каждого сотрудника есть базовый уровень знаний: ревью кода, билд-сервер с автоматическим запуском тестов и статическим анализатором кода, автоматическое развертывание продукта, общая модель ветвления в репозиториях исходного кода. При этом многие команды пошли дальше: они расширяют свои знания и применяют практики экстремального программирования, контейнерную виртуализацию для разработки и многое другое.</p><p>Чтобы быть в тренде, программисты должны непрерывно развиваться как профессионалы. В этом компания им активно помогает. Мы отправляем ребят на обучение, конференции, а также организуем различные мероприятия на своей площадке. В-третьих, в процессе разработки мы используем итеративно-инкрементальный подход. Многие автономные продукты выпускаются каждые две недели через прямую поставку софта в тестовую зону заказчика, а иногда сразу в пром. Продукты с высокой степенью комплексности выпускаются синхронно каждые 3 месяца, при этом каждые 2 недели команды демонстрируют потенциально готовый к отгрузке продукт и собирают обратную связь от заказчика, пользователей системы и других заинтересованных лиц.</p><p>Конечно, у нас есть много открытых вопросов, ведь общее число команд — более 70! Но благодаря целенаправленному и регулярному улучшению собственных процессов и инструментов на всех уровнях мы знаем, что сможем справиться с любой задачей. И в этом заключается, четвертый, пожалуй, самый важный секрет нашего успеха.</p><p>Как компания мы очень адаптивны, поэтому на каждом проекте используем оптимальные методологии. Для «коробочных» внедрений, где есть отработанные схемы, это обычно референтные (эталонные) подходы, учитывающие специфику конкретного решения, например, Oracle AIM.</p><p>Для разработки систем с нуля мы используем один из подходов гибкой (Agile) или водопадной (waterfall) разработки, либо их комбинации. Сам Agile не является чем-то революционным: он содержит ряд элементов, известных еще со времен артелей начала прошлого столетия и бригадного подряда с 80-х годов прошлого века. Так что многое новое — это хорошо забытое и перевнедренное старое.</p><p>Процесс вывода продукта на рынок и его непрерывного совершенствования традиционно основан на цикле непрерывного совершенствования качества Деминга (циклическое повторение этапов Plan-Do-Check-Act), ускоренного Scrum, дизайн-мышления и других современных техниках.</p><p>В разных проектах у нас используются различные подходы – где-то Agile с одно-двухнедельными спринтами, а где-то — почти что Waterfall с майлстоунами по несколько месяцев. За многие годы работы у нас сложилось ощущение, что чем больше проект и команда, работающая над ним, тем сложнее и менее эффективно стараться запихнуть разработку в agile-процесс. Да и не всегда это нужно.</p><p>Намного более важно, чтобы даже в маленькой команде были не только разработчики, но и тестировщики и обязательно продакт- и програм-менеджеры — люди, которые работают над тем, какая функциональность важна и как ее сделать красивой и удобной для пользователя. Поэтому у нас сначала идея продукта разбивается на отдельные части, которые прописываются достаточно подробно с точки зрения дизайна и функциональности. Дальше все они обсуждаются в деталях с разработчиками и тестировщиками, а только потом мы приступаем непосредственно к разработке, тестированию и дальнейшему выпуску.</p><p>Мы работаем с гибкими методологиями разработки (Agile). После постановки задачи проводим аналитику, создаем дизайн мобильного приложения. Далее разработка — ведется по двух-трехнедельным спринтам. В рамках спринта решаются задачи по разработке, дизайну, проводится тестирование. И, наконец, релиз! После релиза мы оказываем услуги по поддержке приложения и по продвижению, а также начинаем работу над новым функционалом и новыми версиями.</p><p>В компании NVIDIA представлен широкий спектр разнообразных активностей, касающихся разработки и исследований. Методология может варьироваться в зависимости от направления деятельности, команды или проекта. Однако большинство проектов по софтверной разработке подразумевает использование Agile и Continuous Integration.</p><p>Как компания, оказывающая услуги по заказной разработке программного обеспечения, мы стараемся быть гибкими при выборе подхода к разработке: адаптируемся к специфике каждого проекта, учитываем требования клиентов. Для всех наших проектов можно выделить следующие ключевые аспекты, которые мы считаем неотъемлемой частью процесса разработки:</p><ol><li>Выбор правильной методологии ведения проекта. Это могут быть различные варианты гибкой разработки, водопадная модель или же их комбинации. А учитывая, что заказчик хочет иметь возможность внесения изменений на всех этапах разработки и как можно раньше получать работоспособные версии систем, в том числе и масштаба Enterprise, все большую популярность приобретает подход Scaled Agile.</li></ol><ol><li>Привлечение бизнес-аналитиков на всех этапах разработки для выяснения, спецификации, уточнения и, что важно, верификации требований. Это позволяет минимизировать риск искажения или неверной интерпретации требований на всем протяжении процесса разработки.</li></ol><ol><li>Использование «унифицированной среды разработки» — совокупности специально подобранных и проинтегрированных между собой инструментов, необходимых для создания ПО (управление задачами, контроль версий, сервер непрерывной сборки, статические анализаторы кода для различных языков и т.д.), а также корпоративных практик и стандартов, которыми мы руководствуемся при разработке.</li></ol><ol><li>Разделение тестирования и разработки — на всех наших проектах тестирование производится силами независимой команды, что позволяет предоставить нашим клиентам максимально объективную оценку качества системы.</li></ol><p>Также мы активно используем автоматизацию тестирования и практики DevOps.</p><p>У нас в SAP на этапе постановки задачи все более широко используется методология Design thinking. На этапе создания продукта часто можно видеть варианты Agile, причем иногда совмещенные с Waterfall-подходом.</p><p>На этот вопрос сложно ответить коротко — но чтобы дать хоть какое-то представление, давайте рассмотрим роли, которые существуют в нашей компании Virtuozzo и вовлечены в процесс разработки.</p><p>Все начинается с менеджера продукта и менеджера программ — эти две роли, часто объединённые в одном человеке, отвечают за вопросы «какие проблемы решает наш продукт, для каких пользователей и как он это делает». Менеджер программ, по сути, отвечает за ежедневную коммуникацию и представление точки зрения пользователя в команде разработчиков, а также за создание спецификаций на продукт и его компонентов. Рабочие инструменты менеджера программ — система документооборота (например, confluence), системы change management, bug tracking вроде Jira, средства телекоммуникаций (как webex), средства прототипирования и создания «скетчей» интерфейсов, средства для сбора информации о существующих версиях продукта и о том, как его используют живые пользователи. Менеджер программ также выступает заказчиком для следующей роли — дизайнера.</p><p>Дизайнер отвечает за проработку деталей того, как выглядят пользовательские интерфейсы и как они «общаются» с пользователем. От качества работы дизайнера часто зависит первое впечатление о продукте, и его роль особенно важна для продуктов с большим количеством графических и веб интерфейсов.</p><p>Архитектор отвечает за дизайн внутренних компонентов продукта, то, как они общаются друг с другом, по каким протоколам, часто за выбор сред разработки и языков программирования. Задача архитектора — создавать продукт, который отвечает требованиям по производительности, масштабируемости, интеграции в другие системы, и постоянно развивать его вместе с тем, как развивается рынок, экосистема и эволюционируют средства разработки.</p><p>Разработчики — это люди, которые пишут код, конструируют интерфейсы, поддерживают сборку продукта, часто пишут средства для тестирования внутренних компонентов. В зависимости от продукта у разработчиков компании может быть много специализаций и областей ответственности.</p><p>Тестировщики и QA — это люди, которые ответственны за тестирование продукта (ручное или автоматическое) и за внедрение и выполнение методик, повышающих качество продукта, за отмашку «продукт готов к релизу».</p><p>Технические писатели/документаторы отвечают за создание пользовательской документации и часто — за средства доставки этой документации к пользователю.<br />Служба поддержки помогает пользователям разбираться с проблемами, возникающими при работе или внедрению продукта в эксплуатацию.</p><p>Кроме того, в реальной жизни все может быть сложнее — есть эпизодические роли (возникающие на определенных этапах разработки), роли, которые хотя и не имеют прямого отношения к разработке — плотно с ней взаимодействуют (вроде маркетинга и sales engineering), роли, которые существуют только для определенных продуктов — например, профессиональные сервисы, появляются новые роли, которые становятся возможны благодаря развитию средств разработки и внедрения (вроде DevOps инженеров).</p><p>У нас применяется система СКРАМ с элементами Канбан. И в целом мы адаптируем все технологии, стараемся чтобы здравый смысл руководил. У нас вся компания разбита на команды до 10 человек, мы работаем кварталами и спринтами внутри них. На квартал существуют глобальные планы компании, например, запустить новый продукт, или провести техническую реформу (недавно мы переходили на микросервисы). К этим глобальным планам команды добавляют свои планы, которые возникают из идей внутри команды или от пожеланий пользователей. Мы стремимся делать то, что мы делаем, самым лучшим образом и у нас, как нам кажется, это получается.</p><p>Статья продолжает дополняться.</p><p>Напоминаем, что вы можете <a href="https://docs.google.com/forms/d/1Mo-ZVDvb93jpkMCll7hPYklIz-_88a7eae7rZk9dm1M/viewform">задать свой вопрос</a> экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков <a href="https://tproger.ru/experts/">рубрики</a>. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на <a>admin@tproger.ru</a>, мы расскажем, как это сделать.</p>]]></content:encoded>
    </item>
  </channel>
</rss>