С небольшой заметкой о парном программировании и божественном вмешательстве.
Сегодня был первый (правильный) день испытаний на нашем курсе в Makers Academy. Мы проводим челлендж «Boris Bikes» в парах или, в моем случае, втроем, так как у нас нечетное количество студентов в нашей группе.
Решение проблем
Мы относительно быстро прошли первые испытания. Мои партнеры по паре явно приложили усилия к предварительному курсу, и это было видно — мы справлялись с задачами, как никто другой. То есть до тех пор, пока мы не столкнемся с проблемой, с которой раньше не сталкивались. В начале задачи представляли собой буквально пошаговые инструкции — сделай то, сделай то, получи такой-то результат. Однако на 11-м шаге, по моему личному впечатлению, уровень детализации инструкций начал снижаться. Вопросы для этого шага в основном говорили нам написать тест и сделать так, чтобы он прошел, а детали реализации оставлялись на наше усмотрение.
Я посмотрел на вопросы и был в тупике. Что я делаю? «Начни с малого!» — посоветовал мой штурман. Как это было верно! Мы решали каждый вопрос по одному, и примерно через 30 минут тесты были запущены и пройдены. Итак, какой вывод здесь? Почему я был в тупике?
Я просмотрел все вопросы и попытался визуализировать проблему как единое целое. НЕПРАВИЛЬНЫЙ! Совет тренера во время семинара по «петле обратной связи» состоял в том, чтобы «разбить это на более мелкие проблемы». Именно поэтому мой навигатор оказался прав на деньги — начни с малого. Определите самую простую и маленькую часть проблемы, которую вам нужно решить, и начните с нее.
Следующий шаг, напишите неудачный тест для проблемы. Когда я рассмотрел проблему изолированно, написание теста стало легкой задачей. Тест провален, напишите метод, тест пройден. После этого естественным образом возникла следующая часть задачи — взять следующую небольшую проблему и решить ее. Что, кстати, прошло на удивление хорошо.
Итак, выводы:
- Разбейте каждую проблему на мельчайшие возможные компоненты.
- Работайте в парах и слушайте мнение другого человека.
- Не бойся!
Парное программирование
Итак, сегодня тоже был мой первый полноценный опыт парного программирования. Я чувствовал, что для меня это была небольшая корректировка, потому что (i) я впервые делал это правильно; и (ii) нас было трое.
Поначалу я чувствовал, что наша сессия прошла немного бессистемно — мы договорились о некоторых основных правилах в самом начале, но, оглядываясь назад, недостаточно подробно говорили о времени и смене ролей. Это нормально, так как мы учимся. Я также чувствовал, что я был немного бесполезен, поскольку мои партнеры по паре были в курсе и знали свое дело — у меня было ощущение, что мой вклад был несколько излишним. Во время перерыва у меня была возможность послушать двух тренеров на лестничной клетке, чтобы получить совет, и вывод, который я извлек из этого, заключался в том, чтобы добавить немного структуры в процесс. (Был и другой совет, которым я поделился со своей парой. Но лично я считаю, что добавление структуры действительно сработало для нас.) Мы запускаем таймер помидора, и переключение стало более организованным. По мере того, как мы сталкивались с более сложными частями задачи, я также начал чувствовать, что могу внести свой вклад, и это было прекрасное чувство :)
Большое спасибо моей парной команде за сегодня и тренерам за своевременное** вмешательство :)
Выводы для сопряжения:
- важна структура;
- обсудите роли достаточно подробно, чтобы решить возможные проблемы (я полагаю, что это становится лучше с опытом);
- ищите советы по улучшению — спрашивайте и вы получите :)
** При своевременном вмешательстве это напоминает концепцию Карла Юнга о синхронности — возникновении «значащих событий», когда такие события не имеют объективной причинно-следственной связи между собой и имеют «значение» только для некоторых или всех. участники. Подумайте об этом — я «думаю» о своем опыте парного программирования. У нас перерыв, я спускаюсь вниз, чтобы немного попариться. На лестнице встречаю тренера, который провел для нас мастер-класс по «парному программированию». Пока я прошу совета и обсуждаю свой опыт, по лестнице поднимается другой тренер, который, как выясняется, является тем человеком, который может дать совет по «моб-программированию» (то есть, по сути, парному программированию с более чем два человека :) ). Я получаю совет, который мне нужен. Серия событий, между которыми нет причинно-следственной связи, но которые на самом деле имеют для меня значение… Именно тогда, когда мне это было нужно, я это получила… Значимый… (на этом этапе я мог бы углубиться в теорию квантовой запутанности , но, возможно, сейчас не время :)