logo Профессиональные сайты
для вашего бизнеса

Парное программирование: эффективная или сомнительная методика?

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

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

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

Что же такое парное программирование и как оно относится к работе в команде?

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

Преимущества парного программирования:

  • Под руководством опытного наставника работа над кодом пройдет быстрее;
  • Новичок познакомится с реальными задачами и проблемами из мира ПО;
  • Такой процесс работы – увлекателен и динамичен;
  • Появляется возможность найти альтернативное решение.

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

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

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

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

Финансовая выгода очевидна – за счет экономии времени работа выполняется быстрее и эффективнее, и можно направить внимание профессионалов на другие задачи. Кроме того, благодаря быстрому обучению, новичок скорее станет специалистом и начнет приносить пользу компании. Еще процесс постоянного общения и вовлеченности в общее дело помогает быстрее влиться в коллектив и почувствовать себя там комфортно.

Как появилась такая идея? Классические принципы обучения

Что мы вообще знаем о работе в парах? Она преследует нас с самого детства: в детском саду, школе, университете.

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

Еще один интересный принцип – иногда «в комплект» к студенту-отличнику ставят троечника. Считается, что иногда именно отстающий в учебе может подать интересную идею или показать метод работы, незнакомый отличнику, использующего привычные шаблоны. Но, как показывает практика, чаще такое выливается просто в растягивание времени. Задачу, которую отличник в одиночестве выполнил бы за полчаса, в паре можно выполнять и все два.

Трудно сказать, насколько такой подход эффективен, ведь студенты работают с разной скоростью и качество тоже разное.

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

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

В любом случае, работа в команде или парах будет и далее использоваться в школах и университетах, так как при правильном применении она эффективна.

Сейчас произошел пересмотр того, что такое учить чему бы то ни было. Если старая школа стремилась в основном дать «знания», то теперь концепция повернулась в сторону навыков. Умение – это хорошо отработанный на практике навык, который вы сможете применить и через лет 20 после обучения. Сами по себе знания, к сожалению, не всегда эффективны. Они нужны именно для применения на конкретных задачах.

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

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

Особенности работы над кодом в паре

На первый взгляд, данный метод работы может вызвать раздражение. Но если присмотреться и попробовать на практике, можно найти интересные закономерности:

1) Это оптимальный способ обучения новичка. Вспомните свой первый день на работе. Если вы не супер-профессионал с рождения, то наверняка вы задавали массу вопросов вашему наставнику и при инструктаже вам ткнули в кого-то пальцем и сказали: «Будут вопросы, спроси его!».

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

Конечно, такой метод будет связан с долей стресса, вам потребуется очень быстро усваивать и самостоятельно структурировать всю полученную информацию. Работа будет выполняться сразу качественно, а полученная критика и обратная связь от профессионала – бесценны.

2)Такой подход позволит максимально быстро обучиться работе в команде. Поскольку именно группа профессионалов может обеспечить высокие результаты в масштабном проекте, уметь общаться – жизненная необходимость. Но стереотип о том, что программисты – молчаливые интроверты, иногда все же имеет реальные основания=).

Работая в паре, вы научитесь формулировать вопросы, вникать в особенности чужого кода и принципы мышления, выслушивать чужие идеи и генерировать собственные. И конечно, адекватно воспринимать критику и конструктивно критиковать самому.

3) Уровень должен быть примерно одинаковым.

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

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

Процесс работы

Если вы фрилансер, то напарника будет нужно искать самостоятельно, через профессиональные сообщества. Есть даже возможность работать вдвоем на расстоянии друг от друга.=)

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

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

Специфика работы программистов: насколько в паре будет удобно?

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

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

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

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

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

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

Как не завалить весь процесс?

У такого подхода есть и минусы, а при необдуманном применении может быть даже вред.

  • Нельзя слишком долго оставлять пары одними и теми же. Люди срабатываются, привыкают к ошибкам друг друга и исправляют только типовые;
  • Со временем вырабатывается привычка, и желание выискивать ошибки теряется. А критический взгляд очень важен для такой формы работы;
  • Еще программисты перестают искать альтернативный способ решения какой-либо проблемы, желая сэкономить время. В результате могут быть упущены более эффективные решения;
  • Иногда нужно контролировать время, так как специалисты перестают меняться каждые полчаса, переходя на смены по 4-8 часов, что теряет всякий смысл.

Подводя итог, приходим к мысли, что работу над кодом в паре стоит хотя бы попробовать. Чтобы была возможность сказать: это интересный и продуктивный способ, или наоборот – это ерунда и трата дорогого времени специалиста.=)

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

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

Нужен сайт? Наша веб-студия поможет!

Хотите стать программистом? Записывайтесь на наши онлайн-курсы.