Записи с метками внедрение agile

Первый открытый тренинг по Agile разработке от Асхата Уразбаева 3 июля в Киеве

Мы рады сообщить о том, что наши возможности по проведению тренингов и состав доступных тренеров расширились благодаря сотрудничеству с российским тренинг-центром ScrumTrek. Многие отлично знают по выступлениям на различных конференциях Асхата Уразбаева и Никиту Филлипова. На последней конференции Agile Base Camp в Киеве Асхат выступил с докладом «Применение Lean в Offshore разработке», а Никита – с мастер-классом «Формируем и Приоритезируем бэклог используя StoryMapping». Мы слышали очень много положительных отзывов от участников и решили организовать первый открытый тренинг Асхата Уразбаева в Киеве. Состоится мероприятие 3 июля и посвящено будет разработке с использованием Scrum («Agile Development with Scrum»).

Данный тренинг будет интересен для тех, кто планирует внедрять Scrum в своем проекте или организации, а также для тех, кто хочет сравнить свои способы работы с лучшими практиками индустрии. На тренинге будут рассматриваться следующие темы:

Принципы Agile

  • Причины, по которым Agile приносит деньги компаниям.
  • Итеративность и инкрементальность разработки.
  • Легковесность процесса или отсутствие документации?
  • Самоорганизующаяся команда—ключ к успеху продукт.
  • Границы применимости Agile.

Командные практики Agile

  • Методы построения эффективной команды.
  • Методологии Scrum и Extreme Programming. Какие практики вам нужны?
  • Роли и обязанности в Scrum.
  • Как сформировать самоорганизующуюся команду? Практики. Типичные ошибки.
  • Как планировать в Agile?
  • Ежедневный scrum, использование Task Board и другие практики работы в итерации.
  • Закрытие итерации. Демонстрация и ретроспектива.

Инженерные практики Agile

  • Как обеспечить высочайшее качество?
  • Обзор инженерных практик Agile.
  • Что такое совместное владение кодом и как его добиться?
  • Парное программирование: как ускорить разработку.

Внедрение Agile

  • Подходы к внедрению Agile.
  • Как внедрять практики Agile? Примеры внедрений.
  • Примеры Agile в распределенной разработке.
  • Примеры Agile в офшорной разработке.
  • Примеры Agile в больших проектах.

Тренинг будет насыщен примерами, дискуссиями, играми, иллюстрирующими основные принципы и практики гибкой разработки. Он направлен не только на формирование базовых представлений о гибких методологиях разработки, но и на упорядочивание имеющихся знаний и навыков. После прохождения тренинга участники смогут аргументированно пытаться внедрить у себя на проекте различные Agile практики и подходы, а также получат толчок к дальнейшему развитию в мире современной разработки, где Agile методологии давно вышли на первый план.

Регистрация на тренинг уже открыта и продлится продлится до 28 июня. Стоимость участия: при регистрации до 20 июня – 1000 гривен, после 20 июня – 1200 гривен. Торопитесь, количество мест ограничено! Если у вас есть вопросы по организации тренинга, то мы с радостью ответим на них. Для этого отправьте свой вопрос на support@xpinjection.com.

Agile в больших командах

Очень часто поднимается вопрос о применении Agile в больших командах размером более 30 человек. Как известно, Agile методологии рекомендуют работать небольшой командой, желательно расположенной в одном месте. Это очень сильно упрощает коммуникации и позволяет успешно применять большую часть Agile практик. Но при разработке действительно большой системы не всегда можно справиться маленькой командой. Есть проекты с командами более 100 человек. Можно провести аналогию с программированием больших систем. Если у нас есть небольшая по функциональности система, к которой нет жестких требований по расширяемости и отказоустойчивости, то логично реализовать ее единым модулем. При этом возможно разделение на слои для облегчения тестирования и разделения логики. Архитектуры подобных систем очень простые и похожи друг на друга. Это очень напоминает работу небольшой команды. Когда же нам нужно разработать систему с серьезной бизнес логикой, работающую с внешними сервисами, имеющую высокие требования к расширяемости и отказоустойчивости, интегрирующуюся с различными устройствами и обрабатывающую огромные потоки информации, то все значительно усложняется. Тут на помощь приходит компонентная архитектура, асинхронное общение между компонентами, сервисно-ориентированный подход и т.д. Архитектура такого рода систем достаточно непроста и требует тщательного анализа, чтобы не только удовлетворять текущим требованиям, но быть достаточно гибкой и расширяемой. Именно из такого рода архитектур можно позаимствовать приемы организации работы больших команд.

Первый прием для построения компонентной архитектуры – это выделение полноценных компонентов. В случае большой команды такими компонентами являются маленькие подкоманды. Каждая подкоманда имеет все необходимое для независимого существования. У нее есть все нужные ресурсы, как человеческие, так и технические. В такой подкоманде можно сравнительно легко использовать любой понравившийся Agile процесс разработки. Для того, чтобы компонентная архитектура работала, у каждой компоненты должна быть четко очерченная зона ответственности. В случае подкоманды речь идет о части разрабатываемой системы. Для правильного выделения подкоманде ее зоны ответственности необходимо учесть, что компоненты должны быть максимально независимыми.

Это сразу делает проигрышным разделение по слоям (база данных, уровень доступа к данным, сервисная логика, пользовательский интерфейс). В этом случае зависимости слишком сильные, что влияет на коммуникации, планирование и остальные части процесса разработки. Разделение по слоям работает в проектах среднего размера, когда из-за специализации членов команд и их распределения тяжело выделить полнофункциональные подкоманды. В этом случае команды в каждой итерации анализируют точки соприкосновения и выделяют интерфейсы взаимодействия. В процессе разработки функционала используются техники заглушек и простых реализаций для обеспечения ранней интеграции. Второй вариант – это разделение по архитектурным компонентам системы. Этот вариант возможен при хорошей архитектуре самой системы, но таит в себе скрытые опасности. К таким опасностям относятся локализация архитектурных знаний, узкая специализация команд, распределенное планирование и т.д.

Второй прием – это обеспечение коммуникации между компонентами. Компоненты в архитектуре должны общаться только со своими ближайшими соседями, причем протокол может быть синхронный или асинхронный. В случае с синхронным протоколом (когда компоненты достаточно сильно зависят друг от друга) может применяться совместное планирование итерации, ежедневная синхронизация посредством проведения собрания представителей команд (Scrum of Scrum в методологии Scrum). В случае асинхронного протокола можно использовать Kanban подход. Если одной подкоманде необходимо, чтобы определенный функционал был реализован другой подкомандой, она помещает запрос на эту функциональность в очередь ожидания. Эта очередь может позволять управление приоритетами. Статус заявки можно отслеживать на Kanban доске по мере прохождения всех стадий разработки. Замеряя время цикла от постановки задачи в очередь до ее выполнения, можно добиться более точного планирования для зависимых задач.

Кардинально другой способ взаимодействия компонентов применяется в событийной архитектуре. Каждый компонент, в том числе и заказчик, может генерировать события определенных типов (задачи на реализацию определенного функционала). Все задачи поступают на общую шину. Это может быть система управления задачами или же физический инструмент визуализации (в отсутствии проблем с распределенной командой). Каждый компонент способен обрабатывать определенные типы задач, что зависит от его роли в системе. Таким образом, подкоманда всегда берет из шины задачи с максимальным приоритетом, которые она способна делать. Как только задача закончена, ее результаты публикуются в общедоступном месте либо же попадают обратно в шину в качестве задачи другого типа.

Анализируя возможности и ограничения работы в конкретном проекте, с помощью аналогий из мира архитектуры можно придти к стройному и продуктивному Agile процессу в большой команде. Ниже приведен пример такого рода процесса:

Пример построения Agile процесса в большой команде

Как видно из приведенных примеров, архитектуры современных систем таят в себе очень много интересных идей, которые можно использовать для организации процесса разработки в большой Agile команде. Ведь многие из существующих больших систем действительно работают! Я готовлю детальный доклад на эту тему, с которым планирую выступить на ближайшей конференции. Надеюсь с помощью идеи поиска аналогий в архитектуре вы сможете улучшить свой процесс разработки.

Конференция Agile Base Camp 23 января в Киеве

23 января в Киеве состоится конференция Agile Base Camp, которая соберет профессионалов в сфере разработки программного обеспечения, интересующихся гибкими подходами. На конференции будут организованы параллельные разделы для специалистов с разным уровнем опыта и знаний, разной направленностью интересов. Любой, от новичка в Agile до эксперта, найдет для себя что-то интересное:

  • Доклады экспертов гибкой разработки
  • Обзор гибких подходов и советы по внедрению для начинающих
  • Воркшопы для Java-разработчиков с применением инженерных практик Agile
  • Воркшопы по эффективным коммуникациям, взаимодействию с заказчиками, командности, мотивации
  • Отчеты и рассказы об опыте внедрения гибкой разработки
  • Открытые дискуссии по наиболее актуальным проблемам

Программа конференции очень насыщенная и содержит множество докладов и мастер-классов от экспертов из Украины и ближнего зарубежья. Конференция ориентирована на предоставление практического опыта, что делает ее еще более интересной. Спешите зарегистрироваться! Не пропустите это событие!

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

  • Лучше познакомятся с основными инженерными практиками
  • На игровых ситуациях рассмотрят примеры проблем и их решений
  • Проверят свои навыки и смекалку для достижения командного результата
  • Получат отличный шанс пообщаться с коллегами и обсудить волнующие их вопросы, связанные с инженерными практиками
  • Выслушают мнение экспертов по поводу вопросов внедрения инженерных практик
  • Повеселятся и получат заряд положительных эмоций

Интересно? Еще не зарегистрировались? Торопитесь, количество мест ограничено.

Видео с Agileee 2009 уже доступно

Видео презентация «People factor as failure reason of Agile adoption» от Алименкова Николая с конференции Agileee 2009 доступна в видео секции.