
XP
Методология "Extreme Programming" (XP) - это одна из Agile-методологий, используется исключительно для разработки программного обеспечения.
XP основана на принципах обмена знаниями в команде, частых итерациях и тестировании. Методология включает в себя 25 практик, которые направлены на улучшение качества кода, ускорение процесса разработки и повышение удовлетворенности клиентов.
В целом, XP лучше всего подходит для проектов, или отдельных их компонентов, где требуется гибкость, быстрота, качество и высокий уровень взаимодействия между участниками процесса разработки и заказчиком.
Scroll
Методология ориентирована на небольшие, но высокоэкспертные (Senior) команды до 10-12 человек, которые должны выполнять самые сложные, технологичные и требовательные к качеству проекты.
Мы рекомендуем эту методологию для таких проектов, как движки игр, модели AI, ядра фреймворков, компиляторы и т.д. Методология отлично проявляет себя везде, где есть относительно небольшие, но сложные с точки зрения технологичности и масштабности задач проекты, или отдельные их части.
Отдельные практики XP взяты на вооружение сообществом разработчиков по всему миру и успешно применяются во подавляющем большинстве существующих проектов.
- Перечень практик XP:
- Planning game: Команда разработки и заказчик взаимодействуют, чтобы определить требования к проекту и планировать их выполнение на короткие периоды времени.
- Small releases: Проект выпускается в маленьких инкрементах, каждый из которых добавляет новую функциональность к проекту.
- Metaphor: Использование образов и метафор, чтобы помочь команде и заказчику лучше понять проект и его цели.
- Simple design: Простой и понятный дизайн, который легко поддерживать и модифицировать.
- Testing: Автоматическое тестирование на всех уровнях разработки (от модульных до интеграционных) и интенсивное тестирование вручную.
- Pair programming: Разработчики работают в парах над одной задачей, чтобы повысить качество и производительность кода.
- Collective ownership: Каждый член команды может изменять любую часть кода проекта, что позволяет быстро реагировать на изменения требований.
- Continuous integration: Частая интеграция нового кода в основную ветку проекта, чтобы избежать конфликтов и обеспечить быстрое выявление ошибок.
- 40-hour work week: Команда работает над проектом только 40 часов в неделю, чтобы поддерживать высокую производительность и избежать перегрузки.
- On-site customer: Заказчик присутствует в офисе разработчиков, чтобы обеспечить более эффективное общение и быстрое принятие решений.
- Sustainable pace: Команда работает на стабильном и устойчивом темпе, чтобы избежать изнурения и сохранить высокую производительность на долгосрочной основе.
- Coding standards: Стандарты кодирования и руководство, которые помогают команде сохранять консистентность и качество кода.
- Refactoring: Улучшение кода путем упрощения, улучшения производительности и уменьшения сложности.
- Whole team: Каждый член команды работает вместе над общей целью, а не на разных этапах процесса разработки или в разных частях проекта. Каждый член команды имеет свои обязанности и ответственность, но все они работают вместе для достижения общей цели.
- Informative workspace: Рабочее место разработчика должно быть информативным, удобным и помогать им в работе.
- Energized work: Команда работает в приятной и мотивирующей среде, в которой есть удобные условия для работы. Например, комфортная температура, доступ к питьевой воде, естественному свету, здоровой еде и т.д. Это помогает снизить утомление и повысить продуктивность.
- Iteration demo: Каждый цикл разработки заканчивается демонстрацией результатов клиенту. В процессе демонстрации команда получает обратную связь от клиента, что помогает уточнить требования и понимание задачи.
- Slack: Наличие свободного времени в расписании участников команды помогает избежать чрезмерной занятости и стресса, а также даёт возможность расслабиться, пообщаться с коллегами и настроиться на работу.
- System metaphor: Использование общей метафоры позволяет всей команде понимать проект с одной точки зрения. Метафора помогает описывать проект и документировать его, а также облегчает коммуникацию между разработчиками и клиентами.
- Customer tests: Команда разрабатывает тесты, которые проверяют соответствие продукта требованиям клиента. Это помогает удостовериться, что продукт удовлетворяет потребности клиента и работает корректно.
- Root cause analysis: При возникновении проблем команда проводит анализ причин и рассматривает все аспекты, которые могли привести к возникновению проблемы. Это позволяет избежать повторения ошибок и повышает качество работы команды.
- Incremental design: Разработка продукта происходит постепенно и небольшими шагами. Это позволяет избегать больших ошибок и позволяет команде быстро реагировать на изменения требований клиента.
- Real customer involvement: Клиент непосредственно участвует в процессе разработки продукта и дает обратную связь команде. Это помогает команде понимать требования клиента и работать в соответствии с ними.
- Shared understanding - это практика, направленная на то, чтобы у всех участников проекта было общее понимание целей и задач проекта. Для достижения этого XP предлагает использовать различные инструменты, такие как коллективное обсуждение и демонстрация результатов, общее обучение, а также создание общей модели и архитектуры проекта.
- Automated acceptance tests - это автоматизированные тесты, которые проверяют, удовлетворяют ли продукты и функции требованиям заказчика и спецификации проекта. Они позволяют быстро обнаруживать ошибки и отклонения от требований, а также быстро вносить изменения в продукт. Эта практика помогает улучшить качество кода и повысить доверие заказчика к продукту.