Помидор, пинг-понг или пара?

Этот пост написали Майя Розекранс, инженер-программист Pivotal London, и Сара Коннор, инженер-программист Pivotal London

Парное программирование лежит в основе всего, что мы делаем в отделе исследований и разработок Pivotal. Команда Redis каждый день объединяет две клавиатуры, две мыши, два монитора и один компьютер. У нас нет удаленных участников, и по большей части есть только те, кто «соло», когда у нас нечетное количество людей в течение дня. Преимущества объединения в пары неоспоримы, поскольку контексту легче делиться, а наличие двух пар глаз приводит к меньшему количеству ошибок и повышению качества кода. Однако иногда пары могут быть неудобными, или пары могут иметь неодинаковый уровень опыта или контекста, или, попросту, пара может быть несовместимой с точки зрения напористости и личностей. Это то, над чем мы обычно не тратим много времени, кроме однозначного комментария о том, что баланс между водителем и навигатором в паре был нарушен. На следующий день пара разделится и, возможно, больше не будет встречаться в течение следующей недели, поэтому разговор может быть легко потерян. Чтобы заставить себя вести эти разговоры и задуматься о нашей культуре парных отношений, мы провели эксперимент в течение двух недель.

Эксперимент

Каждый день мы выбирали одну из пяти техник и использовали ее в течение дня. Эти методы были вдохновлены этим сообщением в блоге бывшего Pivot.

Цели:

  • Более равномерное распределение времени вождения и навигации.
  • Обеспечьте структуру для менее настойчивых водителей.
  • Включите более быстрый обмен контекстом. Часто, когда один член пары имеет больше контекста в части кодовой базы, они будут доминировать при вождении, возможно, оставив навигатора потерянным относительно того, как перемещаться по кодовой базе.

В конце мы провели ретроспективу всей команды, чтобы обсудить эффективность каждой техники.

Парные роли

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

Техники:

Помидор

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

Плюсы:

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

Минусы:

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

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

Пинг-понг

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

Плюсы:

  • Хорошо работает с TDD.
  • Геймифицирует процесс кодирования.
  • Подтверждает то, что сделал последний человек, и гарантирует, что пара находится на одной странице.

Минусы:

  • Трудно применить, когда работа не связана с тестами.

Один из наших любимых методов объединения при выполнении TDD, но, к сожалению, его нелегко использовать для работы, ориентированной на операции.

Включить Google

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

Плюсы:

  • Очень полезно в качестве гибридного дополнения к списку задач или настольному теннису, когда одно из них длилось слишком долго.
  • Может применяться для включения множества вещей: новой теории, посещения стороннего инструмента, открытия руководства и т. Д.
  • Указывает, что водитель дошел до конца своего понимания.

Минусы:

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

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

Список задач

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

Плюсы:

  • Очень гибкий способ работы над историей.
  • Список задач полезен как документация.
  • Заставляет пару разбить историю на мелкие части работы.

Минусы:

  • Не все задачи имеют одинаковый размер или объем, поэтому могут возникнуть несбалансированные пары.
  • Если список задач слишком длинный, может быть трудно извлечь из него информацию.

Универсальная техника для рассказов. Мы обнаружили, что обсуждение формирования задач является сильной стороной этой техники и привело к более продуманным подходам.

Сопряжение / одна клавиатура

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

Плюсы:

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

Минусы:

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

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

Заключение

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

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

Кредит для талисмана Redis Dino: Дениз Ю

Изменения - единственная константа, поэтому отдельные лица, учреждения и предприятия должны быть созданы для адаптации. В Pivotal мы считаем, что изменений следует ожидать, принимать и внедрять постоянно посредством разработки и инноваций, потому что хорошее программное обеспечение никогда не бывает законченным.