Подход «Парное программирование» представляет собой сотрудничество двух программистов на одной рабочей станции (один экран, клавиатура и мышь для обоих). Программист, работающий на клавиатуре, обычно называется «водителем», второй программист, также активно участвующий в задаче программирования, но более сосредоточенный на общем направлении, называется «навигатором»; ожидается, что программисты меняются ролями каждые несколько минут.
Также известно как
Просто «парное»; также используются фразы «парное программирование» и «программирование в парах», но менее часто.
Распространенные ошибки
- Оба программиста должны активно взаимодействовать с задачей во время сеанса парной работы, иначе ожидать пользы не стоит.
- Простое, но часто возникающее возражение состоит в том, что парное программирование «удваивает затраты»; это недоразумение, основанное на равнозначности программирования с печатью текста. Однако следует понимать, что это худший вариант плохо примененного парного программирования.
- По крайней мере, водитель и, возможно, оба программиста должны поддерживать текущий комментарий; парное программирование также предполагает «громкое программирование» — если водитель молчит, навигатор должен вмешаться.
- Парное программирование нельзя успешно навязать людям, особенно если в отношениях возникли проблемы, включая наиболее обыденные, такие как личная гигиена. Сначала следует решить эти проблемы!
Происхождение
В попытке наделить парное программирование аурой необходимости, если не святости, были использованы имена различных знаменитостей; анекдоты о том, как Джон Фон Нейман, Фред Брукс, Джерри Вайнберг, Ричард Габриэль или Эдсгер Дейкстра использовали эту практику, увлекательны, но иногда трудно подтвердить. Тем не менее, следующая временная шкала верифицируемых источников указывает на то, что парное программирование в своей современной форме существует задолго до движения Agile:
1992 год
Термин «Динамический дуэт» был придуман Ларри Константином, рассказывая о посещении компании Whitesmiths Inc., производителя компиляторов, основанной П. Дж. Плаугером, одним из авторов языка C: «У каждого терминала было два программиста! Конечно, на каждой клавиатуре действительно печатал только один программист, но остальные заглядывали через его плечо.» Whitesmiths существовали с 1978 по 1988 год.
1993 год
Раннее эмпирическое исследование «Преимущества сотрудничества для студенческих программистов» от Вильсона и др. указывает на преимущества парного программирования для конкретных задач программирования. Последующие исследования более обширны и были проведены с желанием «подтвердить» парное программирование, когда оно уже стало популярным благодаря экстремальному программированию.
1995 год
Паттерн «Разработка в парах» получил краткое описание в форме александрийского паттерна в главе Джима Коплиена «Язык паттернов генеративного процесса разработки» из первой книги о паттернах «Языки паттернов проектирования программ».
1998 год
В статье «Chrysler идет на крайности» парное программирование представлено как одна из основных практик команды C3; позже оно формально описано как одна из оригинальных «двенадцати практик» экстремального программирования (XP).
2000 год (или ранее)
вводятся роли Водителя и Навигатора для объяснения парного программирования; самая ранняя известная ссылка — это сообщение на почтовом списке. Тем не менее, реальность этих ролей была оспорена, например, в статье Саллианн Брайант «Парное программирование и таинственная роль навигатора«.
2002 год
«Pair Programming Illuminated», Лори Уильямс и Роберт Кесслер, — первая книга, посвященная исключительно этой практике, она рассматривает ее теорию, практику и различные исследования до того времени.
2003 год
анонимная статья на C2 Wiki описывает Ping-Pong Programming, умеренно популярный вариант, сочетающий парное программирование с тестовым программированием.
2015 год
Джеймс Коплиен публикует «Две головы лучше одной«, который предоставляет обзор истории парного программирования и прослеживает его истоки до середины 1980-х, если не раньше.
Уровни навыков
Как указано выше, одной из основных проблем, мешающих эффективному парному сотрудничеству, является пассивность. При одновременном использовании тестового программирования один из вариантов, называемый «пинг-понг программированием», позволяет чаще менять роли: один программист пишет неудачный модульный тест, затем передает клавиатуру другому, который пишет соответствующий код, затем переходит к новому тесту. Этот вариант может использоваться чисто для педагогических целей или опытными программистами как игровой вариант.
- Начинающий: способен участвовать как навигатор, в частности, вмешиваться в нужный момент способен участвовать как водитель, в частности, объяснять код при его написании
- Средний: может определить правильный момент, чтобы уступить клавиатуру и менять роли может определить правильный момент для «забирания» клавиатуры и смены ролей
- Продвинутый: способен «влиться» в другую пару, работающую над задачей, и плавно перейти к роли навигатора
Ожидаемые выгоды
- увеличение качества кода: «громкое программирование» способствует более ясной формулировке сложностей и скрытых деталей в задачах кодирования, снижая риск ошибок или заблуждения
- лучшее распространение знаний среди команды, особенно когда разработчик, не знакомый с компонентом, работает в паре с тем, кто знает его намного лучше
- лучший перенос навыков, поскольку младшие разработчики усваивают микротехники или более широкие навыки от более опытных членов команды
- крупное сокращение усилий по координации, так как существует N/2 пар для координации вместо N отдельных разработчиков повышенная
- устойчивость пары к прерываниям по сравнению с индивидуальным разработчиком: когда один из членов пары должен реагировать на внешний сигнал, другой может оставаться сосредоточенным на задаче и помочь восстановить фокус после
Потенциальные затраты
Пока что эмпирические исследования не дали определенных результатов ни по выгодам, ни по затратам, но обычно приводятся цитируемые оценки затрат на парное программирование, составляющие 15% относительно индивидуальной работы. Эти затраты, как утверждается (снова с некоторой эмпирической поддержкой, но не совсем заключительной), компенсируются улучшением качества кода, что, как правило, приводит к значительным штрафам за обслуживание в долгосрочной перспективе.
Научные публикации
Теоретические
- Среди более интересных теоретических статей следует отметить те, которые продолжают этнографический подход, инициированный, среди прочих, Саллианн Фрейденберг (бывшая Брайант), с помощью близкого рассмотрения программистов в их повседневной работе:
- Как на самом деле работает парное программирование оценивает некоторые работы, направленные против различия «водитель/навигатор».
Эмпирические
- «Совместный процесс программирования«, докторская диссертация Лори Уильямс, одно из более известных исследований по данной теме, сообщает об увеличении качества и отсутствии статистически значимых дополнительных затрат.
- Эффективность парного программирования: мета-анализ, обзор 18 крупных эмпирических исследований, сообщающих об увеличении качества и сжатии графика, но с некоторыми дополнительными затратами; сжатие графика в основном для более простых задач, выполняемых младшими разработчиками, что также коррелирует с более низким качеством.
- Большинство эмпирических исследований (14 из вышеупомянутых 18) сталкиваются с одним общим недостатком, часто называемым препятствием для обобщения выводов: они проводятся с «удобными выборками» выпускников или студентов, а не с профессионалами в реалистичных условиях работы.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.