Перевод статьи «The Psychology of Pair Programming».

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

Отталкивайте клавиатуру, а не тяните к себе
Клавиатура, как пишет Фройденберг, это физический компонент контроля. Инженеры могут передавать мышь хоть по всей стране, но клавиатура это нечто священное. В высокопроизводительных парах «водитель» добровольно принимает на себя контроль над клавиатурой. «Штурман» никогда ее не отбирает. Исходя из этого, мы можем вывести простые правила и для водителя, и для штурмана.
Водитель должен знать, когда нужно остановиться
Приведу пример, как это проиллюстрировала Фройденберг:
(Анна – штурман, Бен – водитель).
Анна: «If you…..go to….»
Бен: (сдвигает клавиатуру к ней) «Веди ты, так будет проще».
Водитель знает, какой способ коммуникации будет самым эффективным, и рад отказаться от контроля, когда нужно. Не давайте вашему эго намертво вцепиться в «ключи». Передавайте их напарнику при необходимости.
Штурман не должен пытаться захватить власть
Когда ваш черед смотреть – смотрите. Давайте подсказки, будьте дружелюбны, но не пытайтесь контролировать руки водителя. Таким образом вы сковываете его.
При парном программировании позиция водителя часто ассоциируется с большей властью, но и штурман вполне способен устроить «катастрофу», вырвав клавиатуру в неподходящий момент. Большое могущество накладывает большую ответственность.
Вам нужна возможность рисовать где-нибудь
Белая доска это стандартное решение. Прекрасное большое чистое пространство, которое можно исписать. Слова это, конечно, хорошо, но ничто не превзойдет кучку кривых прямоугольников и не слишком ровных линий.

Ключевым открытием Фройденберг в отношении высокопроизводительных пар было то, что они часто пользуются набросками схем. Сам творческий акт создания такой схемы стимулирует мышление и подстегивает память. Эти схемы оказались куда более мощными в своем действии, чем заранее подготовленные.
Иногда трудно что-то передать без наспех нарисованной картинки. Если у вас нет доски, используйте блокнот.
Приветствуйте спонтанную помощь извне
Вот вы сидите, работаете над задачей (в паре). Вы спорите, обсуждаете и начинаете писать код. Ничего не получается, и вы понятия не имеете, почему. Нужно бы сосредоточиться над этой задачей получше, скажем, еще на несколько часов непрерывного программирования.
И вдруг… Билл из команды платежей наклоняется к вам и спрашивает вас о чем-то, о чем вы только что говорили.

Но при этом Билл высказывает хорошую идею
«Эй, а этот endpoint использует другую модель, чем остальные APIs», – бормочет Билл, опасаясь вашего грозного взгляда. Вы, конечно, можете злиться на Билла, но на самом деле он был прав, когда прервал вас. Ведь без этого вы просто написали бы какой-то совершенно неправильный код. Ваш враг не Билл, а ваш способ работы.
Вашу работу непременно будут прерывать, и особенно, когда вы делаете что-то не то. И как обнаружила Фройденберг, коммуникация такого рода всячески приветствуется высокопроизводительными парами. Она способствует обмену знаниями и делает парное программирование эффективнее.
Так что сходите извинитесь перед Биллом. Он только что сэкономил вам кучу времени и предотвратил появление нескольких новых седых волос.
Защищайте контекст
Проблема предыдущего сценария в потере контекста. Может, Биллу и стоило бы посетить какой-то тренинг насчет личных границ, но если бы вас не перебил Билл, это была бы Сандра из отдела операций. Чертова Сандра…
Защитить сложный часовой механизм контекста, выстроенный в вашей голове, вы можете только в собственной комнате. На рабочем месте вам постоянно придется разговаривать с людьми, и не всегда на ваших условиях. Как говорит Фройденберг, разработчикам постоянно нужно работать на нескольких уровнях абстракции одновременно, причем все время переключаясь между разными степенями детализации. Поэтому создавать большие сложные картинки в голове очень сложно. Как с этим справляются пары с высокой производительностью?

Конечно же с помощью списков!
Ключ к решению проблемы – концентрация конкретно на том, чем вы занимаетесь в данный момент. Когда встречаете что-то новое, помещайте это в список. Элементы в списке служат своего рода флажками, напоминаниями о вопросах и фактах, которые вы обнаружили. Они позволяют вам сосредоточиться на текущей задаче и при этом не забывать об открытиях, совершенных по пути.
В следующий раз, когда к вам заглянет Джеймс и прервет вашу работу, попросив поздороваться с незнакомцами в вестибюле, ваш контекст будет спасен. Это прерывание может вас задержать на мгновение, но стоит вам взглянуть на свои списки – и вы вернулись в матрицу.
И еще кое-что о списках
Чаще всего подобные списки не пересматриваются. Они пишутся и выбрасываются. По сути это кратковременное хранилище, расширяющее вашу память. Поэтому не стоит беспокоиться о том, чтобы они были четкими и опрятными. Вам нужно просто перенести свои идеи на что-то более постоянное, чем желе в вашей голове, и таким образом защитить текущий объект, на котором вы сосредоточены.
Высокоэффективные пары не боятся поменяться местами
Чашка кофе номер семь. Этот чертов тест никак не зеленеет, что бы вы ни делали. Вы с напарником хотели поменяться местами, когда тест будет пройден, а в результате «ведете» уже больше часа. Вы устали, ваш партнер скучает, прогресс не наблюдается. Скоро вы отправитесь домой и нальете себе виски, как герой американского фильма из 90-х.
Мы видели такое тысячи раз. Люди полностью погружаются в задачу и отказываются пересматривать свои цели. Часто из-за гордости, порой из-за чистой ярости. Доктор Фройденберг обнаружила, что высокоэффективные пары устанавливают определенные «метки», когда намерены поменяться местами, но могут сменить друг друга и между этими метками.
В общем, если у вас закончился сок, это должно быть достаточно уважительной причиной для смены водителя. Не нужно совершать трудовые подвиги.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]