Мк программирование человека

Парное программирование двух коллег, 2007

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

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

Парное программирование увеличивает количество человеко-часов, необходимых для доставки кода. По сравнению с программистами. Работающими индивидуально.

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

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

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

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

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

В попытке поделиться целями и планами программисты должны открыто обсуждать общий курс действий. Когда между ними возникает конфликт.

При этом они рассматривают большее количество способов решения проблемы. Чем это может сделать один программист. Это значительно улучшает качество проектирования программы. Так как снижает вероятность выбора плохого метода.[4]

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

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

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

Многие источники предполагают, что студенты проявляют более высокую уверенность при программировании в парах[5], и многие узнают об этом от советов по правилам языка программирования до общих навыков проектирования.При беспорядочном спаривании] Парное программирование позволяет программистам изучать код партнера и обеспечивать обратную связь. Что необходимо для повышения их собственной способности разрабатывать механизмы мониторинга собственной учебной деятельности.[6]

Командообразование и коммуникация

Парное программирование позволяет членам команды быстро обмениваться информацией. Что делает их менее склонными к тому. Чтобы иметь планы. Скрытые друг от друга.

Это помогает парным программистам научиться легче общаться. [3]

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

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

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

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

Преимущество спаривания больше всего на задачах, которые программисты не до конца понимают. Прежде чем начать: то есть сложные задачи. Которые требуют творчества и изощренности. И для новичков по сравнению с экспертами.[2] Парное программирование может быть полезно для достижения высокого качества и корректности в сложных задачах программирования. Но оно также значительно увеличит усилия по разработке (затраты).[7]

На простых задачах, которые пара уже полностью понимает. Спаривание приводит к чистому падению производительности.[2][8] Это может сократить время разработки кода, но также рискует снизить качество программы.[7] Производительность также может упасть. Когда используется спаривание новичок–новичок без достаточного наличия наставника для их обучения.]

Показатели неисполнения

Есть индикаторы того, что пара работает не очень хорошо:[мнение]

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

Вариации спаривания

Эксперт–эксперт
Спаривание эксперт–эксперт может показаться очевидным выбором для самой высокой производительности и может дать отличные результаты. Но оно часто дает мало информации о новых способах решения проблем. Поскольку обе стороны вряд ли будут подвергать сомнению сложившуюся практику.[2]
Эксперт–новичок
Спаривание эксперт–новичок создает много возможностей для эксперта наставлять новичка. Это спаривание также может привнести новые идеи. Поскольку новичок с большей вероятностью подвергнет сомнению устоявшиеся практики. Эксперт, от которого теперь требуется разъяснить сложившуюся практику. Также с большей вероятностью подвергнет ее сомнению. Однако в этом спаривании запуганный новичок может пассивно Кроме того. У некоторых экспертов может не хватить терпения. Необходимого для конструктивного участия новичков.[10]
Новичок–новичок
Спаривание новичок–новичок может дать результаты значительно лучше, чем два новичка. Работающих независимо. Хотя эта практика обычно не поощряется. Потому что новичкам труднее развить хорошие привычки без надлежащего образца для подражания.]

Удаленное парное программирование

Удаленное парное программирование, также известное как виртуальное парное программирование или распределенное парное программирование,-это парное программирование. В котором два программиста находятся в разных местах , работая через совместный редактор реального времени, общий рабочий стол или удаленную среду программирования пар. плагин. Дистанционное спаривание создает трудности, не присущие спариванию лицом к лицу. Такие как дополнительные задержки для координации. В большей степени зависящие от [12]

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

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

См. также

  1. ^
  2. ^ b c d e Луй, Ким Ман (сентябрь 2006). (PDF). Международный журнал человеко–компьютерных исследований. 64 (9): 915–925. CiteSeerX 10.1.1.364.2159. doi:10.1016/j.ijhcs.2006.04.010. Архивировано из оригинала (PDF) на 2011-07-20. 2012-11-18.
  3. ^ b c d e Кокберн, Алистер; Уильямс, Лори (2000). (PDF). Материалы Первой Международной конференции по экстремальному программированию и гибким процессам в программной инженерии (XP2000).
  4. ^ Flor, Nick V.; Hutchins, Edwin L. (1991). . В Koenemann-Belliveau, Jürgen; Moher, Thomas G.; Robertson, Scott P. (ред.). Эмпирические исследования программистов: Четвертый семинар. Ablex. с. 36-64. ISBN 978-0-89391-856-9.
  5. ^ b Уильямс, Лори; Кесслер, Роберт Р.; Каннингем, Уорд; Джеффрис, Рон (2000). (PDF). Программное обеспечение IEEE. 17 (4): 19-25. CiteSeerX 10.1.1.33.5248. doi:10.1109/52.854064.
  6. ^ b Williams, Laurie; Upchurch, Richard L. (2001). . Бюллетень ACM SIGCSE. 33 (1): 327–31. doi:10.1145/366413.364614.
  7. ^ b c Hannay, Jo E.; Tore Dybå; Erik Arisholm; Dag I. K. Sjøberg (июль 2009). Информационные и программные технологии. 51 (7): 1110-1122. doi:10.1016/j.infsof.2009.02.001.
  8. ^ Арисхольм, Эрик; Ханс Галлис; Торе Дыбо; Даг И. К. Шеберг (февраль 2007). . IEEE Transactions on Software Engineering. 33 (2): 65-86. doi:10.1109/TSE.2007.17. Архивирован с оригинала 2010-10-29годов . Проверено 2008-07-21.
  9. ^ Стивенс, Мэтт; Дуг Розенберг. . Извлечено 28 мая 2011года .
  10. ^ Williams, L. & Kessler, R. (2003). Парное программирование С подсветкой. Бостон: Эддисон-Уэсли Профессионал. ISBN 9780201745764.
  11. ^ Flor, Nick V. (2006). Коммуникации АСМ. 49 (10): 57–8. doi:10.1145/1164394.1164421.
  12. ^ Schümmer, Till; Stephan Lukosch (September 2009). (PDF). Журнал универсальной информатики. 15 (16): 3101–3125. Проверено 2010-04-30.
  13. ^ Agile Ajax: Парное программирование с VNC Архивировано 2008-04-02 на Wayback Machine[самоизданный источник]
  14. ^ Парное программирование – Конечная настройка и другие варианты. Которые мы пробовали. – Блог Джонатана Когли[самоизданный источник?]

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