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

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

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

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

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

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

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

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

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

Авторы оригинала - [Gudny Hauknes](http://programmer.97things.oreilly.com/wiki/index.php/Gudny_Hauknes), [Ann Katrin Gagnat](http://programmer.97things.oreilly.com/wiki/index.php/Ann_Katrin_Gagnat), и Kari Røssland


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/ru/thing_78.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
