Парное программирование
Па́рное программи́рование — техника программирования, при которой исходный код создаётся парами людей, программирующих одну задачу, сидя за одним рабочим местом.
Один программист («ведущий») управляет компьютером и, в основном, думает над кодированием в деталях.
Другой программист («штурман»[1]) сосредоточен на картине в целом и непрерывно просматривает код, производимый первым программистом. Время от времени они меняются ролями, обычно, каждые полчаса.
Разновидности парного программирования
Пинг-понг программирование— разновидность парного программирования, адаптированная для метода разработки через тестирование. В каждый момент времени клавиатурой пользуется только один участник.
При пинг-понг программировании код всегда находится в одном из двух состояний:
- успешно проходит все тесты
- есть хотя бы один тест, который не выполняется
В первом состоянии разработчики должны сделать выбор, что они будут делать (писать новый тест, корректировать существующий тест или проводить рефакторинг кода) и кто это будет делать.
По завершении рефакторинга, код всегда должен оказаться в рабочем состоянии и должен проходить все тесты.
Написание теста или его изменение, может привести код как к первому, так и ко второму состоянию:
- Первая ситуация означает, что был написан (или улучшен) тест на уже существующую функциональность (тем самым могла увеличиться степень покрытия кода тестами).
- Во втором случае, когда появился хотя бы один тест, который не проходит код, клавиатура обязательно передаётся другому участнику от того, кто писал тест.
Цель второго участника — привести код в исходное состояние, то есть исправить код так, чтобы он проходил все тесты.
Процесс написания кода становится похожим на игру в пинг-понг:
- первый участник пишет тест;
- второй — делает его проходящим, пишет ответный тест и отдаёт клавиатуру обратно.
Удалённое (дистанционное) парное программирование
Также известное как виртуальное парное программирование или распределённое парное программирование, это разновидность парного программирования, в котором два программиста находятся на расстоянии друг от друга[2], работая через средство совместного редактирования кода, удалённый рабочий стол, или посредством плагина для интегрированной системы разработки.
Трудности удаленного парного программирования
Удалённое парное программирование добавляет трудности, отсутствующие в обычном парном программировании. Такие как: дополнительные задержки координации, зависимость от более тяжеловесных инструментов управления задачами вместо упрощённых карточек с индексами, отсутствие невербальных средств общения, приводящее к непониманию и конфликтам в таких вопросах, как «чья сейчас клавиатура».
Преимущества парного программирования
- Повышение дисциплины
- Программисты в паре чаще «делают то, что нужно» и реже устраивают длинные перерывы.
- Лучший код
- Партнёры в паре менее склонны к неудачным решениям и производят более качественный код.
- Коллективное владение кодом
- Каждый несёт ответственность за весь код. Каждый вправе вносить изменения в любой участок кода. Парное программирование поддерживает эту практику: работая в парах, все программисты получают доступ ко всем частям кода. Важное преимущество коллективного владения кодом заключается в том, что оно ускоряет процесс разработки, поскольку, при появлении ошибки, её может устранить любой программист.
- Непрерывность проверки кода
- Ошибки обнаруживаются сразу же, как только появились, это позволяет экономить и время, и деньги. Команда разработчиков сплачивается, что позволяет закончить работу раньше и в лучшем качестве.
- Наставничество
- Каждый, даже начинающий программист, знает что-то, чего не знают другие. Парное программирование — безболезненный способ распространить эти знания.
- Обучение
- Программисты постоянно обмениваются знаниями
Одним словом, технология парного программирования экономически обоснована, повышает командный дух, а гибкий поток работы дает активную обратную связь, что ведет к высокому качеству дизайна.