Вместо того, чтобы постоянно работать над парными программами, мы используем выборочное программирование в нашей команде. Я думаю, что это работает лучше всего в следующих обстоятельствах:
- Усиление новых членов команды в проекте (вместо того, чтобы позволить им самостоятельно просматривать документацию или код).
- Совместная работа младших и старших сотрудников (помогает продемонстрировать некоторые навыки и приемы более опытных разработчиков, а также позволяет старым собакам иногда изучать новые приемы).
- Когда кто-то пытается отследить дефект, это часто помогает сочетаться со свежим взглядом.
Когда использовать парную программу и почему?
Когда следует избегать парного программирования? Почему?
agile
pair-programming
Paddyslacker
источник
источник
Ответы:
Исследование, составленное Лори Уильямс, показывает, что парное программирование лучше всего работает в промышленных группах, когда
Исходя из своего личного опыта, я обнаружил, что моя команда XP тратит в среднем около 60% нашего времени на программирование. Остальная часть времени уходит на индивидуальное развитие. Нередко объединяются для создания первоначального проекта, работают в течение одного часа над дизайном в одиночку, а затем собираются вместе, чтобы закончить сложные или сложные части кода.
Я также обнаружил, что парное программирование наиболее эффективно в блоках длительностью от 1,5 до 2,5 часов. Все, что намного меньше, как правило, требует слишком много накладных расходов на настройку, в то время как гораздо больше, и пары, как правило, раскачиваются и устают. Измотанный и уставший означает, что вы плохо общаетесь и, возможно, допускаете попадание дефектов в систему.
источник
Парное программирование работало для меня в очень, очень немногих ситуациях.
Где парное программирование терпит неудачу для меня
источник
Моя команда занималась парным программированием с самого начала, задолго до того, как я там работала, как часть магазина, в основном в стиле "экстремального программирования". Парное программирование является состоянием по умолчанию ; люди действительно идут в одиночку, если есть нечетное число, или время от времени для расследований, особенно тех, которые включают в себя возиться с враждебным оборудованием и пытаться заставить его работать.
«Младший / старший» не единственный путь. «Средний / младший» полезен; это помогает парню среднего уровня синтезировать знания, которые он получил, заставляя его передать это кому-то еще. Задачи «Средний / Средний» два человека работают вместе, чтобы делиться своими знаниями, общаться и работать в команде. И даже если у вас есть два действительно старших парня, скорее всего, они имеют разные области знаний и могут предложить разные подходы. Аспекты обмена знаниями не заканчиваются, когда кто-то смутно «набирает скорость» в проекте. Скорее, парное программирование является воплощением обучающейся организации . Новые методы и лучшие практики быстро распространяются.
Парное программирование также помогает поддерживать качество кода (меньше дефектов) и здравый смысл кода (он не просто делает то, что намеревается, но делает то, что должен ... в идеале, не отказываясь от многонедельного кролика. дыра, делающая неправильную вещь, или две разные правильные вещи, которые будут дико конфликтовать). Это помогает программистам сохранять свое внимание: здесь, в сердце Силиконовой долины, где находится 80-часовая рабочая неделя, мы можем работать всего 40 часов в неделю, потому что мы интенсивно программируем по восемь часов в день, переключая вещи друг с другом (Кроме того, если бы вы занялись парным программированием дольше, вы, вероятно, перевернулись бы. Или, по крайней мере, сгорели.) Это отлично подходит для баланса между работой и личной жизнью, а также помогает вашей организации, когда важно иметь быстрый оборот (в частности, оборот с малой задержкой).
Это не все, полностью, 100% персики и сливки; Я считаю, что парное программирование иногда является препятствием для моего применения интуитивных мозговых процессов, которые полезны при определенных проблемах. Совсем недавно, на задачу утечки памяти, я провел некоторое время с парами и без; без этого я чувствовал себя свободнее возиться и пробовать эксперименты, не зная точно, как объяснить, что я делал в любой момент. Есть также некоторые преимущества в работе синглтона, когда он может работать по касательной и выполнять определенные дикие рефакторинги (оцениваемые в методологии XP) по прихоти.
Но, в целом, преимущества намного перевешивают затраты, и сопряжение сработало для нас очень хорошо: от начального этапа до приобретения более крупной компанией и нашей последующей интеграции. (Кстати, парное программирование помогло нам сохранить непрерывность культуры за счет расширения и несмотря на небольшой оборот).
(Мы разрабатываем программное обеспечение на Perl, ~ 4000–40 000 долл. По прейскуранту.)
источник
Я никогда не работал в настройке «парного программирования», и все же я могу утверждать, что был частью трех перечисленных вами обстоятельств. Сценарий, который вы упоминаете, кажется более «обычным программированием» с добавлением этапов помощи / обучения. Разве мы не делали все это до появления «парного программирования»? Я полагаю, что парное программирование потребовало бы более преданного подхода, когда процесс совместного использования в команде не останавливается в ту минуту, когда вы решаете непосредственную задачу или проблему под рукой. Но тогда это то, что я «думаю», а не то, что я «знаю».
Лично для парного программирования я хотел бы работать в команде, где у меня есть возможность учиться и делиться своими знаниями. Неуравновешенная команда, в которой все, с кем вы работаете, намного опережают вас, а то и намного ниже номинальной могут стать довольно неинтересными довольно быстро. Кроме того, я бы побоялся работать с людьми, которые твердо убеждены в своих убеждениях.
источник
Последние несколько месяцев мы экспериментировали с парным программированием в нашей команде. Я чувствую, что это очень полезно, когда вы работаете над чем-то новым (новые технологии, новые функции и т. Д.), Поскольку вы можете быстро обмениваться идеями с другим сотрудником команды и проверять их / аннулировать. Кроме того, параллельная рецензия помогает избежать ошибок.
Другой товарищ по команде пытался использовать парное программирование с тестом для выполнения ATDD, и они были очень довольны результатами (согласно его расчетам, увеличение стоимости разработки на 20% привело к сокращению времени тестирования примерно на 50%).
источник
Доброй ночи
Мы много раз обсуждали практики экстремального программирования и парного программирования . В свое время мы понимаем, что программирование - это занятие соло, потому что программистам нужна концентрация и изоляция. Программисты в то время находились в зоне психического состояния, где они могли эффективно сосредоточиться на коде и принимать приятные и креативные решения.
Парное программирование также кажется рискованным, если предположить, что один программист прерывает друг друга. С другой стороны, сложнее прервать работу двух программистов. Например, при программировании в одиночку прерывание будет легче, поэтому для одиночного программиста почти невозможно оставаться в «зоне».
Качество кода другое, когда тупик не за горами. Люди будут всегда спешить, быть парными программистами или сольными программистами: они не будут применять определенные лучшие практики и просто забудут о модульном тестировании.
Я бы придерживался парного программирования. Потому что, когда дело доходит до рисков, когда один программист ушел, у вас всегда будет другой парень, который задокументирует процесс и научит всех остальных, как он работает.
источник
Работа над чем-то нетривиальной сложностью имеет тенденцию быть хорошим кандидатом для парного программирования, так что несколько человек понимают код, а не просто один разработчик, знающий часть кодовой базы. Другой случай, когда кто-то хочет передать некоторые навыки. В качестве примера можно привести кого-то, кто действительно хорош в модульных тестах, в паре с кем-то, не совсем знакомым с концепцией, и, таким образом, помогает получить начальную привычку к чему-либо.
Что касается того, где следует избегать парного программирования, выполняйте рабочие задачи, которые просты, когда было бы лучше разделить работу на две группы и позволить каждому разработчику выполнить часть работы отдельно, чтобы выполнить работу. Некоторые задачи могут просто потребовать много печатать, но они не настолько велики, что стоит потратить несколько часов, пытаясь найти лучший способ сделать это, как это можно было бы сделать, если каждый разработчик использует подход грубой силы для нескольких ч.
источник