Для каких целей подходит парное программирование? Понимание преимуществ поможет правильно организовать работу и не сдаться, если будет тяжело, а следование целям позволит улучшить качество ПО и отстроить командный процесс.Это продолжение перевода статьи о парном программировании. С первой частью можно ознакомиться здесь.
Итак, как же работа в паре поможет достичь этих целей?
Обмен знаниями
Давайте начнем с самого очевидного и наименее спорного преимущества - обмена знаниями. Общая работа двух людей над одним куском кода позволяет команде делиться опытом в программировании и избегать “застоя” знаний. Кроме того, две головы увеличивают шанс найти достойное решение. Разные опыт и взгляды ведут к рассмотрению большего количества вариантов.Практические советы
Не стесняйтесь присоединяться к работе над задачами, в которых вы не знаете предметной области или используемых технологий. Если будете работать только в знакомой области - потеряете возможность изучить новое и поделиться знаниями в команде.Если вы заметили, что кто-то в команде предпочитает все время работать над одними и теми же темами, попросите его обобщить знания и поделиться ими. Это также поможет создать матрицу навыков, на которой будут указаны деловые и ИТ-компетенции каждого участника, а также их сильные и слабые стороны в этих областях. Если вы разместите такую матрицу на стене в рабочем пространстве, вы сможете усовершенствовать обмен знаниями в команде.
Размышления
Парное программирование толкает нас на обсуждение различных решений и подходов помимо монолога в своей голове. Проговаривание и объяснение способствует активному размышлению над выбранным вариантом. Это не всегда применимо к коду или техническому дизайну, но подходит для пользовательских историй или ценности, которую они приносят.Практические советы
Чтобы создать атмосферу, в которой каждый чувствует свободу говорить открыто и задавать вопросы, необходимо доверие между вами. Поэтому правильно выстроенные отношения так важны в команде. Выделяйте время на личное общение и фидбек.Сосредоточение
Намного проще подойти к делу структурировано, когда вас двое: каждый может четко объяснить, почему вы что-то делаете и в каком направлении движетесь. Когда вы работаете в одиночку, отвлечься легче: например, “просто быстренько” попробовать новый подход без долгих размышлений и попасть в “кроличью нору” на несколько часов. Напарник поможет избежать таких “кроличьих нор” и вернуться к важному для успешного завершения задачи. Вы оба можете поддерживать друг друга и оставаться сосредоточенными.Практические советы
Составьте план вместе. Обсудите задачу и обдумайте шаги для достижения цели. Запишите каждый шаг на стикерах (или в таск-менеджере, если вы работаете удаленно), держите их на виду и делайте один за другим. Попробуйте объединить эту технику с техникой “Помодоро” и попробуйте завершать один шаг за одну “помидорку”. Никогда не забывайте, что коммуникации - самое важное. Обсуждайте вашу работу и требуйте пояснений друг от друга.Ревью кода “на ходу”
Когда мы в паре, у нас есть 4 глаза для рассмотрения малых и больших дел: мы можем поймать больше ошибок прямо “на ходу”, а не после завершения работы.Рефакторинг - важная часть написания кода, следовательно, и парного программирования. Проще улучшить код, когда кто-то стоит за плечом, потому что вы можете, например, сразу обсудить подход или какие-либо названия элементов в коде.
Но совместное ревью кода имеет также и свои минусы. К ним мы вернемся позже.
Практические советы
Задавайте вопросы друг другу! Вопросы - самый мощный инструмент для понимания того, что вы делаете, и выбора наилучшего решения. Если одному из вас сложно прочитать код, попробуйте сделать по-другому, чтобы стало понятнее.Совмещение двух моделей мышления
Как мы упоминали ранее (в первой части), рассматривая классическую модель “Ведущий/Штурман”, совместная работа позволяет получить разные взгляды на код. Мозг “Ведущего” обычно работает в режиме тактики, размышляет о деталях и текущих строчках кода. В то время как мозг “Штурмана” думает более стратегически и охватывает бОльшую картину, отмечает следующие шаги и идеи на клеющихся стикерах. Может ли один человек сочетать в себе оба режима одновременно? Конечно, нет! Поэтому такой "удвоенный" взгляд улучшает качество кода, так как включает рассмотрение и деталей, и общей картины.Практические советы
Не забывайте регулярно меняться местом у клавиатуры и ролями. Это поможет взбодриться, не уставать и практиковать оба подхода.Как "Штурман", избегайте тактического мышления, разбора деталей кода - того, что делает "Ведущий". Ваша работа - отойти на пару шагов и дополнить вашу пару в части тактики и среднесрочным планированием.
Коллективное владение кодом
Совместная работа подразумевает, что каждая строчка кода была просмотрена как минимум двумя людьми. Это увеличивает шансы, что любой член команды не будет бояться редактировать код в любое время. Так код становится более последовательным, чем он мог бы быть при одном разработчике.Коллективное владение кодом исключает идею индивидуального владения модулями. Исходный код принадлежит всей команде и каждый может когда угодно вносить туда изменения.
Мартин Фаулер
Практические советы
Парное программирование само по себе не гарантирует, что вы добьетесь коллективного владения кодом. Нужно убедиться, что вы меняетесь парами и частями кода, чтобы предотвратить “застой” знаний.Установка WIP-лимитов для команды
Ограничение числа незавершенных задач, как один из базовых принципов Канбан, увеличивает продуктивность сотрудников. Следование технике WIP-лимитов (аббревиатура от Work In Progress) помогает сосредотачиваться на ключевых задачах. Многозадачность неэффективна даже для одного человека, что говорить о целой команде. Парное программирование позволяет ограничить число задач, прорабатываемых параллельно, и тем самым увеличить общую сосредоточенность. Это гарантирует непрерывность рабочего процесса без подводных камней.Практические советы
Ограничьте список задач “в работе” для нескольких разработчиков и обнародуйте в рабочем пространстве вашей команды (или в таск-менеджере). Сверяйтесь со списком перед постановкой новых задач. Это дисциплинирует и поможет закрепить привычку работать по парам.Быстрая адаптация новых сотрудников
Так как совместная работа облегчает обмен знаниями, она также может помочь и в адаптации. Благодаря помощи напарника новички могут погрузиться в проект и дела компании. Это поможет рабочему процессу новичка: людям нужно время, чтобы познакомиться, а смена команды позволяет ускорить процесс благодаря постоянному общению, которого становится намного больше.Практические советы
Недостаточно просто найти напарника для новых сотрудников, чтобы они “магическим образом” вошли в курс дела. Удостоверьтесь, что у них есть вводные, видение общей картины перед первым сеансом парного программирования, и заложите дополнительное время на адаптацию. Так им будет проще следовать советам, внести свой вклад в совместную работу, и получить от неё максимум. Поставьте в пару новичков, и будьте уверены - они смогут потом работать самостоятельно.Составьте план по адаптации со списком тем. Для некоторых тем запланируйте специальные (“тематические”) сессии, для изучения которых новичок может скооперироваться для работы в паре. Если что-то изучено во время совместной работы - вычеркивайте из списка. Таким образом прогресс в адаптации будет виден каждому участнику команды.
Это были цели и преимущества парного программирования. Следующая часть статьи будет посвящена подводным камням парного программирования - с какими затруднениями можно столкнуться при работе в паре.
Источник статьи: https://habr.com/ru/company/barsgroup/blog/558014/