Гайд по Agile: как работать, несмотря ни на что (на примере маркетинга) — Маркетинг на

Что такое agile

Agile, или Agile software development — гибкий подход к разработке программного обеспечения (ПО), который часто применяют в небольших командах.

Весь процесс работы над проектом делится на итерации — короткие циклы по две-три недели. Каждая итерация решает серию задач: анализ требований, проектирование, программирование, тестирование и документирование. По итогам каждой итерации команда анализирует результаты и меняет приоритеты для следующего цикла. В итоге за каждый цикл создается мини-продукт или отдельная часть, которая готова к самостоятельному запуску.

Термин Agile употребляют в двух основных значениях:

  1. Система ценностей или философия, которой придерживаются многие разработчики и стартапы.
  2. Собирательное название для гибких подходов и методик, которые, так или иначе, пересекаются с основными ценностями Agile.

Как правило, agile-команды включают разработчиков, тестировщиков, менеджеров проектов, дизайнеров интерфейсов, технических (UX) писателей. Все они равноценны в иерархии и работают в одном офисе или коворкинге. За счет личного общения они экономят время на обсуждении текущих процессов. Сторону заказчика представляет менеджер или руководитель — product owner, от которого команда регулярно получает обратную связь.

Agile возник в противовес устаревшим подходам и излишней бюрократии в сфере ИТ. Резиденты Кремниевой долины (и не только) поняли, что невозможно создавать инновационные продукты в консервативной среде. Поэтому в феврале 2001 года в штате Юта (США) 17 разработчиков из разных стран мира создали свой манифест, в котором объединили самые передовые подходы и принципы.

Готовность к изменениям важнее, чем следование плану.

Изменения можно и нужно вносить на каждой стадии — или итерации, — чтобы не откладывать их на конец, когда сроки и ресурсы уже поджимают. Ради этого вполне можно пожертвовать чем-то из запланированного, если основные задачи будут решены.

Гибкие материалы:  Анализ и оценка методов разработки программного обеспечения (Agile) - тест 1

Agile не исчерпывается четырьмя ценностями [1]. В манифесте есть также 12 принципов, которые уточняют и дополняют их. Их можно свести к следующему:

  • Главная цель — удовлетворение потребностей заказчика. Все процессы и задачи меняются и подстраиваются под них.
  • Разработчики и представители заказчика должны работать вместе ежедневно, обмениваясь идеями и полезной информацией.
  • Каждый участник команды должен быть хорошо замотивирован: комфортными условиями, позитивными откликами, финансовыми поощрениями.
  • Изменения допустимы на любом этапе, даже перед самым выпуском. При этом за каждую итерацию (от двух недель до двух месяцев) вы должны выпускать рабочий продукт.
  • Все должны стремиться к максимальной простоте и самоорганизации.

Agile, таким образом, — это система ценностей или даже философия ведения бизнеса. Она помогает сосредоточиться на главном, избавиться от ненужных формальностей и создавать рабочий продукт быстрее и эффективнее. Чтобы воплотить эти ценности на практике, используют конкретные методы. Согласно исследованию Agile в России [2], самые популярные из них — Scrum и Kanban.

Agile — это не конечное состояние, а образ мышления и жизни

Этот пункт о том, что применение Agile в целом — путь, а не цель. Нельзя «внедрить» Agile и расслабиться. Если вы выбираете этот путь, у вас всегда будет что-то ещё, что можно сделать лучше, какой-то ещё вызов, которому надо ответить, какая-то ещё проблема, которую надо решить, ещё одна высота, которую надо покорить… Это движение бесконечно, потому что нет идеального процесса или продукта, развитие и конкуренция не останавливаются никогда, как никогда не прекращается борьба за выживание в природе.

И если всё удалось: люди в компании понимают и разделяют ценности и принципы Agile, работают согласно им, — тогда менеджменту не придётся «тащить» на себе любые изменения или «пинать» работников, чтобы они начали что-то делать по-другому. Предприятие станет единым организмом, а работа будет приносить больше удовольствия.

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

Pi-планирование

Первая встреча всех команд состоялась на PI-планировании. Это двухдневное мероприятие, когда с разных мест собралось порядка 100 человек. Очень многолюдное по корпоративным меркам событие с учетом того, что к командам добавлялся весь бизнес. При желании удавалось решить любой вопрос начиная от деталей конкретной задачи, до архитектуры. В том числе было множество экспертов по областям или тех, кто подобную проблему уже решал.

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

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

Более того кто-то «замалчивал» экспертизу, которой они обладали или откровенно вставляли «палки в колеса» своим «красноречивым молчанием». Мотивы такого поведения просты: «как бы не загрузили чужими задачами», «чтобы не забрали разработчика» и другие страхи прошлого.

Scrum

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

Впервые термин прозвучал в 1986 году. Японские исследователи Икуджиро Нонака и Хиротака Такеучи в статье The new New product development game сформулировали принципы, позволяющие быстрее создавать новый продукт. Среди условий такой разработки назвали самоорганизующуюся команду специалистов, их полную свободу в творчестве и работе — без ограничений со стороны топ-менеджмента. Этот подход авторы описали так:

«Это как оставить всех сотрудников на втором этаже и убрать лестницу, а потом сказать: прыгайте или делайте что угодно — решение за вами. Экстремальные условия рождают творческий подход!»

Руководство ставит перед командой задачу и, возможно, сообщает сроки, но не дает конкретных указаний — рабочая группа самостоятельно ищет решение.

Главное для Scrum-подхода — особая динамика работы, когда команда постоянно обсуждает, как сделать продукт лучше. Такой ритм авторы сравнивают с регби: игроки передают мяч друг другу, но при этом команда движется по полю как единое целое, достигая общей цели. Из регби и пришел термин «скрам» — это схватка из-за мяча.

Методика, предложенная Нонака и Такеучи, нашла применение в IT-сфере, разработке инженерных решений в машиностроении, электронике. В 90-х Scrum оформился как проработанная и цельная методология, оброс конкретными приемами, помогающими с нуля наладить работу команды.

Бизнес-команды

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

Такие постановки улучшали работу конкретного человека, в то время как отдел мог продолжать «зашиваться» или продукт не приносить прибыль. Хочу отметить классную попытку внедрения KPI и OKR. Взяли практики, которые отлично зарекомендовали себя на западе и пытались приспособить в новой реальности.

Для ИТ и бизнеса это был правильный вектор устремления в одном направлении. К моменту внедрения фреймворка заказчик «оголодал» до того, чтобы «у него спрашивали». И когда команды стали интересоваться «что нужно для продаж», то коллеги с радостью делились всеми деталями и проблемами, которые мешают достигать целей.

Это помогало правильно сфокусироваться на задаче. В прошлом была выстроена линия, когда аналитики «спускали» то, как оно будет работать. Но почему-то отсутствовал момент обратной связи от самих заказчиков. Люди всегда рады поделиться потребностями и болями. Отдельный вопрос — это распознать проблемы и трансформировать в понятную постановку и реализацию.

При взаимодействии с бизнесом присутствовала политика. Как я упомянул, некоторые пытались «пропихнуть» свою задачу в обход оговоренного списка. Еще пробовали завышать показатели прибыльности для увеличения приоритетности. Кто-то не понимал суть происходящего и по старой привычке хотел «уловить мысли руководства», вместо подготовки финансового обоснование постановки или фиксации рисков, которые могут помешать выполнить задачу.

Бывало, что общение походило на «хождение по минному полю», но это был правильный вектор единения ИТ и бизнеса с возможностью услышать и высказаться всем заинтересованным сторонам.

Большой взрыв проектов

Если провести параллель с зарождением Вселенной — эту роль отведем Agile, — тогда Большим взрывом станет проблема номер один, которая довела до нервного срыва не одну сотню менеджеров проектов, — изменение требований к продукту. Именно это — причина стенаний, надрывных возгласов «За что мне эта кара?» и поредевших шевелюр.

Обычно процессы работают в рамках каскадной модели (или waterfall model) — все происходит поэтапно и последовательно. Проще говоря, «вижу цель — иду к цели». И если в какой-то момент требования к продукту, конечной цели меняются, иногда приходится переделывать заново.

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

По мнению Джеффа Сазерленда, создателя Scrum, это напоминает модель поведения Политбюро ЦК КПСС в конце 1980-х годов, якобы верившему отчетам, которые оно получало накануне крушения Советского Союза.

Agile-методы же призваны бороться с этим за счет своей гибкости. Можно сказать, что Agile — сборная солянка нескольких подходов, призванная минимизировать всяческие риски при помощи набора принципов. Эти самые принципы и 4 основных идеи собраны в Agile-манифесте, датированном 2001 годом.

Гибкость во всем

С английского agile переводится как «подвижный, быстрый, проворный». Но в русской IT-лексике за этой группой методологий закрепилось определение «гибкие». Agile-подход динамично организует программирование, постоянно адаптируя проект к новым обстоятельствам и требованиям.

Не углубляясь в детали, вспомним, как устроена разработка по методологии Waterfall:

  1. Выдвигаются требования к ПО, разрабатывается техническое задание (ТЗ).
  2. Поставленные задачи воплощаются в коде.
  3. Выполняется тестирование.
  4. Готовое ПО внедряется в работу.

Теоретически в Waterfall возможен возврат на предыдущие ступени — например, если оказывается, что ту или иную задачу невозможно выполнить по техническим причинам. В этом случае ТЗ пересматривают, но это скорее чрезвычайная ситуация. В норме конечный продукт должен идеально соответствовать требованиям, целям и задачам, которые были сформулированы до разработки.

В Agile-методологии в приоритете не исходные установки, а актуальные потребности пользователя. Постоянно вносить изменения в ТЗ, даже в самый разгар разработки, для Agile нормально. В гибкой методологии не предусмотрен предварительный генеральный план — напротив, программный продукт пишется практически экспромтом.

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

Чтобы понять, как это работает, представим коллектив разработчиков, создающих аудиоплеер. Уже написан костяк программного кода: интерфейс и базовый функционал. Программа умеет воспроизводить файлы формата MP3, WAV и OGG. Но пользователи предлагают добавить проигрывание CD-дисков и подключить горячие клавиши, чтобы быстро управлять плеером.

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

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

На этом итерация завершается — и начинается новый виток разработки.

Гуманистический подход

Зачем относиться к людям по-человечески? То есть, моральная сторона дела ясна, а какую пользу это принесёт владельцу предприятия?

Ответ довольно простой. Если создание того, что вы продаёте, не требует умственного труда, а только механический действий — можете не заморачиваться. Просто платите соразмерно сделанной работе, и всё. Но как только в дело вступает мозг работников — придётся считаться с принципами мотивации умственного труда.

А они говорят, что для людей важны возможность самореализации, повышения своего мастерства, принесения чего-то ценного в мир, самостоятельности в решениях и ещё ряда факторов. И человек мотивированный (не путать с человеком простимулированным!) будет вкладываться в работу сильнее, и результат будет качественнее и быстрее.

И, что приятно, если копнуть в тот же Скрам, то окажется, что все ключевые факторы мотивации работника умственного и/или творческого труда в него уже включены. В каждой итерации («спринте») мы ставим цель, которой хотим достичь; нам даётся возможность решать, как именно достигать цели; в конце мы смотрим, насколько мы стали лучше (или хуже) работать, чем раньше; видим людей, которые заинтересованы в продукте, и их эмоции от знакомства с ним. Особенно хорошо, если эти эмоции положительные.

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

Ит-команды

Когда мы говорим про айтишников, то зачастую это интеллектуалы. Каждый в своей области, но сложно встретить среди ИТ-отделов тех, кто «разгружает вагоны» и «подбрасывает уголь в печь». Хотя, конечно, без «сильных программистов» не обойтись, когда необходимо помочь перенести коробки с подарками и провизией для новогоднего корпоратива, но мы не про это.

Говоря о культуре в командах нужно учитывать каждого участника. Несколько примеров, которые мне лично встречались: два программиста из одной азиатской провинции вместе ходили на обед и внешне были «не разлей вода», но в работе это кроме как жесткой конкуренцией не назовешь.

Другой случай: индийская культура и особенности отношения к ошибкам. Бывает, что коллеги только приехавшие из Индии обвиняют всех, но никогда не признают свой просчет. Это непростое испытание для команды, если надо выяснить истинную причину неудач. Конечно же такой культурный момент можно сгладить, но не быстро.

Ну и близкое к советской культуре — говорить «правду матку», «рубить с плеча» или отправлять «учить матчасть». 

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

Книги про agile

  • «Блистательный Agile. Гибкое управление проектами с помощью Agile, Scrum и Kanban». Авторы: Роб Коул, Эдвард Скотчер. Для тех, кто только планирует перейти от классического проектного менеджмента к гибкому.
  • «Эпоха Agile. Как умные компании меняются и достигают результатов». Автор: Стивен Деннинг. Описывает работу гибких методов управления на разных уровнях, как правильно ставить цели и как их достигать.
  • «Scrum. Революционный метод управления проектами». Автор: Джефф Сазерленд, основатель фреймворка scrum. Необходима скрам-мастерам и тем, кто хочет применять этот метод и понять, в чем его польза и преимущества.
  • «Scrum и Kanban: выжимаем максимум». Авторы: Хенрик Книберг, Маттиас Скарин. Сравнение двух методов с практическими примерами, плюсами и минусами.
  • «Канбан и «точно вовремя» на Toyota. Менеджмент начинается на рабочем месте». Сборник статей от специалистов Toyota, посвященных внедрению kanban в компании, синтезе американского и японского подходов и как это повлияло на внутренние процессы.
  • «Agile: Оценка и планирование проектов». Автор — Майк Кон. Оценка и планирование критически важны для успеха любого проекта. Однако процесс планирования сложен, и наши планы часто оказываются далекими от реальности. Майк Кон, гуру в области Agile, дает инструменты, необходимые для оценки, планирования и управления agile-проектами любого масштаба.

Нужен ли вашей команде agile

Сегодня принципы Agile распространяются во многих сферах, хотя на первом месте по-прежнему остается ИТ-разработка. Однако гибкие подходы применимы далеко не везде. Эффективнее всего они работают там, где:

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

Другими словами, Agile идеален для инновационных стартапов, но мало подходит корпорациям с отлаженными процессами и сложной структурой. Для таких компаний лучше работают методы с отдельными элементами Agile, которые проще масштабировать — SAFe (Scaled Agile Framework) и LeSS (Large-Scale Scrum).

Но и в ИТ-сфере Agile — далеко не единственный способ сделать процесс эффективнее. Здесь хорошо работают такие инженерные практики, как DevOps — метод работы, при котором все участники активно взаимодействуют друг с другом, а рабочие процессы взаимно интегрированы.

Чтобы протестировать новую идею, не проходя все этапы разработки, подойдут Customer Development, Design Thinking и другие продуктовые методики.

Наконец, есть более широкий подход, который включает в себя agile-методики — Business Agility («гибкость в бизнесе»). Он распространился позже — два-три года назад — и включает не только ускорение разработки и выпуска продукта, но и быструю реакцию на внешние изменения, гибкое целеполагание и распределение ресурсов.

Повышение полномочий сотрудников

Зачем давать больше полномочий, когда можно дать бумажку с инструкцией? Есть, как минимум, три причины это делать.

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

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

В-третьих, это всё та же скорость. Если человек может сам, на своём месте, никого не спрашивая, решить какую-то проблему, это сокращает время принятия решений. Не надо больше отправлять вопрос «вверх» и ждать ответа от менеджмента. Это преимущество не так заметно, если у вас работает 3 человека, но если вас 30, или 300, или 3000… В больших организациях, построенных сугубо на иерархическом принятии решений, паралич воли может быть довольно частым явлением.

Популярные способы построения работы в Agile, особенно базирующиеся на фреймворке Scrum, предполагают систему самоорганизованных команд и поощряют лидерство на любых уровнях.

Работа короткими циклами

В мире Agile не принято запираться в мастерской на три года, чтобы точить там что-то интересное. Очень уж велик риск, потратить море сил и времени на то, что никому не нужно или устарело.

Чтобы подобного избежать, применяется так называемый итеративно-инкрементальный подход, когда:

  • работа ведётся небольшими фиксированными отрезками времени, например, в одну, две или четыре недели,
  • и, главное, в конце каждого отрезка времени создаётся не просто какой-то промежуточный результат, а, пусть маленький, урезанный, куцый, но работоспособный вариант продукта, которым уже можно начать пользоваться.

В качестве самого простого примера такой рабочей модели можно представить себе стандартную для всех компьютеров программу «калькулятор», которая вначале позволяет только складывать два числа, потом мы добавляем туда вычитание, умножение, деление, трансцендентные числа, тригонометрические функции, — и так далее, в порядке частоты применения.

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

Ещё одно преимущество такого подхода, помимо раннего выхода на рынок и внесения изменений на ранних стадиях работы, — это возможность более точно измерять прогресс. Мы не просто «сделали 15% всей работы», что довольно абстрактно. Мы «сделали 15% функционала», который уже работает.

Все процессные подходы в Agile имеют короткие циклы, будь то упомянутые ранее Scrum, Nexus, LeSS, SAFe или XP, плюс необходимость работы такими циклами упомянута и в самом манифесте Agile.

Свет в конце тоннеля

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

Углубляясь в теорию, заметно разделение мира на две части: плановая и изменчивая. В наше время каждой из них придумывают новые маркетинговые названия, но 10, 20 и 30 лет назад были последователи правил и те, кто адаптировался под изменения. Новые идеи могут оказаться переработкой практик прошлого. Не стоит становиться частью какого-то лагеря. Лучше использовать то, что подходит под конкретный проект и компанию.

Мы прошлись по аспектам, которые необходимо учитывать при изменении мышления на уровне организации. Сухо отвечая на вопрос «Возможен ли Agile для всей компании?» — «Да», но с большим количеством но. В этих оговорках будет спрятан процесс по изменению мышления человека, структуры организации, выбора города, офиса или даже смены страны для всей фирмы.

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

Существует ли agile в россии

В Россию Agile пришел на несколько лет позже, но уже сегодня его активно используют в ИТ-секторе, ретейле, банках, онлайн-сервисах, промышленных предприятиях. Среди них — ПО-разработчик First Line Software, гипермаркет электроники «М.Видео», служба доставки Dostаевский, онлайн-кинотеатр ivi, бренд одежды 12 Storeez, металлургический концерн НМЛК.

ScrumTrek проводит ежегодное исследование Agile в России. В прошлом году в нем приняло участие более 1 тыс. компаний из 80 городов. Вот главные цифры за 2020 год [3]:

  1. География: 41% Agile-команд, участвующих в исследовании, находятся в Москве, 14% — в Санкт-Петербурге, 6,4% — в Перми, 5,5% — в Казани и Иннополисе (ИТ-кластер), 5,4% — в Новосибирске.
  2. Отрасли: ИТ — 42% участников, финансы — 18%, промышленность — 8%, ритейл — 7%, телеком — 4,8%, энергетика — 3,2%, консалтинг — 2,8%.
  3. 33% применяют гибкие подходы во внутренних проектах и услугах для клиентов.
  4. 41% используют scrum (на 7% меньше, чем год назад и на 9% — по сравнению с 2022 годом), 23% — kanban (на 8% больше, чем в 2022 году и на 13% — по сравнению с 2022-м): то есть, kanban постепенно догоняет scrum по популярности. При этом в мире доля kanban в три раза ниже, чем в России: за год она выросла с 5% до 7%; доля scrum при этом выросла с 54 до 58%.
  5. 60% компаний применяют несколько подходов одновременно. Доля собственных или комбинированных agile-методик в компаниях составляет 30%.
  6. 22% компаний оценили свой уровень компетенции в Agile как высокий — это на 9% больше, чем годом ранее. Если год-два назад многие только планировали применять гибкие методики, то сейчас уверенно внедряют их, комбинируя разные методы и даже изобретая свои. Однако три года — период, в который проводятся исследования — все еще слишком малый срок, чтобы говорить о зрелости в плане agile-подходов.

Темная сторона силы: недостатки agile

Не факт, что программа когда-нибудь будет завершена.

Серьезно. После каждой итерации и у разработчика, и у пользователя будут возникать новые идеи, как сделать продукт еще мощнее и полезнее. Разработка грозит растянуться на годы.

Но если вы планируете долговременное сотрудничество с заказчиком и он готов платить за все время разработки — почему нет?

Пользователь требует все и сразу.

Большинство участников проекта со стороны пользователей могут на ранних этапах сформулировать множество требований к программе и будут ожидать, что все они будут реализованы в ближайших итерациях. Значительная часть требований получит наивысший приоритет — так что разработчику предстоит определять, какие задачи выполнить сейчас, а какие — отложить. А пользователи будут недовольны: они хотят все и сразу.

Работа над проектом требует не только профессионализма разработчика, но и сознательности пользователя. А спросите у программистов, часто ли им встречались адекватные, понимающие пользователи.

«Золотые пользователи»

Если в обсуждении участвуют несколько заказчиков (пользователей), их вклад в проект часто разномасштабный. Кто-то более внимателен и вносит много предложений, а другой сидит молча. Обсуждение проекта с широким охватом может и вовсе проходить на форуме.

Фактически это приведет к тому, что небольшая группа активистов будет уводить разработку по интересному лично им пути, формировать программу под себя. Мнения других пользователей уйдут в тень.

Строительство без чертежей

Еще одна проблема, на которую обращают внимание критики гибких методик — отсутствие генерального плана, концепции программы, единой структуры. Код такого программного продукта может напоминать небоскреб, который построили без чертежей и плана коммуникаций.

Решения о нововведениях принимаются буквально на ходу, о долговременном планировании и речь не идет. В результате оказывается, что уже реализованные участки кода не вписываются в архитектуру, которую подразумевает новая функциональность. Их приходится дорабатывать и добавлять «костыли», а то и переделывать.

С каждой новой итерацией количество «подпорок» нарастает катастрофическими темпами, делая внутреннюю структуру программы нелогичной и малоэффективной. А тестирование на каждом этапе проводится только для вновь созданной или доработанной функциональности. Так что нельзя поручиться, что поправив код в одном месте, не сломаешь в другом.

Постоянная спешка

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

Это сказывается на качестве кода: бывает, фрагменты программы пишутся по принципу «и так сойдет», без попыток сделать их более изящными или эффективными. Разработчик осознает, что такой код годится только как временное решение, но вернуться и переписать получается редко. Работает — и хорошо.

До тех пор, пока работает…

Несмотря на критику, гибкая методология разработки успешно используется при создании программных продуктов.

Экстремальные практики

Как и в других Agile-методологиях, в XP чем итерации короче, тем лучше. Если доработку можно выполнить за один день — нужно так и сделать. Но вряд ли пользователю захочется ежедневно обновлять версию своей рабочей программы. Максимальный срок в XP — месяц. Так что в среднем итерация длится две недели.

В начале каждого цикла разработчики устраивают общее собрание — представителя заказчика тоже приглашают. Совместно решают, какую функциональность будут реализовать. За основу берутся пользовательские истории — то есть задачи и требования — с учетом их значимости.

Важное условие в XP — реализуется самое простое из возможных рабочих решений и его исполнений, соответствующих заданным условиям. Не создается лишнего: никаких «примочек на будущее», которые могут понадобиться позже, но не нужны прямо сейчас. На последующих этапах функциональность решения можно расширить и доработать, но об этом разработчик будет думать, когда потребуется.

Есть риск: примитивное техническое решение, которое успешно работало на первых порах, может стать проблемой, когда программа начнет развиваться и потребуется более продвинутая функциональность. Это может показаться минусом технологии: XP не любит планировать на отдаленную перспективу, предпочитая оперативно перестраиваться на ходу.

Вопросы такого порядка решает и рефакторинг — еще одна практика экстремального программирования. Суть — регулярно пересматривать и улучшать код, а цель — сделать программу быстрее и надежнее. Разработчики убирают задвоенные фрагменты кода, упрощают его, приводят к единым стандартам проекта.

Другая полезная практика — постоянная коллективная работа. XP подразумевает тесное сотрудничество и взаимопомощь. Разработку ведут в группах по десять человек, которые активно обмениваются информацией. Практикуется парное программирование: один разработчик создает модуль, второй наблюдает.

Парное программирование — одна из полезных практик XP

Может показаться, что подход расточительный: фактически получается, что программисты напишут в два раза меньше кода, чем если бы каждый работал над своим фрагментом программы. И исследования показывают, что парное программирование продвигается на 15 % медленнее, чем аналогичная разработка одним специалистом.

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

Принципиально, что код — общее достояние команды. Никто не может единолично знать модуль программы или владеть им.

Поэтому важна стандартизация кодирования, единообразное оформление: соблюдать правила именования переменных и классов, использовать одни приемы программирования.

XP требует постоянной интеграции кода, то есть регулярного и частого обмена написанными и отлаженными модулями. Части программы могут быть взаимозависимы, и чтобы исключить внутреннюю несовместимость, у всех участников проекта должен быть доступ к самым актуальным версиям модулей.

Переработку XP не поощряет: требует от программистов неукоснительно соблюдать рамки 40-часовой рабочей недели. Никаких «я только допишу эту функцию»! Если не умеете переключаться и отдыхать — скоро не сможете и продуктивно работать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *