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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Преимущества парного программирования[править | править код]

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

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

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

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

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

Цель второго участника — привести код в исходное состояние, то есть исправить код так, чтобы он проходил все тесты.
При данном подходе сокращается число ситуаций, в которых требуется принять решение о передаче клавиатуры, снижается вероятность возникновения разногласий.
Процесс написания кода становится похожим на игру в пинг-понг:

  • первый участник пишет тест;
  • второй — изменяет код для успешного прохождения теста, пишет ответный тест и отдаёт клавиатуру обратно.

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

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

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

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

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

Литература[править | править код]

  • 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. — arXiv:1306.4245.