Парне програмування, коли водій та спостерігач мають різний рівень кваліфікації та досвід


30

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

Але мені просто цікаво, що стратегія все ще працює у цій справі. Наприклад

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

Не могли б ви запропонувати стратегію парного програмування у наведеному вище випадку?


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

Але, якщо зробити це, як ви пропонуєте, це може бути приголомшливою можливістю навчання.
Mawg

Відповіді:


27

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

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


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

2
Ви просто повинні бути обережними, щоб старший не був водієм 100% часу.
HLGEM

13
@HLGEM Я б навіть стверджував, що менш досвідчена людина повинна бути водієм більшу частину часу, тоді як більш досвідчена людина переглядає код на предмет дефектів та стилю або пише тестові справи проти нього.
Томас Оуенс

1
Я згоден з @ThomasOwens; наявність менш досвідченого партнера приводить його "досвід" швидше, ніж будь-який інший метод, дозволяючи їм ділитися своїми ідеями та думками з старшим партнером. Мине багато часу, перш ніж рівень їхньої кваліфікації значно ближче.
Ерік Кінг

1
Цікаво, чи це робить старшого розвідника більш зобов’язаним практикувати те, що вони проповідують?
JeffO

16

Саме для цього було використано програмування парних випадків для: обміну досвідом між старою бородою та молодим коником.

Це двосторонній обмін: спритні комахи мають багато чого навчити ревматизувати мізки.


1
Хоча ти, мабуть, вважаєш мене одним, я захопився "ревматичними мізками" ...
Мар'ян Венема

1
Я не думаю, що тут можна застосувати термін "історія користувача". Історії користувачів описують бізнес-вимоги до програмного забезпечення.
Конрад Рудольф

Так, я думаю, що він означає "використовувати футляр".
Йорг W Міттаг

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

10

Коли я отримав підвищення в своїй команді, я був новачком в J2EE, але я був знавцем цієї галузі. Мій старший (новий керівник команди) був досвідченим J2EE, але не в платформі.

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

Розрив у досвіді між ними є ключовим фактором для створення програми imho.


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

5

Я опишу свій досвід і спробую вийняти з нього якусь «стратегію».

Я колись пару програмував з повним непрограмістом. Він був експертом у галузі розробленого нами програмного продукту. Навпаки, у мене не було досвіду в проблемній галузі. І він також був моїм керівником на даний момент (я знаю, це може здатися дивним :)

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

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

Однак часом це було досить заляканим, оскільки навіть перерва на чай стала цілком «відволіканням на роботу» (не з його точки зору; просити перерви тощо було просто незручно).

Отже, це насправді не є програмуванням пари, оскільки він майже не міг переглянути код під час введення. Однак, здавалося, це була розумна стратегія (принаймні на деякий час). Зрештою, це взагалі спрацювало через відносну простоту як методології розробки (я маю на увазі, ніяких складних методик розробки програмного забезпечення, як OOP Patterns, не було залучено), так і теми. Це не спрацює у випадку, якщо нам доведеться розробити компілятор, я думаю. Я вважаю, що це все-таки може спрацювати, якщо спостерігач непрограміст бере участь у процесі розробки невеликих чітко визначених творів. Скажімо, це нормально, щоб він спостерігав за програмуванням функції "обчисли параметр X з Y і Z за заданим алгоритмом", але це може бути не так добре, щоб він спостерігав за загальним процесом проектування системи (мається на увазі розвиток архітектури програмного забезпечення, тобто ієрархія класи,

Я думаю, що це би спрацювало ще краще, якби він мав якісь основні навички програміста, тому що мені не доведеться пояснювати "що таке масив".

Сподіваюся, це допомагає :)


Це добре досвідчене пояснення!
Сакарес

2

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

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


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

1

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

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

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