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

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

Но сначала заметка о приобретении навыков.

Модель приобретения навыков Дрейфуса.

Модель приобретения навыков Дрейфуса — это модель, разработанная братьями Стюартом и Гербертом Дрейфусами в 1980 году. Эта модель предполагает, что учащийся проходит пять различных этапов на пути к изучению нового навыка. Эти этапы:

Новичок

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

Продвинутый новичок

Продвинутый новичок достаточно усвоил правила и теперь начинает их тестировать. Они пытаются понять, почему правила есть правила. «Что будет, если я нарушу правила?»

Компетентный

Компетентный четко понимает правила и может применять их для достижения цели. Они могут задавать правильные вопросы, чтобы получить желаемый результат.

Опытный

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

Эксперт

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

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

https://www.nature.com/articles/35088119

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

Применение модели

Какое отношение все это имеет к парному программированию? Много, если подумать. На этом этапе стоит отметить, что, вероятно, более ценно рассматривать уровни навыков с точки зрения конкретных навыков, например. Javascript, .NET, SQL, вместо того, чтобы привязывать кого-то к новичкам или опытным разработчикам или что-то в этом роде.

С учетом сказанного, оцените себя в соответствии с приведенными выше уровнями приобретения навыков, возможно, вы захотите специально нацелиться на навык, который хотите развить. Затем, если вы уже занимаетесь парным программированием, подумайте, с кем вы в последний раз работали в паре (если вы еще не занимаетесь парным программированием, рассмотрите одного из других разработчиков в вашей команде). Оценивайте их по уровням приобретения навыков и будьте честными, но без излишней язвительности. Наконец, подумайте о том, как прошло это соединение:

  • Выполнили ли вы задачу или задачи, которые вы поставили перед собой?
  • Каково было качество конечного результата? Вы были довольны этим?
  • Какие разговоры у вас были во время спаривания?
  • Один человек «водил» больше, чем другой?¹
  • Если да, то было ли это согласовано между парой или это произошло органично?
  • Было ли это сделано для того, чтобы «двигаться быстрее» или для того, чтобы способствовать росту менее опытного человека?
  • Вы вышли из пары с чувством, что узнали что-то новое или еще больше закрепили предыдущее обучение?

В зависимости от уровня навыков пары результаты этой пары могут иметь значительно разные результаты. Например:

Эксперт + Новичок

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

Продвинутый новичок + Продвинутый новичок

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

Компетентный + Новичок

Это хорошая пара, поскольку компетентный еще не оперирует проницательностью или интуицией. Они просто научились хорошо думать и применять правила. Они могут помочь контекстуализировать правила для новичков и ответить на их «почему», когда они перерастут в продвинутого новичка.

Эксперт + Опытный

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

Я обсудил здесь лишь несколько возможных комбинаций, их гораздо больше с потенциалом действительно ценных результатов.

В каких парах вы работали?

Каков был ваш опыт работы с этой комбинацией?

  1. «Вождение» в данном случае является общим термином, используемым для человека, который в данный момент печатает во время парного программирования.
  2. Глупых вопросов не бывает.

Первоначально опубликовано на https://destructured.dev.