Які можливі недоліки парного програмування? [зачинено]


22

Парне програмування зараз досить відоме.

Він має ряд переваг, таких як:

  1. Програми з меншою кількістю помилок.
  2. Вартість технічного обслуговування після виробництва значно менша.
  3. Сформована практика оскаржується, що призводить до появи нових ідей.
  4. Програмісти навчаються один у одного.
  5. Програмісти розвивають м'які навички.

Але які недоліки парного програмування?


1
Чи є «паралель» у назві питання друкарською помилкою?
5gon12eder

14
Ви маєте на увазі, крім того, що для отримання одного і того ж (можливо, меншого) випуску потрібно двоє людей?
Роберт Харві

4
@ ThorbjørnRavnAndersen Напевно, менше.
Роберт Харві

4
@ ThorbjørnRavnAndersen У вашій математиці щось не так. В основному, ви говорите, що ви постійно переглядаєте експертну перевірку / код. Важко уявити, як це економніше часу.
Роберт Харві

5
Це можна досягти досить легко, не відволікаючись на повноцінну програму програмування пар. Просто працюйте з вашими колегами-розробниками програмного забезпечення в цій якості за потребою.
Роберт Харві

Відповіді:


28

Хоча парне програмування набуло значної репутації, воно також має декілька підводних каменів.

Деякі з них такі:

  1. У парному програмуванні ви не можете сидіти і самостійно оцінювати власний код.
  2. Одна з пар може перестати активно займатися.
  3. Водієві потрібно "програмувати вголос". Мовчазне програмування зменшує перевагу.
  4. Для отримання одних і тих же функцій витрачається більше людино-годин. Необхідно підтримувати баланс між якістю коду та підвищеною вартістю кодування.
  5. Феномен "спостерігати за майстром" може виникнути, коли досвідчений і початківець програміст з’єднається. Член-початківець може стати спостерігачем, коли досвідчений член виконує більшість кодувань.
  6. Коли два досвідчені користувачі з'єднаються між собою, може виникнути явище "его" розробника, кожен член якого намагається підштовхнути власні ідеї.

4
2 і 5 можна протидіяти Ping-Pong Pairing (перемикання ролей між драйвером і навігатором дуже швидко відбувається в режимі блокування за допомогою циклу TDD: Аліса пише провальний тест, Боб пише код, щоб зробити тестовий пропуск, Аліса рефактори, Боб пише провальний тест, Аліса пише код, щоб зробити тестовий пропуск, Боб рефактори, Аліса пише невдалий тест…). Таким чином, водій і навігатор перемикають ролі не пізніше ніж через пару хвилин (більше, як десятки секунд), і кожен член отримує однаково великі та важливі завдання.
Йорг W Міттаг

5
4 звучить очевидно, але я не впевнений. Наприклад, ловіння помилок та отримання зворотного зв’язку на ранніх стадіях, наприклад, можуть (або не можуть) насправді компенсувати подвоєні години розробника.
Йорг W Міттаг

4
@ JörgWMittag (повторно: парування Ping-Pong) звучить як рецепт дуже напруженого робочого дня: / Я сподіваюся, що мені ніколи не доведеться програмувати в місці, де вони застосовують цю чи будь-яку сувору методологію програмування в парі.
Андрес Ф.

4
Програмування пінг-понгу вимагає, щоб вони були взаємозамінними. У мене є колега, де єдиною розумною комбінацією програмування пари є те, що він подумає і набере мене (і розмірковує). Це допомагає йому тримати увагу і мені зрозуміти, що відбувається.
Thorbjørn Ravn Andersen

3
Ви також можете відзначити, що досить багато часу витрачається на обговорення тривіальних деталей, тоді як в оглядах коду ви можете зосередитися лише на важливих аспектах.
Джорджіо

24

Я кілька разів намагався програмувати парне програмування, в тому числі в організації, яка (коротко) розглядала його впровадження як обов'язковий процес для всіх інженерів (ви можете здогадатися, наскільки добре ця ідея виправдалася). Особисто я ненавидів це.

Причини, які я перелічу нижче, - це лише мої суб'єктивні переживання, і я не можу «виміряти» їх вплив конкретно. Але тут вони однакові:

1 - Наявність "навігатора" та "драйвера" допомагає лише в тому випадку, якщо перший голосовий, а другий слухатиме.

Всі ми зустрічали розробників, які вперті, завзяті до якогось теоретичного занепокоєння або патологічно не здатні - психологічно - «викинути» стару роботу, коли хтось запропонує проблему. І всі ми знаємо людей, занадто боязких чи невпевнених, щоб викликати занепокоєння чи запропонувати кутові справи.

Коли подібні розробники працюють в парі, навігатор швидко приймає пасивну роль, і в кінцевому підсумку, це те, що ви закінчуєте, - програмування з одноосібним автоматичним переглядом коду. Це монументальна трата ресурсів.

2 - Спарювання заважає творчості.

На противагу тому, що раніше відчувалося про значення "групового мозкового штурму", сьогодні існує консенсус, що творчі знання вимагають незалежності та самостійності . Коли ви працюєте наодинці, ви можете швидко зламати разом якусь божевільну ідею, щоб побачити, чи реально це реально. Ви можете безслівно зібрати якийсь дивний прототип, а якщо не вдасться, це не має значення, тому що ніхто не знає .

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

3 - Найменший дизайн спільного знаменника.

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

Якщо ви з’єднаєте розробника, який створює чудові, красномовні, високомобільні абстракції функціонального програмування із швидким і брудним виродком продуктивності, код, який вони разом створюють, зазвичай не буде ні надзвичайно елегантним, ні особливо швидким.

4 - Відсутність самостійності та жорстокої прозорості.

Насильницька прозорість - це фраза, яку я вирвав із помітно відомої (і досить суперечливої) полеміки проти методології Scrum. Він описує те, як деякі організації інфантилізують розробників та ставляться до них з підозрою, яка зазвичай зарезервована для непрофесійних працівників.

Що б ви не думали про «шкоду» того, щоб зробити розробників повністю прозорими (і ви не можете погодитись, це насправді шкода), багато людей цінують свою самостійність та здатність працювати самостійно, довіряючи робити все правильно. Це важлива психологічна потреба, і змусити розробників до сполучення (як я бачив, щонайменше в одному магазині) залишить працівників збентеженими, засмученими та відчуженими.

5 - Деякі розробники просто не грають добре в парах.

Деякі люди не можуть або не можуть вести себе належним чином у парних умовах. У них можуть бути погана гігієна, погані робочі звички, абразивна особистість, "гучний" і "інтенсивний" спосіб, або ціла низка інших атрибутів, які роблять їх відмінними індивідуальними працівниками, але поганими програмістами для пар.

Ви можете вирішити це? Не зовсім. Зміна особистої поведінки важко. Магазин парного програмування повинен бути дуже обережним щодо найму та вкладати багато часу, щоб побачити, як хтось працює, і чи зможуть вони добре працювати з однолітками. Однак жорсткіше дискримінація особистості означає, що наймання на роботу займе більше часу, якщо ви не ослабите свої стандарти щодо вмінь та навичок.


3
Хоча мені подобається фраза "насильницька прозорість", я вважаю, що краща методологія (scrum / agile або щось більш традиційне) не має відношення до того, чи стосуються розробників як професіоналів чи ні. Дисфункціональні організації поводяться з такими професіоналами, як діти, незалежно від того, чи дотримуються вони Scrum чи CMMI.
Девід

1
"Порівняйте це з паруванням: коли я хочу спробувати якусь нову концепцію, я повинен переконати свого партнера, поговорити про них через впровадження, крок за кроком, і сподіваюся, що вони не будуть мене судити, якщо це не вдасться. Такого роду навколишнього середовища токсичний для створення нових ідей. ": мова йде не лише про судження, це про швидкість. Ви не хочете, щоб вас відволікали, коли маєте ідею, ви хочете записати стільки, скільки зможете, доки ви перебуваєте в потоці. Парне програмування активно заважає вам це робити.
Джорджіо

1
Після того, як ви записали всі свої ідеї, ви можете прибрати їх, можливо, наступного дня, а після цього дозволити колезі зробити ретельний огляд, наприклад, на такому інструменті, як дошка для огляду, щоб вони мали весь час переглядати ваші готові ідеї і думайте про це без тиску часу. Парне програмування також запобігає цьому, оскільки воно намагається поєднати кодування та перегляд коду в одній діяльності.
Джорджіо

2
@ Jimmy: Якби ви написали п'ять відповідей замість однієї відповіді з п'ятьма пунктами, ви отримаєте п'ять відгуків від мене.
Джорджіо

Абсолютно погоджуєтесь, що експериментувати потрібно безшумно і швидко - точно протилежне тому, чого вимагає парування. Можливо, спарювання чудово працює для розробників, які виконують технічне обслуговування або додають дискретні функції у велику існуючу систему підприємства. Але я впевнений, що це зовсім не корисно для роботи, яка вимагає відкриття, нових технологій, винахідливості або творчих способів роботи зі складними обмеженнями.
Джиммі Брек-Маккі

12

Залежить від вашої ситуації чи перспективи.

Парне програмування добре для організації. Але чи добре це для людини?

Зрештою, це метод економії витрат (раннього зворотного зв'язку) та продуктивності; Йдеться не про вас, а про проект, продукт, компанію ($$).

Хоча ви можете мати особисті переваги, вони не є причиною або кінцем жодної методології розвитку. Наприклад, програмування пар на повний робочий день також зупиняє вас від розхитування, серфінгу тощо, вам доведеться виправдовувати свої паузи партнеру.

Ваш (обертовий) партнер буде найкращою камерою спостереження: посилюється інтенсивність роботи.

Або, поширюючи знання, особа стає менш ризикованою для компанії (наприклад, не може залишити компанію необхідними знаннями) і має менше "фішок для торгів".

Я впевнений, що ви знайдете більше балів, читаючи позитивні статті більш критично з ВАШОЇ реальної ситуації / позиції в компанії, а не з точки зору вашого менеджера.

Майже всі методики написані з погляду менеджера.


Якщо ви не є власником компанії, вам дають гроші за генерування коду. Чим кращий код ви можете створити, тим краще для свого роботодавця - думка про те, як придбати чіпси щодо свого роботодавця - це, на мою думку, не розуміння, що робить вас цінними в першу чергу. Я вважаю, що ПП настільки інтенсивний, що ви не можете цього робити цілий день, але автоматично потребує відпочинку.
Thorbjørn Ravn Andersen

7
Оскільки деякі люди змушені заробляти на життя, щоб "бути цінним для роботодавця", вони також повинні розраховуватись з власними інтересами, а не тільки з інтересами своїх роботодавців на увазі, як міньйони.
Гість

1
@ ThorbjørnRavnAndersen ми не живемо в ідеальному світі, де всі платять податки і всі отримують компенсацію на основі заслуг.
День

1
@ ThorbjørnRavnAndersen Чим краще код, тим краще для мого роботодавця? Я б хотів, щоб я жив у такому світі, але в моєму світі важливо якнайшвидше створити функціональність, де якість коду - просто проміжне м'яке значення, яке не повинно отримувати більше часу, ніж абсолютно необхідне. З помилками все нормально, вони, як правило, не важкі і легко виправляються.
Олексій

@ Алекс "зазвичай не суворий" - я прагну за тим світом: D
Гусдор

5
  1. Раптом тепер вам доведеться сказати комусь, коли ви хочете піти в туалет або схопити каву. Принаймні, не потрібно просити дозволу.

  2. Ви повинні впоратися з гігієнічними нормами іншої людини.


4

Окрім інших відповідей:

  1. Багато компаній, де я працював над тим, щоб випустити своїх програмістів на ноутбуках (базуючись на сайті клієнтів - легше зберігати обладнання, якщо їх брати додому після роботи, мати можливість виконувати дивну роботу з дому за допомогою VPN за дрібницю тощо) Багато років тому я вже мав проблеми побачити на екрані ноутбука іншої людини ("водія") ноутбук з точки зору плечевого серфінгу - вік цього не покращить (а деякі екрани в будь-якому випадку важко читати поза ідеальним кутом огляду).

    Тому парним програмістам знадобляться достатньо великі екрани, що збільшить вартість обладнання та обмежить пристосованість до місця розташування. Для деяких це не може бути проблемою, в інших випадках це буде проблемою.

  2. Я також виявив, що відмінності в уподобаннях особистої гігієни (включаючи куріння, вживання їжі та пиття), а також конфлікти особистості неминуче впливають на продуктивність. Досить просто сказати двом програмістам, щоб "висмоктати його і помиритися", часто це призведе до того, що люди швидше зачиняють рот і мовчки саботують один одного за допомогою пасивно-агресивних дій, щоб випромінювати почуття одне одного.
  3. Шум. Я, наприклад, як тихе робоче середовище. Я не уявляю постійної балаканини від деяких груп парних програмістів (як вам потрібно поговорити для спілкування). Навіть вокальна музика в моїх навушниках, як правило, заважає моїй зосередженості (чудові інструменти для офісного прослуховування ...). Я думаю, що це можна пом'якшити, віддаляючись від всюдисущого офісу відкритого плану до виділених офісів для двох осіб, але це знову призведе до подорожчання.

Анекдоти для вашого розваги:

  • Попередній роботодавець одного разу потрапив до підрядника з іншої країни (усі залишатимуться анонімними для захисту винних). Роботодавець забезпечив житло, але не транспорт. Оскільки зазначений підрядник жив по моєму маршруту на роботу, я зголосився забрати його і знову відпустити його. Скажімо, його особиста гігієна не відповідала тому, що я звик, і він також сильно курив ("найсильніший!"), Поки я цього не роблю. Під час нашої 15-хвилинної поїздки до офісу я тримав своє вікно згорнутим - навіть взимку - що не завадило моїй машині пахнути нерівним курінням після 3-місячного перебування колеги (ні, він не курив у машині , але він робив, поки мене чекав).
  • Ми також не займалися парним програмуванням, а сиділи поруч один за одним за конференційним столом (на час). Приблизно через місяць на штучній деревині столу було гарне коричневе кільце навколо положення миші колеги. У цей момент у мене з’явився відкритий стіл поруч із зоною відкритого плану в кол-центрі, який я віддав перевагу (за допомогою допомоги в навушниках).
  • Потім є всюдисущий офісний напій: кава. Хоча я і п'ю це, я можу походити без і не пити так часто, як можуть інші співробітники. Дихання на близькій відстані може бути досить неприємним - схожим на порожній забутий запах кружки. Давайте назвемо аромат "млистим" ...

3

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

Що неминуче трапляється через деякий час, це те, що пара розділиться на "перевірку електронних листів" або "ви переносите неправильну перевірку цього випуску" тощо.

Замість поліпшення виводу коду обсяг зменшується. І з практичних причин: "Мені потрібно йти на обід / зустріч із синхронізацією з тобою", і в соціальному "Я просто зачекаю, коли Боб закінчить те, що робить, перш ніж я попрошу про спарювання знову, я не хочу, щоб мене сприймали як нудоту".

Що стосується похвальних переваг, існує багато загальних практик, які досягають цього більш простими та ефективними способами


2

Скажіть двом старшим розробникам зробити "програмування болю", якщо вони впевнені, що можна виконати цю роботу, бо це найбільший недолік.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.