Это продолжение перевода статьи о парном программировании. Со второй частью можно ознакомиться здесь.

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

Совместная работа может быть физически утомляющей

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

Способы решения

Не забывать про постоянные перерывы. Если вы заметили, что забываете выделять время на отдых, попробуйте запланировать его и поставить будильник, например, на 10 минут в час. Или использовать технику Помодоро (о которой мы говорили в первой части статьи). Не пропускайте обеды: оторвитесь от монитора и возьмите перерыв. В паре вы сейчас работаете или нет, это увеличит продуктивность. Другой важный совет - попробуйте не работать в паре все 8 часов в день, ограничьтесь максимум 6 часами. Регулярная смена роли с  «Ведущего» на «Штурмана» также поможет увеличить энергию.

Интенсивная совместная работа может быть морально тяжелой

Тесная длительная работа с кем-то другим требует гибкости и иногда вызывает дискомфорт. Постоянное общение требует эмпатичности и межличностных навыков.

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

Способы решения

Разговор перед началом совместной работы поможет понять разницу между вами и адаптироваться к особенностям друг друга. Первую сессию стоит начинать с вопроса «Как мы хотим работать друг с другом?», «Как вы предпочитаете кооперироваться?». Подумайте, как вам нравится работать и когда вы эффективны, но не забывайте, что новые способы работы помогут найти новые инсайты.

В конце дня сверьтесь и получите друг от друга обратную связь. Если эта идея кажется вам неуместной, окиньте взглядом свой день в ретроспективе. Подумайте, как вы оба ощущали себя в течение работы. Где вы отвлекались? Где уставали? Что вам было комфортно, а что нет? Часто ли вы менялись местами у клавиатуры? Достигли ли целей? Может стоит попробовать что-то еще? Хорошо сделать это рутинной деятельностью, чтобы научиться вовремя давать обратную связь, когда что-то пойдет не так.

Справляйтесь с трудностями как команда. Можно устраивать отдельные сессии, на которых будут обсуждаться вопросы взаимодействия. Начинайте сессии с перечисления положительных сторон совместной работы, чтобы вы знали, что хотите от нее получить. Потом перечислите затруднения, с которыми сталкивается каждый при работе в паре. Теперь вместе подумайте, что предпринять. Можете обсудить триггеры каждого участника: какие действия доставляют дискомфорт?

Перерывы на совещания

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

Способы решения

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

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

Стоит помнить очевидную вещь: встречи будут всегда. Что вы в паре можете сделать, чтобы облегчить процесс? Сверьте календари и поймите, сколько у вас времени на сессию, есть ли оно вообще. Рассмотрите возможность пойти на совещание вместе. Попросите продакт оунера и других членов команды не прерывать вашу совместную работу.

Разный уровень навыков

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

Способы решения

Если у вашего партнера больше опыта: не думайте, что он всё делает лучше. Может, необходимость всё объяснять принесет ему новые инсайты. Вопросы «как и почему» могут привести к плодотворным обсуждениям и лучшим решениям.

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

Также поможет знание разных этапов обучения и понимание, как работает образовательный процесс от новичка до эксперта. Дэн Норт (Dan North) очень хорошо описал это в своем выступлении «Паттерны эффективных команд» (оригинал без субтитров). Он предлагает Дрейфусовскую модель приобретения навыков как способ понять различные этапы обучения и то, что их объединение значит в контексте совместной работы.

Властное воздействие

Решение этого вопроса – одно из самых сложных в списке. Парное программирование не происходит в вакууме, где нет иерархий. Бывают формальные иерархии, например, между руководителем и подчиненным, а бывают номинальные*:

  • джун - сениор;

  • люди без профильного образования - люди с ученой степенью
    *(по мнению авторов статьи).

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

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

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

  • Один человек не слушает другого и пропускает советы мимо ушей.

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

Способы решения

Первый шаг к решению - человеку, находящемуся «выше», понять и признать свою позицию. Только тогда получится честно поразмышлять о том, как на партнера влияет динамика власти. Постарайтесь самостоятельно подумать о своей позиции и ситуации. Что можно предпринять, чтобы нейтрализовать дисбаланс? Это может быть очень непросто.

Много пробелов в знаниях

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

Способы решения

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

Замена человека в паре ведет к смене рабочей обстановки

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

Способы решения

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

Работа в паре требует откровенности

«В совместной работе требуется показывать свои слабые места, делиться всем, что знаете и чего не знаете. Это бывает тяжело. Предполагается, что программисты должны быть умными, реально супер-сообразительными. Многие люди смотрят на то, что мы делаем и говорят: “Я никогда этого не повторю”. Это заставляет нас чувствовать себя особенными, дает чувство общности, а общность дает нам неуязвимость», - Том Хоулетт.

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

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

«Откровенность это место рождения инноваций, креативности и перемен», - Брене Браун

Способы решения

Чтобы показать слабые места требуется смелость и создание подходящей безопасной среды. Это связано с построением доверия в команде (личное общение, обратная связь, возможность задавать вопросы и др).

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

Убеждение руководителей и коллег

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

Способы решения

Нет простого и однозначного решения, как убедить других в эффективности такого метода работы. Ключевое – нужно время, чтобы для начала всё обсудить и убедиться, что все одинаково понимают парное программирование (например, прочитать эту статью;)). Потом найти возможность попробовать, например, выбрав одну пару, которая потом научит других, или предложив эксперимент из серии «давайте по умолчанию работать в парах следующие 2 спринта». Убедитесь, что у вас будет время на обратную связь и ретроспективу, чтобы поделиться успехами и подводными камнями.

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

Вопрос-загвоздка, которым часто задаются – экономическая сторона: действительно ли стоит такая работа двойной оплаты или даже больше, так как улучшается качество и ценность команды? Есть несколько исследований, к примеру, самое заметное (на английском), которое подтверждает, что оно того стоит. Однако мы с осторожностью относимся к попыткам «научно доказать» эффективность этой практики. Разработка – процесс, полный перемен и неопределенности, с огромным количеством задач помимо написания кода, такими как аналитика, тестирование, оценка качества. Тем более убежденные противники обязательно найдут, к чему придраться, в том числе ко всем «научным доказательствам» увеличения продуктивности. В конце концов вам нужно показать, что это работает именно ДЛЯ ВАС – и это единственный способ внедрить практику парного программирования в ваше окружение.

Комментарии (2)