Согласно Wikipedia, парное программирование — техника, при которой исходный код создается парами людей, программирующих одну задачу, сидя за одним рабочим местом. Один из них («ведущий») управляет компьютером и в основном думает над кодированием в деталях, а другой («штурман») сосредоточен на картине в целом и непрерывно просматривает код, производимый первым программистом. Время от времени они меняются ролями.
Главный аргумент против заключается в повышении расходов. Зачем платить двум программистам за то, что может сделать один? Однако при этом упускается из виду аспект обучения. По мнению Горовица, возможность повысить квалификацию, овладеть новыми навыками и является главным преимуществом парного программирования.
Ему довелось воспользоваться этим методом в ходе одного проекта, для которого потребовался опыт разработки облачного ПО, отсутствующий у сотрудников Perforce Software. Консультанты из Pivotal Labs предложили парное программирование. Была собрана команда, включающая по четыре сотрудника из каждой компании, причем состав пар менялся каждый день, чтобы люди могли получать разные навыки.
По наблюдению Горовица, единственная повторяющаяся проблема заключалась в том, что кто-нибудь переставал объяснять свои действия и начинал программировать молча, не обращая внимания на партнера. Проблема быстро разрешалась без постороннего вмешательства. Бывали конечно и разногласия, но они как правило являлись конструктивными и решались путем обсуждения.
Однако оказалось, что привыкнуть к такому стилю работы нелегко. Например, Горовицу для этого потребовалась неделя, причем самым тяжелым был первый день, после которого он с трудом нашел силы пойти домой. Потом стало полегче, но все равно участники проекта чувствовали сильное переутомление из-за напряженной работы. Было трудно успевать за коллегой, который сидит рядом, программирует и одновременно объясняет новые концепции, связанные с языком, процессами и инструментами.
Кроме того, такой стиль принес и другие бонусы помимо начальной задачи обучения разработке облачного ПО. Так, парная работа приводит к тщательному изучению кода с разных сторон и точек зрения, что невозможно в случае индивидуальной разработки. Ведь качество кода возрастает, когда вам нужно объяснять и защищать свои решения или когда у вас есть возможность попросить коллегу остановиться и объяснить свои действия.
Другим преимуществом является страховка от несчастного случая. Даже если с одним из участников команды что-нибудь случится, другие его легко заменят, так как знакомы с инструментами, процессами и проектом в целом. Поэтому несмотря на дополнительные инвестиции с точки зрения времени и человеческих ресурсов парное программирование обеспечивает компании отдачу.
После завершения этого проекта коллегам Горовица настолько понравился такой способ работы, что они стали его применять везде, где только можно. Но оказалось, что он годится далеко не всегда и теперь используется в ограниченном объеме.
Горовиц рекомендует ИТ-директорам и руководителям отделов разработки не применять к парному программированию подход «все или ничего», а использовать его, если нужно расширить набор навыков программирования и знаний у своей команды. К тому же применение такого подхода может дать программистам толчок к переходу от индивидуального стиля работы к более открытому и коллективному. А чем шире в команде развито сотрудничество, тем успешнее результаты.
isicad.ru: несколько добавленных ссылок
Phil Horovitz. Adventures In Pair ProgrammingAgile software development
Гибкая методология разработки
Парное программирование
Pair programming
Computer programmer 'quadruples productivity' after hiring a woman to slap him in the face every time she catches him looking at Facebook