Парное программирование


7 0

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

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

Преимущество такого подхода:

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

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

В Канаде и США даже личностные качества могут стать причиной увольнения. Если кто-то дерьмо как человек, то каким бы программистом он не был, его всё равно уволят. Очень важно вливаться в коллектив. 

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

3.Когда над кодом работает двое, то он по любому будет более чистым и аккуратным. Это даже хуже, чем Open source. Тут ваш код водят сразу же и никто не захочет писать фуфло. 

4.Вдвоем проще дебагить и находить проблемы. Сколько раз мы зовем кого-то взглянуть на проблему или помочь с чем-то. Тут же у вас постоянно вторая пара глаз, корая может заметить то, что вы упускаете. 

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

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

7.Меньше фактора отвлечения. У меня два прямых подчиненных программиста и один QA, а так же постоянно помогаю соседней команде из трех программистов (лидер и два подчиненных). Так вот, меня постоянно дергают с просьбой помочь с чем-то, объяснить или показать. После каждой минуты, которую я трачу на других, мне приходится терять несколько минут на то, чтобы вернуться в свой режим работы и вернутся на свою задачу. А тут опять могут отвлечь. 

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

В общем, для работодателя достаточно много преимуществ, а что на счёт сотрудников? Они же прекрасно понимают, что работая в таких условиях, не получиться сидеть за компьютером в наушниках, слушать музыку или смотреть фейлы котят на youtube. Они сразу же отдают себе отчет, что придется работать 8 часов в день и показывать достаточно высокую производительность. 

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

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

Вообще Frontend и backend программисты достаточно часто относятся к труду друг друга пренебрежительно, считая именно себя богам проекта. Но когда они работают вместе, они больше начинают уважать труд друг друга. 

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

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

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

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

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

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

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

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


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

CodeWarrior

16 Aпреля 2015

Дичь


Dmitry Romanenko

16 Aпреля 2015

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


Евгений

16 Aпреля 2015

Все же не совсем понятно про одновременное написание кода? Пока один набирает код, а это по сути мысли программиста, другой смотрит что ли? Какое же в этом преимущество: работает один, а зарплату платить двоим? Вот если бы они одновременно вносили изменения в различные участи кода одного проекта, то дело другое. Получается, что в этом есть лишь небольшие преимущества организационного плана, которые здесь перечислены и на время разработки влияют лишь косвенно, в то же время это может оказаться и затратным: 2 зарплаты вместо одной, затраты на организацию рабочего места и оборудование для второго программиста. Уж если привлекать к одному проекту несколько сотрудников, то, к примеру, один бы занимался серверной частью, другой клиентской, третий отчетами и т.д. При этом работа велась бы одновременно, но изолировано, что ускорило бы общее время разработки, а все перечисленное тоже было бы, но может не в такой степени.


Max

16 Aпреля 2015

Работал в паре "крутых" компаний и там такой подход есть, ибо чистота кода для них первичный фактор. Плюсов на самом деле намного больше чем минусов. Так что это true/


jump

17 Aпреля 2015

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


Missy

17 Aпреля 2015

Подход исключительно для компаний где нереальная текучка кадров и важно сохранить абсолютную читаемость кода и понимание того что где. Ну и да только для компаний для которых в активное развитие вкладываться уже не нужно. Они и так успешные крупные супер компании которые могут хоть купаться в деньгах.
Но этот подход не разумен там где нужна эффективность работы. Где важно развивать компанию и иметь продуктивный с точки зрения затрат подход.
С точки зрения работодателя выбор таков:
Держать 5 программеров при обычном подходе и знать что за год они сделают 1 условный проект.
Или
Держать 30 программеров при описанном в статье подходе и знать что тот-же условный проект они сделают за 3 года.( и да на каждые 5 человек занятых "обычным" способом придется 30 занятых "парным программированием", вы ведь надеюсь не думали что этот способ заключается исключительно в посадке условно 2ух прогеров за один комп, это требует полной реорганизации работы и построения всех "рабочих структур" в компании)
Но каждая замена работника в первом случае будет означать +2 месяца ко времени разработки а во втором пройдет наземетно. Даже более того к концу 3го года во втором случае в разработке поучаствует более 100 человек за счет текучки кадров. Но время разработки какое было такое и останется и проект не пострадает.


Alex {S.N}

21 Aпреля 2015

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


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

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

Пишите мне