Инженерная практика: Парное программирование (Pair Programming)

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

Исследования показывают, что работа в паре делает либо с такой же скоростью, как и по одиночке, либо немного (15%) медленнее. Зато код получается намного качественней, содержит меньше ошибок (60%) и технических долгов.

Преимущества использования данного подхода:

  1. Обмен опытом: Часто бывает, что сидя в паре вы узнаете про пару новых горячих клавиш, интересные утилиты для ускорения работы. В любом случае, наблюдая за тем, как программируют другие вы сами постоянно учитесь.
  2. Знания о системе: Постоянная смена пар способствует распространению знаний о разных частях системы внутри команды. Это дает возможность понимать как система развивается, улучшать дизайн системы, не дублировать логику.
  3. Коллективное владение кодом: Когда все участвуют в написании всех частей системы, то не может идти речи о персональном владении классом или сборкой.
  4. Наставничество и обучение: Все мы когда-то начинали программировать. Как показала практика самое простое вливание в проект происходит в процессе парного программирования.
  5. Больше общения: Общение внутри команды помогает выстраивать доверительные отношения. Стендапы и ретроспективы добавляют в общения в повседневную работу, но это не сравнить с возможностями парного программирования.
  6. Стандарты кодирования: Сидя в паре, постоянно передавая клавиатуру и меняя пары, программисты распространяют знания о том, какие стандарты кодирования приняты на проекте. Вам уже не понадобится прикручивать автоматические инструменты для проверки качества кода.
  7. Улучшение дисциплины: Сидя в паре, хочется показать свою заинтересованность и уровень подготовки партнеру. И довольно трудно временно переключиться на соц. сети, чтобы полистать последние забавные картинки.
  8. Сопряжение потока: Один программист спрашивает у другого «Что мы сейчас решаем?» и они оба начинают погружаться в задачу. Такой подход может приводить к сопряжению состояния потока, что увеличивает продуктивность в разы.

Недостаток:

  1. Отсутствует возможность сосредоточиться, т к в процессе работы непрерывно отвлекают

Виды парного программирования:

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