[БЕЗ_ЗВУКА] В предыдущем уроке мы познакомились с манифестом гибкой разработки и основными его ценностями и принципами, а также узнали о некоторых авторах как самого манифеста, так и отдельных методологий гибкой разработки. В данном видео мы познакомимся с наиболее популярными методологиями более подробно, рассмотрим их особенности и специфику. Существует несколько широко известных и устоявшихся Agile-методологий. Их фундаментальные принципы в целом схожи, возможно, благодаря существованию Agile-манифеста. Но существуют и различия с учетом целей и фокусировки конкретных проектов. Понимание этих нюансов поможет вам правильно выбрать подходящую именно вашему проекту гибкую методологию. Итак, основные популярные методологии гибкой разработки программного обеспечения, с которыми мы более детально будем знакомиться на протяжении нашего курса — это методология экстремального программирования, автором которой является Кент Бек, методология бережливого производства, известная также как Lean, автором которой является Мэри Поппендик, методология Crystal, также известная как Crystal Clear, автором которой является Алистер Кокберн, а также получившая самое широкое распространение методология Scrum, авторами которой являются Кен Швабер и Джефф Сазерленд. Именно эту методологию мы будем детально изучать как основную на протяжении курса, в том числе и потому, что ее применение в последнее время вышло за границы разработки только программного обеспечения и все чаще применяется в других, не софтверных отраслях и видах проектов. Давайте познакомимся с этими методологиями чуть ближе. Методология экстремального программирования. Название методологии исходит из идеи применить полезные традиционные методы и практики разработки программного обеспечения, подняв их на новый, экстремальный уровень. Так, например, практика выполнения ревизий кода, заключающаяся в проверке одним программистом кода, написанного другим программистом, в экстремальном варианте представляет собой парное программирование, когда один программист занимается написанием кода, а его напарник в это же время непрерывно просматривает только что написанный код. Кстати, если вы постигаете азы программирования самостоятельно, то очень рекомендую вам попробовать позаниматься парным программированием. Сейчас можно найти множество онлайн-сервисов, предоставляющих такую возможность, например agileventures.org. В экстремальном программировании используются практики, которые помогают сводить к минимуму затраты на разработку, максимально точно прогнозировать результат, быстро реагировать на изменение требований клиентов, общаться и обучаться разработчикам без отрыва от производства. Среди них парное программирование: один разработчик кодирует, а другой следом проверяет, через какое‐то время они меняются местами. Так увеличивается качество кода и ускоряется обмен знаниями. Тестирование до разработки: сначала пишется тест, покрывающий желаемое изменение, а затем — код. Смена позиций: участники все время перемещаются на новые участки работы, чтобы избежать изоляции знаний и добиваться таким образом обмена идеями между разработчиками для всех частей программного продукта. Непрерывная интеграция написанного кода: код выпускается каждые несколько часов или как минимум один раз в день. Игра в планирование: быстро формируется план работы и постоянно меняется по мере того, как условия задачи становятся более четкими. Частые релизы: итерации идут от одного дня до трех недель. Непрерывная обратная связь с заказчиком и прочее. Если экстремальное программирование используется только при разработке программного обеспечения, то Scrum в силу своей адаптивности может быть применен в различных сферах деятельности. Как мы можем увидеть, многие из приемов экстремального программирования так или иначе пересекаются с принципами манифеста гибкой разработки. Более детально с практической реализацией некоторых из этих приемов мы познакомимся дальше на протяжении курса. Методология бережливого производства. Методология разработки программного обеспечения, использующая принципы концепции бережливого производства. Основными принципами данной методологии являются исключение потерь, потерями считается все, что не добавляет ценности для потребителя, в частности излишняя функциональность, ожидание или паузы в процессе разработки, нечеткие требования бюрократизация, медленное внутреннее сообщение. Акцент на обучении. Короткие циклы разработки, ранние тестирования, частая обратная связь с заказчиком. Предельно отсроченное принятие решений. Решения следует принимать не на основе предположений и прогнозов, а после открытия существенных фактов, опираясь на данные. Предельно быстрая доставка заказчику, короткие итерация, мотивация команды. Нельзя рассматривать людей исключительно как ресурс. Людям нужно нечто большее, чем просто список задач. Интегрирование. Передать целостную информацию заказчику, стремиться к целостной архитектуре, делать рефакторинг. Целостное видение. Стандартизация, установление отношений между разработчиками, распределение разработчиками принципов бережливости: мыслить широко, делать мало, ошибаться быстро, учиться стремительно. Методология Crystal Clear. Crystal Clear — это легковесная гибкая методология, созданная Алистером Кокберном в 2004 году. Она предназначена для небольших команд на шесть-восемь человек для разработки некритичных бизнес-приложений. Как и все гибкие методологии создания приложений, Crystal Clear больше опирается на людей, чем на процессы и артефакты. Crystal Clear использует семь практик, три из которых являются обязательными: частая поставка продукта, улучшения через рефлексию, личные коммуникации, чувство безопасности, фокусировка, простой доступ к экспертам, качественное техническое окружение. Как вы видите, все практики характерны для семейства Agile-методологий. Кристально чистое выполнение становится достижением характеристик, а не следования процедурам. Семейство методологий Crystal сосредоточено на трех характеристиках: постоянная выработка, хорошая коммуникация и отражающее усовершенствование, так как они должны присутствовать во всех проектах. Crystal Clear использует преимущества небольшого размера и расстояния между группами, чтобы усилить хорошую коммуникацию для более эффективной «осмотической» коммуникации. Мы рассмотрим этот термин более подробно в одном из последующих модулей. Опытные разработчики заметят, что, за исключением этого изменения, все описанные здесь характеристики применимы к каждому проекту, а не только к проектам с маленькими группами. Crystal Clear описывается как набор характеристик. Большинству описаний методологий недостает важного показателя, отделяющего успешную группу от неуспешной. Группа Crystal Clear определяет ее состояние по настроению группы и характеру коммуникаций, а также по степени продуктивности. Присваивание названий характеристикам обеспечивает группу слоганами для определения ее ситуации: «В течение некоторого времени мы не выполняли отражающее усовершенствование», «Можем ли мы получить более легкий доступ к опытным пользователям?». Сами названия характеристик помогают людям выявлять и обсуждать методы урегулирования текущей ситуации. Следует отметить, что в России методология Crystal Clear применяется не так обширно, как в других странах. И, наконец, рассмотрим одну из наиболее популярных на текущий момент гибких методологий — Scrum. Scrum — это методология, которая основана на эмпирическом методе и предназначена для разработки продуктов высокой ценности в запутанной среде. Давайте поясним, что такое «эмпирический метод» и «запутанная среда». Эмпирический метод — это процесс познания окружающей действительности опытным путем, предполагающий взаимодействие с изучаемым предметом при помощи экспериментов и наблюдений. То есть мы создаем продукт, шаг за шагом анализируем, что у нас получается, и делаем выводы, что может быть улучшено для того, чтобы создавать еще большую ценность для конечного пользователя. Запутанная среда — это внешние обстоятельства, в которых нам приходится работать над проектом, когда не все изначальные условия четко обозначены. Именно работа в запутанной среде предрасполагает нас к ожиданию постоянных изменений, так как новые вводные могут появиться на любом этапе работы. Впервые методология Scrum была представлена на всеобщее обозрение задокументированной, четко сформулированной и описанной совместно Кеном Швабером и Джеффом Сазерлендом на конференции Object-Oriented Programming, Systems, Languages & Applications в 1996 году в Остине. Таким образом, Scrum — это набор принципов, на которых строится процесс разработки, позволяющий в жестко фиксированные и небольшие по времени итерации, называемые спринтами, предоставлять конечному пользователю работающее программное обеспечение с новыми возможностями, для которых определен наибольший приоритет. Возможности программного обеспечения к реализации в очередном спринте определяются в начале спринта, на этапе планирования, и не могут изменяться на всем его протяжении. При этом строго фиксированная небольшая длительность спринта придает процессу разработки предсказуемость и гибкость. Именно на основе детального разбора принципов Scrum и их сравнения с альтернативными подходами к проектному управлению мы будем продолжать наш курс. Итак, в данном видео мы чуть ближе познакомились с наиболее популярными методологиями гибкой разработки, узнали об истории их возникновения и их основных принципах. В следующем уроке мы детально рассмотрим ценности, перечисленные в Agile-манифесте.