Парное программирование

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Pair Programming 3.jpg

Па́рное программи́рование — техника программирования, при которой исходный код создаётся парами людей, программирующих одну задачу, сидя за одним рабочим местом. Один программист («ведущий») управляет компьютером и, в основном, думает над кодированием в деталях. Другой программист («штурман»[1]) сосредоточен на картине в целом и непрерывно просматривает код, производимый первым программистом. Время от времени они меняются ролями, обычно, каждые полчаса.

Преимущества[править | править вики-текст]

Повышение дисциплины
Программисты в паре чаще «делают то, что нужно» и реже устраивают длинные перерывы.
Лучший код
Партнёры в паре менее склонны к неудачным решениям и производят более качественный код.
Гибкий поток работы
Высокий боевой дух
Коллективное владение кодом
Коллективное владение (пары меняются) означает, что каждый несёт ответственность за весь код. Таким образом, каждый вправе вносить изменения в любой участок кода. Парное программирование поддерживает эту практику: работая в парах, все программисты получают доступ ко всем частям кода. Важное преимущество коллективного владения кодом заключается в том, что оно ускоряет процесс разработки, поскольку, при появлении ошибки, её может устранить любой программист.
Наставничество
Каждый, даже начинающий программист, знает что-то, чего не знают другие. Парное программирование — безболезненный способ распространить эти знания.
Командный дух
Меньше прерываний
Экономическая обоснованность
Высокое качество дизайна
Обратная связь
Непрерывность проверки кода
Ошибки обнаруживаются сразу же, как только появились, это позволяет экономить и время, и деньги. Команда разработчиков сплачивается, что позволяет закончить работу раньше и в лучшем качестве.
Обучение
Программисты постоянно обмениваются знаниями.

Недостатки[править | править вики-текст]

Отсутствует возможность сосредоточиться
Непрерывно отвлекают

Разновидности[править | править вики-текст]

Пинг понг программирование[править | править вики-текст]

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

Удалённое (дистанционное) парное программирование[править | править вики-текст]

Удалённое (дистанционное) парное программирование, также известное как виртуальное парное программирование или распределённое парное программирование, это разновидность парного программирования, в котором два программиста находятся на расстоянии друг от друга[2], работая через средство совместного редактирования кода, удалённый рабочий стол, или посредством плагина для интегрированной системы разработки. Удалённое парное программирование добавляет дополнительные трудности, отсутствующие в обычном парном программировании, такие как дополнительные задержки координации, зависимость от более тяжеловесных инструментов управления задачами вместо таких упрощённых вариантов, как карточки с индексами, и отсутствие невербальных средств общения, приводящее к непониманию и конфликтам в таких вопросах, как "чья сейчас клавиатура".

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Касьянова, Любовь Парное программирование: эффективная работа или мучение? (рус.). CNews Аналитака (07.09.12). Проверено 24 февраля 2013. Архивировано из первоисточника 26 февраля 2013.
  2. Nick V. Flor Globally distributed software development and pair programming (англ.) // Communications of the ACM. — 2006. — Т. 49. — № 10. — С. 57-58. — DOI:10.1145/1164394.1164421

Литература[править | править вики-текст]

  • Omar S. Gómez, José L. Batún, Raúl A. Aguilar Pair versus Solo Programming -- An Experience Report from a Course on Design of Experiments in Software Engineering (англ.) // International Journal of Computer Science Issues. — 18 июня 2013. — arΧiv1306.4245