Парное программирование, также известное как модель парного или «динамического дуэта», не является новой концепцией, и она была впервые предложена гуру C / C ++ П. Дж. Плаугером (Скотт У. Амблер, Ларри Константин, 2001). Эта практика состоит из двух разработчиков, работающих вместе за одним экраном: один - водитель, который активно программирует, а другой, навигатор, обеспечивает мгновенную обратную связь.
Как только команды сосредотачиваются на том, чтобы парное программирование работало, и получают динамику да, они могут извлечь из этого множество выгод.

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

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

Столкнувшись с текущим сценарием «работы из дома», мы решили объединиться в команды виртуально, начав с разных команд разработчиков. Благодаря формату семинаров и комнатам для обсуждения со случайными группами из четырех или пяти человек, у нас все работали вместе, делились опытом и знаниями о Pairing.

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

Плюсы спаривания

  • Мы улучшаем обмен знаниями, эффективно помогая друг другу расти
    Мы можем сократить период изучения нашей кодовой базы и, следовательно, улучшить адаптацию.
  • Мы уменьшаем фактор занятости
    . Постоянно работая бок о бок и имея возможность продолжить работу, если один человек не может работать в определенный день, это делает нас более устойчивыми. как отряды и как рота; со временем будет легче поддерживать друг друга, когда это необходимо.
  • Мы делаем наши обзоры проще и проще
    Когда мы объединяемся, мы обсуждаем и в режиме реального времени получаем отзывы о работе, которую мы делаем. Это помогает повысить качество и скорость доставки, потому что мы обнаруживаем проблемы раньше, чем когда мы запрашиваем проверку.
  • Мы работаем более целенаправленно
    Мы уже знали, что сокращение объема незавершенной работы (WIP) заставляет нас работать быстрее и эффективнее. Когда мы объединяемся в пары, параллельно открывается меньше потоков работы. Это означает, что мы больше сосредоточены на предоставлении наиболее приоритетных функций и можем поддерживать рабочий процесс.
  • Мы делаем работу лучше, когда делаем ее вместе
    Мы очень рады, что у нас есть кросс-функциональные команды, которые могут предоставить функцию от начала до конца. Объединение в пары позволяет нам не только учиться друг у друга, но и повысить дисциплину нашей практики и вместе делать правильные вещи.
  • Мы получаем гораздо более быструю обратную связь
    Благодаря объединению мы можем сдвинуться влево и улучшить качество раньше, чем позже. Это обеспечивает гораздо более высокое качество, позволяет избежать ошибок и более поздних исправлений, что также увеличивает нашу скорость.
  • Мы повышаем уровень совместной работы
    Мы ходим туда и сюда, пытаясь вместе решить проблему, что повышает уровень эмпатии и улучшает отношения. Это приводит к лучшему пониманию друг друга, создавая классную и веселую динамику между людьми в отряде.
    Особенно при удаленном объединении в пары возникает более высокая продуктивность, поскольку мы помогаем друг другу двигаться вперед с поставленной задачей. .
  • Мы стали лучше синхронизированы
    Поскольку мы вращаем пары и решаем задачи вместе, мы по своей сути становимся более синхронизированными друг с другом. Снижаются шансы на блокировку и улучшается общее выравнивание.

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

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

Что способствует отличному опыту

  • Важно определить роли
    . Полезно иметь заранее согласованный набор руководящих принципов для парных ролей: Водитель и Навигатор . Это помогает лучше понять обязанности каждого члена, уменьшить трение и дискуссии, одновременно помогая сосредоточиться на задаче, которую необходимо решить.
  • Постоянно общайтесь и используйте ясный визуальный язык
    . Мысли вслух, постоянно высказываем свои мысли, будь то водитель или штурман, - это ориентир для рассуждений пары и работа выполняется. Это также поможет вам найти лазейки в ваших внутренних рассуждениях.
  • Дистанционная подготовка
    Важно, чтобы у вас была тишина и хороший микрофон (обязательно проверьте его). Помните, что кто-то еще будет смотреть на ваш экран, поэтому отрегулируйте разрешение или размер шрифта, чтобы другой человек хорошо видел.
    Визуальные подсказки невероятно важны, поэтому убедитесь, что камеры включены, и вы можете видеть друг друга во время демонстрации экрана. Постарайтесь свести к минимуму отвлекающие факторы для обоих.
  • Динамика сопряжения
    Перед началом сеанса сопряжения убедитесь, что вы оба знаете расписания друг друга. Согласуйте время для перерывов и соблюдайте эти договоренности.
    Чтобы не отвлекаться и не создавать неравномерную динамику, почаще переключайтесь между водителем и навигатором. Установите таймер, чтобы запускать ротацию не реже, чем каждые 30 минут. Основывайте свою ротацию на времени, а не на завершении задачи (чтобы никогда не вращаться).
  • Сотрудничать
    Очень важно быть открытым для некоторого сотрудничества, понимая, что будет меньше параллельных потоков работы и ощущение снижения скорости. Преимущества перевешивают их, поэтому помните о них, потому что вы вызовете обратную связь раньше и избежите возможного переписывания кода.
  • Расширение обмена знаниями
    Создание пары - это возможность помочь кому-то стать более профессиональным, а также развиваться, обучаясь у кого-то другого. Эта открытость к обучению и обучению имеет решающее значение для работы пары.
    Также важно отметить, что в случае, если кто-то знает больше, чем его пара, следует поощрять человека с наименьшими знаниями взять на себя роль водителя. дольше.
  • Будьте открыты для всех идей
    Мы все придерживаемся разных мнений. Если мы чувствуем, что их выслушивают и принимают во внимание, мы с большей готовностью придем к компромиссу.
  • Чаще меняйте пары (например, два раза в неделю)
    Запланируйте ротацию элементов каждой пары. Сделайте это зависимым от времени, а не от задачи. Если вы наполовину выполнили задачу, когда вам нужно чередовать, просто выберите, какой член пары продолжит работу над ней со своим новым коллегой по паре. Это также поможет повысить обмен знаниями и повысить устойчивость вашей команды.
  • Постоянно улучшайте и делитесь ключевыми знаниями с командой
    Сосредоточьтесь на улучшении сочетания с течением времени. Обсудите моменты после каждого сеанса пары, чтобы понять, что может случиться, чтобы в следующий раз это стало лучше. Совместное использование этого помогает укрепить доверие друг к другу и создать лучшую динамику.
  • Совместите работу со своим отрядом
    Важно заранее сообщить, какие задачи больше всего выиграют от объединения и когда каждый человек доступен для объединения. Используйте уточнения, чтобы указать, какие задачи необходимо решать в паре.
  • Если что-то пойдет не так
    Попросите кого-нибудь помочь разрешить конфликт, который мог возникнуть. Помните, что у каждого человека разные потребности, индивидуальность и стиль работы, поэтому нормально, что вам нужно время, практика, доверие и любовь, чтобы объединение работало.

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

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

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

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

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

Https://www.codacy.com/