Экстремальное программирование
Как разработчики и как профессиональные инженеры, вы знакомы с клиентами 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, коллективная собственность и рефакторинг.