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

редактировать
Парное программирование двух сотрудников, 2007 г.

Парное программирование - это гибкий метод разработки программного обеспечения, при котором два программиста работают вместе на одной рабочей станции. Один, драйвер, пишет код, а другой, наблюдатель или навигатор, просматривает каждую строку кода по мере ее ввода. Два программиста часто меняются ролями.

Во время обзора наблюдатель также рассматривает «стратегическое» направление работы, предлагая идеи для улучшений и возможные будущие проблемы, которые необходимо решить. Это сделано для того, чтобы водитель мог сосредоточить все свое внимание на «тактических» аспектах выполнения текущей задачи, используя наблюдателя в качестве подстраховки и ориентира.

СОДЕРЖАНИЕ

  • 1 Экономика
  • 2 Качество дизайна
  • 3 Удовлетворение
  • 4 Обучение
  • 5 Тимбилдинг и общение
  • 6 исследований
  • 7 Индикаторы неисполнения
  • 8 Варианты сочетания
  • 9 Программирование удаленной пары
  • 10 См. Также
  • 11 Источники
  • 12 Внешние ссылки

Экономика

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

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

Качество дизайна

Система с двумя программистами обладает большим потенциалом для генерации более разнообразных решений проблем по трем причинам:

  1. программисты привносят в задачу различный предыдущий опыт;
  2. они могут по-разному оценивать информацию, имеющую отношение к задаче;
  3. они по-разному относятся к проблеме в силу своих функциональных ролей.

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

Удовлетворение

В онлайн-опросе парных программистов в 2000 году 96% программистов заявили, что им больше нравится работать при парном программировании, чем при программировании в одиночку. Более того, 95% сказали, что они были более уверены в своей работе, когда программировали в паре.

Обучение

Знания постоянно делятся между парными программистами, будь то в индустрии или в классе. Многие источники предполагают, что учащиеся проявляют большую уверенность при программировании в парах, и многие узнают, от советов по правилам языка программирования до общих навыков проектирования. При «беспорядочном объединении в пары» каждый программист общается и работает со всеми другими программистами в команде, а не объединяется только с одним партнером, что приводит к распространению знаний о системе по всей команде. Парное программирование позволяет программистам изучать код своего партнера и предоставлять обратную связь, что необходимо для повышения их собственных возможностей по разработке механизмов мониторинга для своей собственной учебной деятельности.

Тимбилдинг и общение

Парное программирование позволяет членам команды быстро обмениваться информацией, что снижает вероятность того, что программы будут скрыты друг от друга. Это помогает парным программистам легче научиться общаться. «Это увеличивает пропускную способность и частоту связи внутри проекта, увеличивая общий информационный поток внутри команды».

Исследования

Существуют как эмпирические исследования, так и метаанализ парного программирования. Эмпирические исследования, как правило, исследуют уровень продуктивности и качество кода, в то время как метаанализ может быть сосредоточен на предубеждениях, вносимых процессом тестирования и публикации.

Мета-анализ обнаружил пары обычно рассматривают больше вариантов дизайна, чем программисты, работающих в одиночку, приходят на более простой более ремонтопригодную конструкции и дизайн задвижки дефекты ранее. Однако он выразил обеспокоенность тем, что на его результаты могли повлиять «признаки предвзятости публикаций среди опубликованных исследований по парному программированию». Он пришел к выводу, что «парное программирование не всегда полезно или эффективно».

Хотя парные программисты могут выполнить задачу быстрее, чем программист-одиночка, общее количество человеко-часов увеличивается. Менеджеру необходимо будет найти баланс между более быстрым завершением работы и сокращением времени тестирования и отладки с более высокой стоимостью кодирования. Относительный вес этих факторов может варьироваться в зависимости от проекта и задачи.

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

В простых задачах, которые пара уже полностью понимает, спаривание приводит к чистому падению производительности. Это может сократить время разработки кода, но также может снизить качество программы. Продуктивность также может упасть, когда используется пара новичков и новичков без достаточного количества наставника для их обучения.

Индикаторы неисполнения

Есть признаки того, что пара не работает хорошо:

  • Отключение может проявляться в том, что один из участников физически отходит от клавиатуры, обращается к электронной почте или даже засыпает.
  • «Смотрите Мастер» явление может возникнуть, если один член более опытный, чем другие. В этой ситуации младший член может взять на себя роль наблюдателя, уступая старшему члену пары большую часть действий по кодированию. Это легко может привести к разъединению.

Варианты спаривания

Эксперт – эксперт
Сочетание экспертов и экспертов может показаться очевидным выбором для максимальной продуктивности и может дать отличные результаты, но зачастую оно дает мало информации о новых способах решения проблем, поскольку обе стороны вряд ли будут сомневаться в устоявшейся практике.
Эксперт – новичок
Сочетание эксперта и новичка создает множество возможностей для эксперта наставлять новичка. Это сочетание также может представить новые идеи, поскольку новичок с большей вероятностью усомнится в устоявшейся практике. Эксперт, от которого теперь требуется объяснение устоявшейся практики, также с большей вероятностью будет их ставить под сомнение. Однако в этой паре напуганный новичок может пассивно «наблюдать за мастером» и не решаться участвовать осмысленно. Кроме того, некоторым экспертам может не хватить терпения, чтобы позволить конструктивному участию новичков.
Новичок – новичок
Взаимодействие между новичком и новичком может дать результаты значительно лучше, чем два новичка, работающие независимо, хотя такая практика обычно не приветствуется, поскольку новичкам труднее развить хорошие привычки без надлежащего образца для подражания.

Программирование удаленной пары

Удаленное парное программирование, также известное как виртуальное парное программирование или распределенное парное программирование, представляет собой парное программирование, при котором два программиста находятся в разных местах, работая через совместный редактор в реальном времени, общий рабочий стол или подключаемый модуль IDE для удаленного парного программирования. Удаленное сопряжение создает трудности, отсутствующие при непосредственном сопряжении, такие как дополнительные задержки для координации, в большей степени зависящие от «тяжелых» инструментов отслеживания задач, а не «легких», таких как учетные карточки, и потеря вербального общения, приводящая к путанице и конфликты из-за таких вещей, как «у кого есть клавиатура».

Инструментальная поддержка может быть предоставлена:

  • Программное обеспечение для демонстрации всего экрана
  • Терминальные мультиплексоры
  • Специализированные инструменты распределенного редактирования
  • Программы аудиочата или программное обеспечение VoIP могут быть полезны, когда программное обеспечение для совместного использования экрана не поддерживает двустороннюю передачу звука. Использование гарнитуры освобождает руки программистов
  • Облачные среды разработки
  • Услуги по совместному парному программированию

Смотрите также

Рекомендации

Внешние ссылки

Последняя правка сделана 2023-03-31 06:18:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте