Мы углубимся в концепцию парного программирования и в то, как положительные и отрицательные стороны складываются друг с другом.

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

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

Быть водителем

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

Быть навигатором

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

Почему не оба?

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

Поскольку парное программирование занимает все более видное место в отрасли, у нас до сих пор нет четкого представления о том, приносит ли оно пользу или вред для программистов. Исследование Эффективность парного программирования: метаанализ показало, что пары, которые программировали менее сложные задачи, давали более быстрое время, но приводили к более низкому качеству кода. Принимая во внимание, что более сложные проблемы, которые давали больше времени, приводили к более высокому качеству кода. Без четких результатов мы должны погрузиться глубже.

Есть три варианта спаривания, которые мы можем классифицировать:

Эксперт-Эксперт

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

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

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

Есть один большой плюс, который может перевесить любые минусы этой пары, и это способность быть синхронизированными. Если два эксперта смогут договориться о том, как подходить к проблемам, практически без конфликтов, это приведет к идеальному результату парного программирования. Прекрасным примером может служить Microsoft и то, как Билл Гейтс и Пол Аллен смогли объединить программы и добиться чего-то феноменального.

Эксперт-новичок

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

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

Эксперт-новичок — самая непредсказуемая пара из-за множества факторов, которые могут повлиять на мастерство дуэта. Тем не менее, при высоком риске эта пара гарантирует наивысшее вознаграждение.

Новичок-новичок

Когда два разума думают одинаково, результаты будут скачками, но если два разума потеряны, никакого прогресса не будет, в этом заключается страх парного программирования «новичок-новичок».

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

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

Какой из них лучше?

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

Что можно и чего нельзя делать

Do’s

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

Не

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

Вывод

Подходит ли парное программирование для всех? Что ж, ответ не так прост. Каждый воспринимает вещи по-разному, и то, что это работает для одного программиста, не означает, что это будет работать для другого. Самая большая рекомендация — сохранять непредвзятость и смотреть, работает ли это для вас.

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

Процитированные источники:

J.E. Hannay, T. Dybå, E. Arisholm, D.I.K. Шёберг, Эффективность парного программирования: метаанализ, информационные и программные технологии (2009 г.), doi: 10.1016/j.infsof.2009.02.001, https://www.idi.ntnu.no/grupper/su/ publ/ebse/R11-pairprog-hannay-ist09.pdf