Что такое парное программирование?
27 мая 2022 г.Вы смотрите на свой код и думаете: «Здесь все в порядке».
Но есть: приложение не работает.
И вы знаете, что жук смотрит вам прямо в лицо. Вы, наконец, поворачиваетесь к коллеге и начинаете объяснять проблему, и вдруг, на полуслове, до вас доходит — проблема и решение.
Кажется, все, что тебе действительно нужно было сделать, это… заговорить??
Если у вас когда-либо был такой опыт разработки программного обеспечения (у меня был много раз), вы знаете, что говорить вслух важно при решении проблем. Либо разговаривайте вслух с другими программистами, либо, если работаете в одиночку, разговаривайте с резиновой уткой (придумал метод отладки резиновой уточки). Смотреть на код тоже важно, но не слишком долго.
Так что, заведите себе резиновую утку, коллеги говорят – серьезно. Или, что еще лучше, выйдите в интернет и начните парное программирование вместе.
У парного программирования есть история
В подробном описании Парного программирования авторы Биргитта Бёкелер и Нина Сиссеггер описывают, как:
Парное программирование заставляет нас обсуждать подходы и решения, а не только продумывать их в своей голове. Говоря и объясняя вещи вслух, мы подталкиваем нас к размышлениям о том, действительно ли мы правильно понимаем или у нас действительно есть хорошее решение.
Они цитируют [Жана Бартика] (https://en.wikipedia.org/wiki/Jean_Bartik), одного из первых программистов компьютера [ENIAC] (https://en.wikipedia.org/wiki/ENIAC) в 1950-х годов, который сказал:
Бетти Снайдер и я с самого начала были парой. И я считаю, что лучшие программы и дизайны делаются парами, потому что вы можете и критиковать друг друга, и находить ошибки друг друга, и использовать лучшие идеи.
Итак, мы знали это тогда и знаем это сейчас: объединение двух или более разработчиков программного обеспечения вместе для решения одной проблемы перед одним экраном создает отличное программное обеспечение.
Хотя парное программирование не обязательно является экстремальным программированием или гибкой разработкой программного обеспечения, его можно использовать, чтобы позволить членам команды создавать и проектировать программное обеспечение и учиться доверять друг другу.
Модель парного программирования «Водитель/Навигатор» («Ты водишь, я вожу»)
В парном программировании два программиста используют один компьютер и клавиатуру. Это можно сделать онлайн с помощью совместного использования экрана или инструментов, созданных для парных программистов (см. Ниже).
Классическая метафора парного программирования — «водитель» и «навигатор». Водитель за рулем, штурман смотрит на карту; типы драйверов и навигатор описывает проблему и решение.
1. Процесс и преимущества парного программирования
Они оба работают одинаково усердно. Например:
- Пока водитель пишет код и думает, навигатор говорит, анализирует, тестирует — все время оглядываясь через плечо водителя.
- Роль водителя состоит в том, чтобы структурировать код, выбрать имена переменных и написать циклы, функции и условия, реализующие все, что говорит навигатор.
- Роль навигатора заключается в формировании общей картины решения, структурировании результатов, установке ограничений, проверке кода.
- Драйвер пишет чистый код. Навигатор упрощает задачу.
- И драйвер, и навигатор разрабатывают архитектуру и выбирают базу данных, технологию и общий внешний вид приложения.
- И водитель, и штурман несут ответственность за конечный результат, соответствующий требованиям оригинального технического задания.
- Водитель и навигатор вместе празднуют, когда достигают места назначения.
2. Проблемы и ловушки
Конфликтные моменты лежат в основе того, почему мы объединяемся в пары. Например:
- В чем разница между описанием «решения» и кодированием «алгоритма»? Например, навигатор говорит поставить красный круг посередине экрана со скоростью в реальном времени. Для этого навигатор говорит написать асинхронную программу. Драйвер не согласен, не надо рискованных и сложных асинхронных алгоритмов. Есть лучшее решение. Итак, кто победит?
- Что происходит, когда навигатору не нравится код?
- Что происходит, когда водителю не нравятся идеи или анализ штурмана?
Всегда есть два варианта решения этих конфликтов: либо пара остается в своих ролях (и доверяют друг другу), либо они вырываются из своих ролей и смиренно обсуждают варианты.
В этом весь смысл: парное программирование — это общение и командная работа, когда два эксперта терпеливо учат друг друга, чтобы стать лучше в том, что они делают.
Вот почему хорошо поменяться ролями, чтобы штурман сел за руль и следовал указаниям водителя, ставшего штурманом.
3. Наставничество или обмен опытом
В парном программировании часто бывает два сценария сопряжения:
- Старший со старшим разработчиком
- Старший с младшим разработчиком
Часто последний сценарий может лучше использовать ситуацию наставника и подопечного, когда навигатор не только устанавливает общую картину, но также может взять на себя набор текста, чтобы моделировать, обучать и делиться знаниями с менее опытным разработчиком.
Мы все всегда можем стать лучшими водителями, но эта пара «старший-младший» обеспечивает более четкую ситуацию «наставник-ученик».
Когда два пожилых человека находятся в паре, может потребоваться дальнейшее обсуждение и определение обязанностей каждой роли, когда они отправляются в путешествие.
Начать со значений
Мы обнаружили, что парное программирование работает. На многих уровнях: разработка программного обеспечения и более мягкие аспекты, такие как командная работа и создание индивидуальных ценностей.
Во всех сценариях действуют ценности: доверие, искренность, забота, мужество и скромность. По сути, царит открытое общение.
- Искренность
- Научитесь давать обратную связь
- Смирение
- Научитесь получать обратную связь
- Задавать вопросы при блокировке
- Не бойтесь ошибиться
- Доверять
- Верьте в своего партнера
- Признать и принять, что другие решают проблемы по-другому
- Грит
- Бросьте вызов друг другу
- Мотивировать друг друга
- Забота
- Воспитывать командную работу
- Делайте отличные продукты
Инструменты (программное обеспечение) для удаленного парного программирования
Прежде чем закончить, стоит упомянуть, что все это можно сделать удаленно. Видеоконференции с Zoom, Teams, Skype и другими подобными удаленными инструментами поддерживают совместное использование экрана и даже функции удаленного управления рабочим столом.
Однако для более надежных функций сопряжения вам может понадобиться один из инструментов, созданных для удаленного программирования пар, подобных перечисленным ниже.
Вот несколько рекомендаций по инструментам удаленного парного программирования, которые помогут вам в вашем путешествии:
- [Кортеж] (https://tuple.app/)
- [Флообиты] (https://floobits.com/)
- [Код Visual Studio с функцией Live Share] (https://visualstudio.microsoft.com/services/live-share/)
Оригинал