Я работал в нескольких магазинах, где руководство передало идею парного программирования мне или другому менеджеру / разработчику, и я вообще не могу отстать от этого. С точки зрения разработчика, я не могу найти причину, по которой переход на этот стиль кодирования был бы полезным, и как менеджер небольшой команды я не видел никакой выгоды.
Я понимаю, что это помогает при базовых синтаксических ошибках и может быть полезно, если вам нужно что-то хешировать, но менеджеры, которые находятся вне цикла программирования, похоже, видят в этом способ не позволить своим дизайнерам перейти на Facebook или Reddit, а не как инструмент дизайна.
Как человек, близкий к уровню разработки, который, очевидно, не вполне может понять из книги, которую я бросил, или из вики-страницы на эту тему ... с позиции высокого уровня управления, каковы преимущества парного программирования при работе со Scrum или Agile окружающая среда?
источник
Ответы:
Отчасти это зависит от того, как вы занимаетесь парным программированием. В некоторых случаях драйвер пары пишет код, а второй член пары наблюдает и обсуждает детали проектирования и реализации системы. В другом примере парного программирования оба человека пишут код одновременно - один человек пишет реализованную функциональность, а другой активно разрабатывает и пишет тестовый код на уровне модуля и интеграции, снова обсуждая детали проектирования и реализации системы.
Независимо от типа парного программирования, он фактически служит непрерывным обзором кода . У вас есть два человека, которые следят за кодом, наблюдая за ошибками, прежде чем они попадут в более позднюю систему / приемочное тестирование или в поле. У вас также есть два человека, которые очень хорошо понимают определенную часть системы, чтобы служить в качестве избыточности, чтобы минимизировать ваши шинного фактора . Как раннее обнаружение дефектов, так и распространение знаний о системе в команде снижает стоимость построения системы.
Распространение знаний не ограничивается только техническими знаниями команды. В зависимости от того, кто является парой, она может позволить передавать информацию между более старшим сотрудником компании и новым членом о других вещах, которые выходят за рамки проекта - стиле кодирования, культуре компании, ожиданиях и так далее. Это также может позволить кому-то, кто более знаком с технологией или инструментом, делиться своими знаниями в этой технологии или инструменте в реальных прикладных условиях.
Как вы упомянули, это также помогает разработчикам сосредоточиться и потоке . В дополнение к потоку, многие люди реже прерывают работу нескольких людей над чем-то, чем одного работающего над чем-то. Если вы проходите мимо чьего-то стола и они работают в одиночку, но вам нужно поговорить с ним, вы можете постучать и поговорить с ним. Это менее вероятно, если вы видите двух или более людей, работающих совместно или участвующих в дискуссии - вы не будете их прерывать. Перерывы стоят времени, а тратить больше времени означает более высокие затраты. В интересах бизнеса максимизировать производительность сотрудников.
Однако есть некоторые проблемы, которые необходимо преодолеть, чтобы сделать парное программирование жизнеспособным. Подумайте о таких вещах, как столкновения личности или выбор пар, чтобы правильно распределить знания. Также учитывается, когда именно нужно вращать пары. Парное программирование, выполненное бессистемно, вероятно, не будет таким эффективным, как запланированное. В зависимости от состава вашей команды, это может быть неэффективно, чтобы пара людей вообще.
источник
Меньше ошибок в конечном коде (эффективность)
Не полностью заменяет обзоры кода, но очень эффективна для того, чтобы все исправить на ранних этапах. Существует исследование, которое указывает в этом направлении.
Более быстрое завершение (эффективность)
На это указывают несколько исследований. Когда дело доходит до сложных функций, 2 головы просто более эффективны. Для этого необходим опыт сопряжения.
(примечание: это ваш коммерческий шаг для менеджера: финансово разумное решение, потому что вы получаете более эффективные за счет меньшего количества ошибок и более эффективные за счет более быстрого завершения)
Вы можете добавить младшего непосредственно к более опытному программисту. Если у вас есть группа абсолютных новичков, легко остаться и позволить им, как парам, понять основы. Держись и давай советы. Концепция, очевидно, очень старая и проистекает из мастерства.
источник
Быстрый ответ: большинство преимуществ и затрат опубликовано в Википедии, однако, давайте посмотрим на это с разных сторон.
Я хотел бы упомянуть конкретные случаи преимуществ парного программирования, которые применяются к среде разработки Agile / Scrum, взятые из поста в блоге :
В итоге:
источник
When two developers work together design pattern quality improves
-> эта фраза не имеет смысла вообще. По крайней мере, не больше смысла, чемWhen two bakers work together wheat quality improves
илиWhen two race drivers work together asphalt quality improves
.Есть несколько преимуществ для парного программирования:
В википедии также есть хорошая сводка затрат и выгод в вики .
источник