Наскільки поширене парне програмування на робочому місці?


16

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

Цікаво, чи це через гроші / час (точковий шеф-бос помічає двох людей на одному комп’ютері, які працюють над тим самим кодом !!!! як вони наважуються!) Чи з інших причин?


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

3
Дуже важко переконати гострого волохатого боса, що це має цінність.
Вальтер

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

1
@Michael, не завжди, але іноді я думаю, що спаровування за старим кодом може бути корисним. Це може розбити силос та / або зменшити витрати на рефакторинг. Однак, я повністю згоден з вами.
DevSolo

5
@TZHX: "Двоє людей на один вихід - це поганий бізнес". Це серйозно хибний аргумент, і ви його знаєте (як, наприклад, оплата програмістам за рядок коду). Парне програмування є складною темою, і його не можна відпускати так легко.
Мартін Вікман

Відповіді:


20

У мене був такий самий концерт протягом 15 років, і ми недавно (останні 12-18 місяців) починали застосовувати Agile методи. Там, де використовується парне програмування, історія / особливість результатів була реалізована на час з меншими дефектами. Я все ще не думаю, що його використовують досить часто.

До нашого прийняття Agile один інший розробник і я часто працювали клавіатурою періодично протягом багатьох років (можливо, раз на 3-4 місяці). Наша команда менеджменту виявила неохоче, але завжди була задоволена нашим неофіційним поєднанням, оскільки, як правило, виконувала декілька з наступного:

  • зменшені силоси в команді (величезна виграш, коли команда 6-8 дев)
  • виробляється код з меншими дефектами
  • кожен розробник, як правило, набирав у нього навички

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


чудове розуміння DevSolo, дякую за обмін. Я здогадуюсь, ви, мабуть, маєте досить стабільну команду (низька плинність кадрів?)
ozz

Будь ласка. Наш оборот був досить низьким ... 4 з нас ділилися одним офісом протягом 15+ років, хоча 4 переїзди (через 4 будинки та 2 штати)!
DevSolo

Іронічно, твій псевдонім "DevSolo";) nb мої переживання згодні з вашими
ChrisAnnODell

11

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


Дуже справжні Pemdas!
ozz

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

4
Ця професія вимагає контролювати его. Це не завжди просто, але нагороди будуть надзвичайно вигідними.
DevSolo

@DevSole ... що це стосується моєї відповіді?
Pemdas

@Perndas, я припускав, можливо, неправильно, що опір виникне через егої. Принаймні, коли я це бачив, це, здається, є причиною. Я бачив лише 2 (що я пам’ятаю) демонів насправді протистоять цьому. Его не могло вміститися в кімнаті, у іншого були проблеми з впевненістю.
DevSolo

9

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

Бажаю, щоб було зроблено більше.


4
Ще один інструмент, який ви використовуєте, якщо ви не знайомий, називається "Гумова укладання". В основному, покладіть на стіл предмет як гумову качку (ваша справді використовує іграшку Yoda) і поясніть їй проблему. дивіться c2.com/cgi/wiki?RubberDucking
DevSolo

Я використовую людину, яка сидить поруч зі мною ... ми не можемо ставити речі на свої столи.
CaffGeek

Серйозно?
Майкл К

@Michael ... ти не маєш уявлення про правила, які ми маємо тут. І все-таки кілька хороших речей переважають над усім поганим ... ледве.
CaffGeek

Сумно чути, що ці нерозумні правила управління застосовуються до програмістів (Це досить глупо, не думаєте? Вони повинні докласти додаткових зусиль, щоб ми були щасливі, щоб збалансувати це)
Zekta Chan

9

Мені це не байдуже:

1 - Я люблю слухати свою музику під час кодування. Далеко не всі хочуть почути, як Вбивця шумить у вухах.

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

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

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

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

Я вважав, що це може допомогти іншим підібрати деякі мої методики, але, беручи до уваги №3, вони навряд чи зможуть задати питання, так чи інакше порушивши мій потяг думок.

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


2
@Noah, заснований виключно на №2, я не впевнений, чи сприймаєш ти концепцію парного програмування. Ідея не виглядати через плече. Ідея, як я це практикував, - це поділитися ПК, щоб він працював у тандемі. Це не програмування master / slave, це однорангове програмування. Можливо, пізніше це кращий термін для цього ...
DevSolo

Це цілком справедливо. Деякі люди просто хочуть залишити їх у спокої, щоб зрозуміти це самостійно.
MattC

А також +1 для речі в навушниках. Я підриваю метал та / або транс цілий день і сильно роздратований, коли люди розмовляють зі мною про речі. Чи не можуть вони чекати, поки моя улюблена пісня закінчиться? : D
MattC

2
@Noah: Читаючи свій список, вам здається, що вам не вистачає тонших моментів парного програмування. Я не кажу, що це для всіх, і, звичайно, потрібен час і зусилля для переходу з режиму ковбоя в режим спільного використання. Так само, як потрібно час, щоб навчитися правильно робити TDD (або будь-яку іншу спритну практику з цього приводу).
Мартін Вікман

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

5

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

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


рідше, ніж я хотів би, це точно.
ozz

5

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


3

Не дуже часто. У всіх магазинах, в яких я був за останні 10+ років, я бачив це один раз. У найповільнішому і найменш ефективному магазині. Здається, це створює галасливі та стресові умови. Одна людина заводиться, роблячи водіння та постійно розмовляючи, не даючи іншим взагалі думати.

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

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