Development

Состояние потока и парное программирование

(В оригинале – Pair Program and Feel the Flow)

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

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

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

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

Вот несколько ситуаций, когда состояние потока разрушается, а парное программирование помогает его сохранить:

  • Снижение «фактора грузовика». Немного цинично, но все же: скольких членов вашей команды должен переехать грузовик, чтобы команда не смогла успешно завершить проект? Другими словами, насколько вы зависите от конкретного разработчика? Знания распределены или сосредоточены? Если вы используете ротацию пар и задач, то всегда будет кто-то еще, обладающий такими же знаниями и способный завершить задачу. В результате поток команды менее подвержен «фактору грузовика».
  • Эффективное решение проблем. Если вы программируете в парах и сталкиваетесь с проблемой, то у вас всегда есть с кем ее обсудить. Подобные обсуждения наиболее вероятно приведут к результату, а в одиночку вы могли бы застрять. А из-за ротации задач ваше решение станет известно следующей паре, которая может его улучшить, если вы выбрали не самый оптимальный вариант.
  • Устойчивость к прерываниям. Если кому-то нужно будет задать вам срочный вопрос, или зазвонит телефон, или вам нужно будет ответить на срочный е-мейл, то ваш партнер в паре может продолжать двигаться вперед. Когда вы закончите свои дела и вернетесь к проекту, ваш партнер будет все еще в потоке и вы быстро присоединитесь к нему.
  • Быстрое включение новичков. В парном программировании, особенно при правильной ротации пар и задач, новички быстро входят в курс дела, узнают особенности кода и других членов команды.

Состояние потока невероятно продуктивно, но при этом и легко нарушаемо. Сделайте все, чтобы в него войти, и оставайтесь в нем, когда вам удалось его поймать.
Авторы оригинала – Gudny Hauknes, Ann Katrin Gagnat, и Kari Røssland