Я кілька разів намагався програмувати парне програмування, в тому числі в організації, яка (коротко) розглядала його впровадження як обов'язковий процес для всіх інженерів (ви можете здогадатися, наскільки добре ця ідея виправдалася). Особисто я ненавидів це.
Причини, які я перелічу нижче, - це лише мої суб'єктивні переживання, і я не можу «виміряти» їх вплив конкретно. Але тут вони однакові:
1 - Наявність "навігатора" та "драйвера" допомагає лише в тому випадку, якщо перший голосовий, а другий слухатиме.
Всі ми зустрічали розробників, які вперті, завзяті до якогось теоретичного занепокоєння або патологічно не здатні - психологічно - «викинути» стару роботу, коли хтось запропонує проблему. І всі ми знаємо людей, занадто боязких чи невпевнених, щоб викликати занепокоєння чи запропонувати кутові справи.
Коли подібні розробники працюють в парі, навігатор швидко приймає пасивну роль, і в кінцевому підсумку, це те, що ви закінчуєте, - програмування з одноосібним автоматичним переглядом коду. Це монументальна трата ресурсів.
2 - Спарювання заважає творчості.
На противагу тому, що раніше відчувалося про значення "групового мозкового штурму", сьогодні існує консенсус, що творчі знання вимагають незалежності та самостійності . Коли ви працюєте наодинці, ви можете швидко зламати разом якусь божевільну ідею, щоб побачити, чи реально це реально. Ви можете безслівно зібрати якийсь дивний прототип, а якщо не вдасться, це не має значення, тому що ніхто не знає .
Порівняйте це з паруванням: коли я хочу спробувати якусь нову концепцію, я мушу переконати свого партнера, поговорити про них через впровадження, крок за кроком, і сподіваюся, що вони не будуть мене судити, якщо це не вдасться. Таке середовище є токсичним для створення нових ідей.
3 - Найменший дизайн спільного знаменника.
Коли пара не може реалізувати нові ідеї, як зазначено вище, або коли люди не можуть домовитись про якийсь фундаментальний принцип того, як функція повинна бути розроблена, то виходить брудний дизайн, який намагається йти на компроміс і нікого не задовольняти.
Якщо ви з’єднаєте розробника, який створює чудові, красномовні, високомобільні абстракції функціонального програмування із швидким і брудним виродком продуктивності, код, який вони разом створюють, зазвичай не буде ні надзвичайно елегантним, ні особливо швидким.
4 - Відсутність самостійності та жорстокої прозорості.
Насильницька прозорість - це фраза, яку я вирвав із помітно відомої (і досить суперечливої) полеміки проти методології Scrum. Він описує те, як деякі організації інфантилізують розробників та ставляться до них з підозрою, яка зазвичай зарезервована для непрофесійних працівників.
Що б ви не думали про «шкоду» того, щоб зробити розробників повністю прозорими (і ви не можете погодитись, це насправді шкода), багато людей цінують свою самостійність та здатність працювати самостійно, довіряючи робити все правильно. Це важлива психологічна потреба, і змусити розробників до сполучення (як я бачив, щонайменше в одному магазині) залишить працівників збентеженими, засмученими та відчуженими.
5 - Деякі розробники просто не грають добре в парах.
Деякі люди не можуть або не можуть вести себе належним чином у парних умовах. У них можуть бути погана гігієна, погані робочі звички, абразивна особистість, "гучний" і "інтенсивний" спосіб, або ціла низка інших атрибутів, які роблять їх відмінними індивідуальними працівниками, але поганими програмістами для пар.
Ви можете вирішити це? Не зовсім. Зміна особистої поведінки важко. Магазин парного програмування повинен бути дуже обережним щодо найму та вкладати багато часу, щоб побачити, як хтось працює, і чи зможуть вони добре працювати з однолітками. Однак жорсткіше дискримінація особистості означає, що наймання на роботу займе більше часу, якщо ви не ослабите свої стандарти щодо вмінь та навичок.