Манифест Agile
Манифест, созданный программистами, включает в себя 4 базовых идеи и 12 принципов эффективного управления проектами. Любая из систем управления проектами на основе Эджайл (о системах мы поговорим позже) опирается именно на эти идеи и принципы, хотя и использует их в разных вариациях.
Идеи Agile:
- Люди и их взаимодействие важнее, чем процессы и инструменты
- Рабочее ПО важнее, чем документация
- Клиенты и сотрудничество с ними важнее, чем контракт и обсуждение условий
- Готовность к внесению изменений важнее, чем первоначальный план
Принципы Agile:
Удовлетворять клиентов, заблаговременно и постоянно поставляя ПО (клиенты довольны, когда рабочее ПО поступает к ним регулярно и через одинаковые промежутки времени)
Изменять требования к конечному продукту в течение всего цикла его разработки
Поставлять рабочее ПО как можно чаще (раз в неделю, в две недели, в месяц и т.д.)
Поддерживать сотрудничество между разработчиками и заказчиком в течение всего цикла разработки
Поддерживать и мотивировать всех, кто вовлечен в проект (если команда мотивирована, она намного лучше справляется со своими задачами, нежели команда, члены которой условиями труда недовольны)
Обеспечивать непосредственное взаимодействие между разработчиками (возможность прямого контакта способствует более успешной коммуникации)
Измерять прогресс только посредством рабочего ПО (клиенты должны получать только функциональное и рабочее программное обеспечение)
Поддерживать непрерывный темп работы (команда должна выработать оптимальную и поддерживаемую скорость работы)
Уделять внимание дизайну и техническим деталям (благодаря эффективным навыкам и хорошему дизайну команда проекта получает возможность постоянного совершенствования продукта и работы над его улучшением)
Стараться сделать рабочий процесс максимально простым, а ПО – простым и понятным
Позволять членам команды самостоятельно принимать решения (если разработчики могут сами принимать решения, самоорганизовываться и общаться с другими членами коллектива, обмениваясь с ними идеями, вероятность создания качественного продукта существенно возрастает)
Постоянно адаптироваться к меняющейся среде (благодаря этому конечный продукт будет более конкурентоспособен)
Постигая Agile, в дополнение к обзору идей и правил обязательно ознакомьтесь с этим небольшим видео, где специалист по проектному управлению, консультант и бизнес-тренер Алексей Таченков рассказывает об основах системы.
Чтобы реально осуществить на практике вышеизложенные идеи и принципы, необходимо придерживаться нескольких правил. Только тогда Agile-менеджмент проекта может быть эффективен.
Риск 5: Ошибочные требования
Ошибки в требованиях включают в себя пропущенные, ошибочные, противоречивые или неопределенные требования, которые могут привести к дефектному продукту. Даже хуже, они могут привести к созданию неправильного продукта. В гибких проектах краткие и точные требования (истории) четко определяются, как только клиент выбирает их из списка невыполненных задач. Готовность определяемой истории критически важна. Как сказано ранее, клиент участвует в планировании итераций, и он должен в течение каждой итерации отвечать на вопросы, связанные с требованиями.
Это не оставляет времени для ожидания, в течение которого разработчики или тестеры могут сделать ошибочные предположения относительно требований. Кроме того, группа может разработать тесты приемлемости для пользователя, как только начнется работа над каждым элементом. Данная форма проверки – лучший способ устранить неопределенность из требований.
Ошибочные требования также ведут к дополнительным исправлениям – пересмотру кода, дополнительному тестированию, изменению документации и к преждевременному или ненужному анализу. В гибких проектах мы не анализируем элементы списка задач до тех пор, пока они не окажутся на верху данного списка – затем они выносятся на совещание по планированию итерации. Этот метод не только предотвращает анализ требований, которые никогда не будут реализованы, но также позволяет избежать переделок, вызванных преждевременным анализом требований. Также многие требования являются независимыми. Когда вы анализируете, конструируете, тестируете и предоставляете требование, вы изучаете аспекты, которые повлияют на ваше понимание связанных требований. Ожидая до «последнего ответственного момента» перед проведением анализа, вы оказываетесь лучше информированы, и поэтому можете выполнить анализ более эффективно.
7 главных преимуществ качественного обслуживания клиентов для вашего бизнеса
Ниже вы найдете 7 главных причин, по которым вам стоит тратить свое время и силы на улучшение качества клиентского сервиса:
- Построение отношений: хороший сервис дает возможность брендам строить долгосрочные отношения с клиентом вместо того, чтобы только и делать, что решать проблемы и отвечать на жалобы.
- Защита интересов клиентов: прекрасное обслуживание позволяет компании превращать потенциальных клиентов в постоянных, а затем делать из них так называемых «адвокатов» бренда. Это, в свою очередь, может оказаться чрезвычайно прибыльным. По данным Bain, пожизненная ценность лояльного клиента для компании составляет от 600 до 1400% от стоимости негативно настроенного.
- Позитивный имидж бренда: никогда не стоит недооценивать силу положительного впечатления, произведенного на клиентов. Они начинают верить и доверять бренду и добровольно распространять положительные отзывы. Это также повышает лояльность к бренду, согласно исследованию Microsoft, проведенному среди 96% потребителей.
- Вовлеченность: бренды, которые могут постоянно привлекать клиентов при помощи , формируют устойчивую эмоциональную связь с ними. А это сможет стать отличным источником полезной для вас информации.
- Долговременная поддержка: исследования AE показывают, что 70% потребителей сделали бы выбор в пользу компании, обеспечивающей отличный клиентский сервис. Другими словами, если ваша стратегия обслуживания эффективна, ваши клиенты будут поддерживать ваш бренд всеми силами.
- Рентабельность: не секрет, что привлечение нового клиента обходится в 6-7 раз дороже, чем удержание текущего. Следовательно, сосредоточение внимания на вашей текущей базе постоянных клиентов имеет логический и практический смысл.
- Лучшая рентабельность инвестиций: данные Dimensional Research показывают, что 52% потребителей сделали дополнительную покупку у компании после положительного опыта обслуживания. Очевидно, хороший клиентский сервис приводит к росту прибыли.
Вывод: обновление и пересмотр стратегии обслуживания клиентов является необходимым условием для любой компании, особенно в чрезвычайно конкурентной бизнес-среде. Компаниям необходимо постоянно анализировать и контролировать то, как они выглядят в глазах клиентов. Ниже будут рассмотрены самые распространенные подводные камни и ошибки клиентского опыта, которых следует избегать.
Метод 1: T-Shirt Sizes (Размеры футболки)
- В качестве единицы измерения в этой технике используется размер футболки: XS, S, M, L, XL. Команда принимает решение о размере той или иной пользовательской истории в ходе совместной открытой дискуссии. В случае неопределенности, возможно применение голосования. При желании можно договориться о соотношении «размеров», например, S это до 2 XS, M это до 2 S и так далее.
- Как правило первые несколько задач оцениваются предварительно. Далее начинает вырисовываться картина о степени декомпозиции историй. В итоге мы находим самые мелкие относительно остальных задачи и они принимаются за XS . После этого остальные задачи оцениваются с точки зрения насколько они больше XS. В зависимости от этого им присваивается определенный размер S, M, L или XL.
- Также можно договориться, что у нас есть, например, большой размер XXL. Присвоение истории этого размера говорит, что на самом деле мы не можем оценить задачу и она нуждается в дальнейшей декомпозиции и\или уточнении.
- Данная техника является довольно быстрой и ее можно использовать для оценки большого количеством user story за одну сессию. С ее помощью вполне реально за час оценить 15-20 историй.
XSS на примере
Попробуем взглянуть на проблему с практической точки зрения. Создадим демонстрационное приложение и на реальном примере узнаем, что подразумевается под XSS. В качестве демонстрационного приложения сделаем простую форму для ввода имени. Пользователь вводит имя, отправляет форму, и в параграфе появляется текст с приветствием пользователя. Приложение максимально простое, но оно прекрасно проиллюстрирует проблему:
Попробуйте открыть страницу в браузере и протестировать приложение. Убедитесь, что всё работает так, как и было запланировано.
В качестве теста мы ввели имя «Igor», и оно отобразилось в параграфе. Приложение работает так, как мы и ожидаем. Теперь давайте вместо имени введём на первый взгляд безобидную строку:
Нажмите кнопку «Отправить». На этот раз в параграфе отобразится «Привет, !», но в довесок к этому вы увидите модальное окно с текстом «xss». Мы внедрили в страницу сторонний JavaScript-код. В примере он показывает бесполезное модальное окно, но вы понимаете, что он может делать намного больше. Выше мы обсуждали несколько негативных сценариев.
Рассмотрим ещё один пример и разберёмся, как выглядит внедрение XSS изнутри. Представим, что вы разрабатываете какой-нибудь форум любителей аквариумных рыбок. Пусть схематично его разметка выглядит так:
Простая разметка — ничего необычного. Один из пользователей, который создал эту тему для обсуждения выбрал при регистрации необычное имя. Вот такое:
Что произойдёт, если другой участник обсуждения просмотрит эту тему? Разметка страницы начнёт выглядеть следующим образом (отформатировано для читабельности):
Визуально на странице ничего не изменится. Всё то же безумное объявление, но это лишь на первый взгляд. Экзотичное имя пользователя (то самое с кодом) содержало закрывающий тег . Выходит, что на этом описание элемента с именем пользователя заканчивается. За ним следует тег c JavaScript кодом, который браузер вынужден исполнить.
Выполнение этого кода приведёт к отправке идентификатора сессии на сервер злоумышленника (). Получив идентификатор, злоумышленник сможет подставить его себе и войти в сервис от имени пользователя. Дальше можно изменить профиль (если сервис позволяет это сделать без ввода пароля) и сделать другие деструктивные действия.
Недостатки Agile
Наряду с преимуществами Agile, имеются и некоторые недостатки. С Agile легко потерять чувство равновесия. В разработке программного обеспечения нет волшебной пилюли или бесплатного сыра. Если вы хотите принять гибкие принципы, вы должны быть уверены, что менеджмент и команда понимают все правила. Они должны также признать, что требования заказчика могут быстро стать подводными камнями. Вот пять главных недостатков.
1. Меньше предсказуемости
Для некоторых программных продуктов разработчики не могут в полной мере количественно оценить требуемые усилия, особенно в начале жизненного цикла разработки крупных продуктов. Команды, не имеющие опыта гибкой разработки, боятся этих неизвестных. Этот страх приводит к разочарованию, плохим практикам и часто к плохим решениям. Более регламентированный каскадный процесс (или процесс водопада) позволяет легко определить количество усилий, времени и стоимости поставки конечного продукта.
2. Больше времени и приверженности
Тестировщики, клиенты и разработчики должны постоянно взаимодействовать друг с другом. Потребуются многочисленные беседы лицом к лицу, так как они являются лучшей формой общения. Все участвующие в проекте люди должны тесно сотрудничать. Ежедневно клиенты должны быть доступны для оперативного тестирования и утверждения на каждом этапе, так чтобы разработчики смогли отметить его как выполненный, прежде чем перейти к следующей функции. Благодаря этому продукт лучше соответствует ожиданиям пользователей, но процесс является обременительным и отнимает много времени. Он требует больше времени и энергии всех участников.
3. Повышенные требования к клиентам
Принципы Agile требуют тесного сотрудничества и активного участия пользователя. Хотя это интересная и полезная система, она требует большего участия клиентов для успешного завершения проекта. Клиенты должны пройти обучение, чтобы помочь в разработке продукта. Любой недостаток участия клиента будет влиять на качество программного обеспечения и конечный успех.
4. Отсутствие необходимой документации
Поскольку требования к программному обеспечению уточняются как раз во время разработки, документация не слишком подробна. Это означает, что если к команде присоединятся новые члены, они не будут знать подробностей, некоторых особенностей или как они должны действовать. Это создает недоразумения и трудности.
5. Проект легко сбивается с пути
Этот метод не требует подробного планирования для начала работы и предполагает, что потребности заказчика постоянно меняются. Такие недостаточные исходные данные могут ограничить использование Agile. Затем, если обратная связь заказчика не ясна, разработчик может сфокусироваться на разработке в неправильном направлении. Кроме того, имеется опасность неконтролируемого расширения границ проекта, и постоянно меняющийся продукт становится бесконечным.
Kanban и SCRUM — самые популярные agile-методики
Принципы Agile проявляются в таких методиках, как PRINCE2, SAFe, LeSS, Six Sigma, XP, ECM, но самыми активно используемыми являются Kanban и SCRUM.
Kanban помогает разложить проект на задачи и организовать рабочий процесс так, чтобы равномерно распределять нагрузку между членами команды и контролировать дедлайны отдельных тасков. Такой подход исключает ситуации, когда, например, бэкендеры завалены работой, а фронтендеры простаивают без дел.
Благодаря доскам вся работа становится наглядной для руководителей и исполнителей. Становится легко находить слабые места процесса и оптимизировать их.
Менеджмент по SCRUM подразумевает разложение проекта на отдельные отрезки — спринты. Спринты фиксируются по времени, а после каждого из них есть конкретный промежуточный результат.
SCRUM позволяет точнее планировать и эффективнее контролировать этапы работы.
Если говорить о популярности методик в России, то можно обратиться к исследованию ScrumTrek. Из опроса более 1000 предпринимателей в 2021 году стало известно, что лидером из Agile-практик у нас является SCRUM, но Kanban продолжает активно набирать популярность.
Подробнее разберём каждую из методик.
SCRUM: спринты для поддержки ритмичной работы
В рамках SCRUM спринты фиксируются по времени: обычно это 2-4 недели. Из-за этого у команды появляется ритм — важный аспект методики.
Спринт состоит из четырёх последовательных этапов;
- Планирование. Выбор приоритетных задач и тасков, которые можно успеть сделать за время спринта;
- Выполнение. Непосредственно работа команды над задачами;
- Релиз. Представление результатов работы команды. В идеале, к моменту каждого релиза проект должен быть полезным для пользователя и готовым к использованию;
- Ретроспектива. Обсуждение результатов и возникших проблем по ходу спринта. Все вместе думают, как улучшить работу и сделать больше в следующем спринте.
Так, каждый отдельный спринт проекта вы можете отслеживать и в будущем оптимизировать. Увидеть, какие задачи требуют больше времени и почему.
Чаще всего скрам применяют в работе со сложным программным обеспечением и проектами, требующими итерационных подходов.
Благодаря этому agile-методу управления проектами серьёзно повышается производительность команды и сокращаются временные затраты на достижение итоговой цели. Кроме того, работу легче адаптировать к изменениям и контролю при меньших энергозатратах со стороны руководителя.
Kanban: доски для визуализации задач
Смысл методики канбан — придать рабочему процессу максимальную прозрачность и равномерно распределить нагрузки среди исполнителей на проекте. Делается это при помощи досок с задачами, разделёнными по направлениям или этапам работы.
Как выглядит kanban-доска в Shtab
На канбан-доске обычно бывает 3 столбца:
- общий список задач, план — то, что надо сделать (to do/backlog/открыто);
- список текущих дел — то, что сейчас находится в работе (doing/in progress/в процессе);
- завершённые задачи (done/готово).
Карточки с задачами перемещаются слева направо. Столбцов может быть больше, если этого требует процесс. Например, у нас в команде разработчиков Shtab это: «Бэклог», «Дизайн», «Разработка», «Код ревью», «Ожидает релиз», «Продакшн».
Дополнительное преимущество kanban — мотивация участников на постоянное развитие и активное взаимодействие между собой для достижения личных и общих целей.
Основные принципы Kanban:
- Визуализация задач. Это помогает увидеть накладки, ошибки, недочёты и оперативно их исправлять, а также планировать работу отдельно взятых специалистов и всей команды в целом;
- Одновременная работа над тасками. На одной задаче могут быть сразу задействованы, например, маркетолог, копирайтер, таргетолог. Это обеспечивает распределение нагрузки и оперативное продвижение проекта к планируемому результату;
- Контроль времени на задачу. Чёткие дедлайны оптимизируют процесс и экономят время, поддерживают дисциплину в команде.
Kanban полезен как в IT-области, так и в бизнес-сфере. В России канбан используют СДЭК, HeadHunter, банк «Санкт-Петербург», Ростелеком, «Сбер», «Авито» и многие другие лидеры своих рынков.
Основные проблемы по теме «Agile-методологии разработки программного обеспечения»
1. Отсутствие четкого планирования проекта
Agile-методологии предоставляют гибкую возможность изменять требования и задачи во время разработки, что может привести к отсутствию четкого плана и непредсказуемости выполнения проекта.
2. Проблемы с управлением командой
Agile-методологии требуют активного управления командой разработчиков, что может быть сложным в организациях с большим числом участников и различными ролями.
3. Сложности в оценке объема работ
Планирование в Agile основано на непрерывных итерациях, что может привести к сложностям в оценке объема работ и времени, необходимого для их выполнения.
4. Проблемы с масштабированием
Agile-методологии были разработаны для малых и средних проектов, и могут столкнуться с проблемами при масштабировании на большие проекты или организации.
5. Необходимость в постоянной коммуникации
Agile-методологии требуют открытого и активного обмена информацией и коммуникации между участниками проекта, что может быть сложно в условиях удаленной работы или разных часовых поясов.
1. Что такое Agile-методологии разработки программного обеспечения?
Agile-методологии разработки программного обеспечения — это набор подходов и методик, используемых для управления проектами разработки программного обеспечения
Они отличаются от классических водопадных методологий тем, что акцентируют внимание на гибкости, сотрудничестве с заказчиком и быстрой адаптации к изменяющимся требованиям
2. Какие преимущества Agile-методологии разработки программного обеспечения?
Преимущества Agile-методологии разработки программного обеспечения включают:
- Большая гибкость и способность быстро адаптироваться к изменениям;
- Более высокая степень участия заказчика;
- Улучшенное качество продукта благодаря регулярным проверкам и обратной связи;
- Более эффективное распределение ресурсов и управление рисками;
- Более высокая скорость доставки работающего программного обеспечения.
3. Какие методологии Agile-разработки наиболее популярны?
Наиболее популярные методологии Agile-разработки включают:
Scrum: фреймворк для управления разработкой, основанный на итеративно-инкрементальном подходе; Kanban: система визуализации рабочего процесса, фокусирующаяся на постоянном потоке работ; Extreme Programming (XP): методология, акцентирующая внимание на качестве, обратной связи и частых интеграциях кода; Lean: подход к разработке, основанный на принципах, разработанных в японской автомобильной промышленности; Crystal: семейство гибких методик, адаптирующихся к требованиям проекта и команды. Agile-методологии разработки программного обеспечения представляют собой набор подходов и принципов, направленных на гибкую и эффективную разработку программных продуктов
Agile-методологии разработки программного обеспечения представляют собой набор подходов и принципов, направленных на гибкую и эффективную разработку программных продуктов.
Одной из главных тенденций в Agile-разработке является рост популярности и применения этих методологий в отрасли. Все больше компаний осознают преимущества Agile в сравнении с традиционными моделями разработки, такими как Waterfall. Agile позволяет быстрее адаптироваться к изменениям требований, улучшает коммуникацию в команде и повышает качество конечного продукта.
Другой важной тенденцией является развитие и внедрение новых подходов и практик в Agile-разработку. Например, DevOps — это методология, объединяющая разработку и операционное обслуживание программного обеспечения, что позволяет более быстро доставлять итерации продукта в производство
Также набирает популярность Lean Startup — концепция разработки, основанная на быстром создании и проверке прототипов продукта, с целью минимизации рисков и обучении отзывам рынка.
Перспективы Agile-методологий весьма оптимистичны. С ростом доступности различных инструментов и технологий, разработчики получают больше возможностей для эффективной практики Agile-подходов. Кроме того, все больше компаний понимают, что Agile-разработка является ключевым фактором успешного и инновационного развития бизнеса.