Экстремальное программирование

Как разработчики и как профессиональные инженеры, вы знакомы с клиентами Extreme Programming, как определено в "версии 1" Кента Бека. Какой из этих 12 основных принципов, по вашему мнению, вам либо позволили практиковать, либо, по крайней мере, вы являетесь частью вашей нынешней работы или других?

* Pair programming[5]
* Planning game
* Test driven development
* Whole team (being empowered to deliver)
* Continuous integration
* Refactoring or design improvement
* Small releases
* Coding standards
* Collective code ownership
* Simple design
* System metaphor
* Sustainable pace

С точки зрения инженеров, я чувствую, что основные инженерные принципы XP значительно превосходят все, чем я занимался. Каково ваше мнение?

5 ответов

Мы следуем этим практикам, которые вы упомянули:

  • Планирование игры
  • Тестовая разработка
  • Вся команда (имея возможность доставить)
  • Непрерывная интеграция
  • Рефакторинг или улучшение дизайна
  • Небольшие релизы
  • Стандарты кодирования
  • Коллективный код собственности
  • Простой дизайн

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

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

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

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

  • Парное программирование [5]

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

  • Планирование игры

Да.

  • Тестовая разработка

Легко продать руководству. Однако сложная часть управления - это добавление времени. Многие менеджеры считают, что программирование Extreme и Agile сэкономит им время. Они не экономят время, чтобы доставить вам что-то. На самом деле сбор постоянных требований к тестированию добавляет усилий. Что он делает, так это быстрее получает клиенту то, что он хочет.

  • Вся команда (имея возможность доставить)

Определенно, это удивительный аспект Xtreme.

  • Непрерывная интеграция

В конце каждой итерации (спринта) происходит полная интеграция. Ежедневной полной интеграции не происходит.

  • Рефакторинг или улучшение дизайна

Ваше первое усилие редко бывает лучшим. Так что да, я считаю, что Xtreme постоянно дает лучшие и лучшие решения.

  • Небольшие релизы

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

  • Стандарты кодирования

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

  • Коллективный код собственности

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

  • Простой дизайн

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

  • Системная метафора

Не уверен, что здесь имеется в виду?

  • Устойчивый темп

Скорость команды - это задача, которая может быть оценена только с помощью правильных метрик. Метрики должны быть сохранены на оценках задач и продолжительности выполнения задач.

  • Вся команда (имея возможность доставить)
  • Небольшие релизы
  • Стандарты кодирования
  • Коллективный код собственности

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

Мы сделали все, кроме небольших релизов, и это было здорово. Я не могу представить себе работу по-другому. Исходя из моего опыта, принципы, которые я ценю больше всего:

  • Непрерывная интеграция (с солидным набором тестов).
  • Коллективный код собственности.
  • TDD
  • Расширение возможностей команды и принятие решений.
  • Стандарты кодирования.
  • Рефакторинг.
  • Устойчивый темп.

Остальные тоже очень хороши, но я обнаружил, что могу жить без сопряжения, пока у нас есть TDD, коллективная собственность и рефакторинг.

Другие вопросы по тегам