Насколько распространено парное программирование на рабочем месте?

16

Я всегда был заинтригован парным программированием, но за 12 лет разработки я никогда не работал там, где они применяли эту практику, поэтому я всегда скептически относился к тому, как люди видят это.

Интересно, это из-за денег / времени (заостренный волосатый босс замечает двух человек на одном компьютере, работающих над одним и тем же кодом !!!! как они смеют!) Или по другим причинам?

Ozz
источник
8
Я думаю, что PHB может быть правильным в этой ситуации. Два человека (и, следовательно, две зарплаты) для одного выхода - по сути плохое деловое решение. Существует не так много случаев, когда парное программирование более продуктивно, чем индивидуальное, по крайней мере, не «на полный рабочий день» - так что это не так уж и много, кроме наставничества новых сотрудников или совместной работы над конкретной проблемой.
TZHX
3
Очень трудно убедить заостренного босса, что это имеет значение.
Уолтер
3
Я думаю, что для нового кода большое значение имеет парное программирование. Первая итерация может занять столько же времени, но на IME вы тратите гораздо меньше времени на отладку. И когда два человека знают один и тот же код, отладка становится проще, потому что они могут смотреть независимо друг от друга. «Учитывая достаточное количество глазных яблок, каждая ошибка прозрачна».
Майкл К
1
@ Майкл, не всегда, но иногда я думаю, что соединение на унаследованном коде может быть полезным. Это может сломать бункеры и / или снизить затраты на рефакторинг. Тем не менее, я полностью согласен с вами.
DevSolo
5
@TZHX: «Два человека за один выход - плохой бизнес». Это серьезно ошибочный аргумент, и вы его знаете (например, платите программистам за строку кода). Парное программирование - сложная тема, которую нельзя так легко отмахнуться.
Мартин Уикман,

Ответы:

20

У меня был такой же концерт в течение 15 лет, и мы недавно (последние 12-18 месяцев) начали применять гибкие методы. Там, где используется парное программирование, сюжет / функция результата были реализованы вовремя без дефектов. Я все еще не думаю, что это использовалось достаточно часто, хотя.

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

  • уменьшение силосов в команде (огромная победа, когда команда составляет 6-8 разработчиков)
  • произвел код с меньшим количеством дефектов
  • каждый разработчик обычно извлекает из него навыки

Я бы сказал, что менеджмент неохотно, но если вы можете сделать шаги для ребенка и продемонстрировать, что эта функция впоследствии становится лучше (экономия затрат) и / или каждый (или один) разработчик приобрел некоторые навыки (платят вперед), вы можете набрать обороты, если Вы находите это практикой, которая подходит вам или вашей команде.

DevSolo
источник
отличное понимание DevSolo, спасибо, что поделились. Я предполагаю, что у вас, вероятно, достаточно стабильная команда (низкая текучесть кадров?)
ozz
Добро пожаловать. Наш оборот был довольно низким ... 4 из нас работали в одном офисе более 15 лет, хотя 4 переезда (в 4 зданиях и 2 штатах)!
DevSolo
Как ни странно, ваш псевдоним «DevSolo»;) nb и мои опыты совпадают с вашими
ChrisAnnODell
11

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

Pemdas
источник
Очень верная Пемдас!
Оз
2
+1, к сожалению. Командная работа - это навык, который нужно развивать, а если не хочешь, то не сможешь. Может быть, это то, что должны делать менеджеры программистов - найти структуру команды, которая способствует большей продуктивности среди людей, которых они имеют.
Майкл К
4
Эта профессия требует контроля эго. Это не всегда легко, но вознаграждение будет чрезвычайно полезным.
DevSolo
@DevSole ... какое отношение это имеет к моему ответу?
Пемдас
@Perndas, я предположил, возможно, неправильно, что сопротивление будет из-за эго. По крайней мере, когда я это увидел, похоже, это и есть причина. Я видел только 2 (насколько я помню) разработчиков, которые на самом деле сопротивляются этому. Эго не могло уместиться в комнате, у другого были проблемы с уверенностью.
DevSolo
9

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

Жаль, что это было сделано больше.

CaffGeek
источник
4
Другой инструмент для использования, если вы не знакомы, называется «Резиновая утка». В принципе, положите предмет на стол, как резиновая утка (ваш действительно использует игрушку Йода), и объясните ему проблему. см. c2.com/cgi/wiki?RubberDucking
DevSolo
Вместо этого я использую человека, сидящего рядом со мной ... мы не можем положить вещи на наши столы.
CaffGeek
Шутки в сторону?
Майкл К
@ Майкл ... ты не представляешь, какие у нас здесь правила. И все же, несколько хороших вещей перевешивают все плохие ... едва.
CaffGeek
Грустно слышать, что эти необоснованные правила управления применимы к программистам (это довольно глупо, не правда ли? Они должны приложить дополнительные усилия, чтобы мы были счастливы, чтобы сбалансировать это)
Zekta Chan
9

Мне все равно

1 - Мне нравится слушать мою музыку во время кодирования. Не каждый хочет слышать, как Slayer взрывается в их ушах.

2 - Меня воспитали, потому что я очень грубо смотрю через плечи людей и чувствую себя очень неловко, когда люди делают это.

3 - Я думаю очень быстро, и когда я нахожусь в процессе решения, когда я начинаю находить ответ, прерывание - это самое последнее, что мне нужно.

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

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

Я считал, что на самом деле это может помочь другим освоить некоторые из моих приемов, но, принимая во внимание № 3, они вряд ли смогут задавать вопросы, не нарушая мои мысли в любом случае.

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

Эдвард Стрендж
источник
2
@ Нет, основываясь исключительно на № 2, я не уверен, что вы понимаете концепцию парного программирования. Идея не в том, чтобы смотреть через плечо. Идея, в которой я практиковался, заключается в том, чтобы поделиться компьютером для совместной работы. Это не главное / подчиненное программирование, это одноранговое программирование. Возможно, позже это лучший термин для этого ...
DevSolo
Это совершенно верно. Некоторые люди просто хотят, чтобы их оставили в покое, чтобы понять это самостоятельно.
MattC
А также +1 для наушников. Я весь день взрываюсь металом и / или трансом и очень раздражаюсь, когда люди говорят со мной о чём-то. Неужели они не могут дождаться окончания моей любимой песни? : D
MattC
2
@ Noa: Читая твой список, кажется, ты упускаешь тонкости парного программирования. Я не говорю, что это для всех, и это определенно требует времени и усилий для перехода из режима ковбоя в режим совместного использования. Точно так же, как требуется время, чтобы научиться правильно выполнять TDD (или любую другую гибкую практику в этом отношении).
Мартин Уикман,
1
продолжение ...: «старший» означает, что на самом деле вы можете не писать код, а помочь более молодому разработчику придумать предложение. Я также не самый большой поклонник идеи парного программирования, но я вижу, что это, вероятно, в основном за пределами моей зоны комфорта. Многим разработчикам нравится работать на своей станции в одиночку, но я должен признать, что я, вероятно, узнал бы больше и нашел бы лучшие решения о том, что я работал вместе с другим разработчиком. Так что это действительно вопрос личного комфорта против более эффективной работы.
Анна Шуесслер
5

Парное программирование - отличный способ начать или сделать что-то нетривиальное и сложное. Более рутинные и простые задачи лучше выполнять в одиночку.

Я участвовал во многих сессиях парного программирования, как в стартап-гаражных компаниях, так и в крупных корпорациях. Это неизменно происходило только тогда, когда создавалось что-то новое и трудное, то есть, в лучшем случае, два раза в год, в течение нескольких недель. Как часто это происходит в вашей компании?

9000
источник
реже, чем хотелось бы, это точно.
Оз
5

Мы никогда не называли это так, но когда-то так мы всегда решали новые проблемы. Мы объединялись, чтобы начать работу над решением, но затем, как правило, начинали индивидуально заканчивать / убирать детали. Не так много больше. Кажется, становится все реже и реже.

Брайан Кноблаух
источник
3

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

Соберите команду для проверки кода, будь то в группах или парами, и предоставьте разработчикам свое собственное пространство. В конечном итоге это будет лучше, чем погоня за последним увлечением Agile.

Сервия
источник