Па́рне програмува́ння — техніка розробки програмного забезпечення, при якій увесь код пишеться парами програмістів, які працюють за одним робочим місцем. Найчастіше зустрічається при екстремальному програмуванні.
Суть техніки полягає у наступному: один програміст працює над написанням коду, а інший сидить поряд і спостерігає за його роботою для визначення тактичних і стратегічних недоліків в коді, в тому числі помилок у синтаксисі, логіці програми, помилок в реалізації, які не підходять під існуючий дизайн системи. Після певного часу програмісти міняються ролями, або змінюють пари.
Переваги
- Обмін досвідом: Співпрацюючи у парі, можна дізнатися багато цікавої і корисної інформації від партнера.
- Знання про систему: Постійна зміна пар сприяє поширенню знань про різні частини системи всередині команди. Це дає можливість розуміти як система розвивається, покращувати дизайн системи, не дублювати логіку.
- Колективне володіння кодом: Коли всі програмісти задіяні у написанні всіх частин системи, то не може йти мови про персональне володіння класом або складанням.
- Наставництво: Кожен, навіть починаючий програміст, знає щось, чого не знають інші. Парне програмування — безболісний спосіб розповсюдити ці знання.
- Більше спілкування: Спілкування всередині команди допомагає вибудовувати довірчі відносини. Парне програмування додає спілкування в повсякденну роботу.
- Стандарти кодування: Сидячи в парі, постійно передаючи клавіатуру і міняючи пари, програмісти поширюють знання про те, які стандарти кодування прийняті на проекті, що в майбутньому може скоротити час на рефакторинг коду.
- Поліпшення дисципліни: Програмісти, працюючі в парі, більше часу проводять за вирішенням поставлених завдань і рідше влаштовують довгі перерви і займаються сторонніми справами, аніж програмісти, що працюють поодинці.
- Якість результату: В результаті парного програмування код одержується набагато якіснішим і містить на близько 60% менше помилок.
Недоліки
Парне програмування може бути набагато цікавішим і результативнішим, ніж програмування поодинці, якщо організоване правильно. І навпаки, може бути жахливим і нудним у порівнянні з роботою поодинці, якщо - неправильно. За спостереженнями, люди програмують в парі правильно дуже рідко. Велика частина спроб парного програмування губиться одним з перерахованих нижче анти-патернів.
- Спостерігай за Майстром: Присутній, коли в парі є програміст, досвідчений в своїй області. Питання менш досвідченого розробника про код, який генерується Майстром, не отримують відповіді. Майстер не поспішає віддавати клавіатуру напарнику, а коли віддає - втрачає інтерес до процесу.
- Диктатор: Один з розробників у парі завжди займає жорстку ультимативну позицію з приводу всіх рішень, які стосуються поточних завдань. У такій ситуації не може йти мови про взаємну допомогу або навчання в парі.
- Сходи за кавою: Один з розробників самостійно пише код і в процесі написання відволікає напарника сторонніми справами. Це порушує базову ідею про взаємну залученість програмістів у процес.
- Мовчазні партнери: Напарники не спілкуються один з одним, не коментують свої дії і рішення по ходу роботи. При відсутності зворотного зв'язку сенс пари втрачається.
- Поділ завдань за одним столом: Програмісти в парі паралельно працюють за двома комп'ютерами(настільний і ноутбук) на одному столі.
- Незручно сидіти: Найчастіша причина втоми при роботі в парі - незручне положення клавіатури і монітора для того, хто зараз генерує код. Коли процес написання коду переходить від одного програміста до іншого, останній не переміщається в центр столу, а нагинається до клавіатури, тим самим створюючи собі труднощі при роботі.
- Партнер зайнятий своїми справами: Під час роботи один з програмістів займається сторонніми справами.
- Свої налаштування оточення: Щоразу при переході управління від одного програміста до іншого, останньому потрібно переналаштовувати оточення для себе.
- Свій стиль: Кожен з партнерів дотримується своїх стандартів кодування, що викликає бурхливі дискусії і жахливо відформатований код.
Доцільно дати зворотний зв'язок і вказати на помилку парі програмістів, які працюють за цими анти-патернами. Практика показує, що роботу в парі досить просто може налагодити сторонній спостерігач.
Найпоширеніші стилі парного програмування
«Командир і Буркун» або «докучливий пасажир, який радить водію, як треба їхати»
Цей стиль — реалізація на практиці анти-патерну «Спостерігай за Майстром». Взагалі кажучи, водію в процесі розробки потрібно виконувати команди штурмана. Було б жахливо неефективним, якби штурман написав все сам, а водій вчився б на його прикладі. Тому парна розробка в цьому стилі насправді високоефективний шлях передачі саме цього типу неявних знань.
«Ралі»
У програмуванні люди говорять про деяку «зону» або «потік», щоб описати стан абсолютної концентрації або навіть трансу, який асоціюється з високою продуктивністю. У ралі-стилі парного програмування в потік входять двоє. Стає складніше їх потурбувати, тому що вони говорять мовою, зрозумілою тільки їм і ігнорують все, окрім коду на екрані.
Як водій програміст повинен:
- Думати вголос
- Озвучувати очікування
- Питати очевидне
- Ділитися інформацією, попереджати
Як штурман програміст повинен:
- стежити за «сюжетною лінією» і зупинити водія, якщо він робить щось, що не має сенсу
- активно підтверджувати або спростовувати припущення
- вимагати аргументи, якщо водій приймає неочевидні рішення
- шукати оптимальне рішення
- думати про майбутнє: Якщо водій попереджає про щось, він може не помітити тупика. Потрібно думати, що буде через кілька секунд, і повідомити про можливий шлях для розв'язання проблеми.
- знаходити вихід перш ніж буде ступор: Навіть при невпевненості в тому, що рух зайде в тупик, все одно краще мати на увазі альтернативні шляхи вирішення. Це в майбутньому допоможе заощадити час, коли доведеться повертатися назад.
«Екскурсія»
Виникає, коли штурман втрачає концентрацію і водій йому пояснює ситуацію. В цій ситуації все ще можна перемкнутися назад до ралі-стилю, але це вимагає додаткових зусиль з обох сторін. Потрібно переконатися в тому, що обидва програмісти розуміють весь виконуваний процес,і почати «екскурсію», в результаті чого через деякий час вони знову працюватимуть в стилі ралі. Якщо ж це не відбулося протягом максимум десяти хвилин, варто помінятися в парі (командир може замінити водія, який, ймовірно, почне діяти в стилі Буркун-Командир). Але в разі, коли не відбудеться позитивних змін, потрібно спробувати попрацювати деякий час в парі з іншим членом команди.
«Роз'єднана пара» або «Сплячий штурман»
Це реалізація на практиці анти-патерну «Мовчазні партнери», найбільш часто використовуваний, але найменш корисний тип парної розробки. Двоє розробників починають з обговорення дизайну, аналізу коду, і коли водій розуміє напрямок руху, штурман «вимикає мозок». Водій знає, що потрібно робити, і завдяки тому, що штурман його не відволікає, мовчить і працює швидше. Штурман лише спостерігає за роботою водія, не гальмуючи його, таким чином даючи більше простору.
Межі застосування
На практиці застосовувати парне програмування виходить не постійно, а близько 20% часу. Звісно цей відсоток приблизний і залежить від проекту, але в цілому 100% досягти не вдається. Зустрічаються також завдання, які немає сенсу робити в парі:
- Дослідницькі завдання: Якщо потрібно зробити дослідження, пошукати і поспілкуватися з фахівцями на тему поточної проблеми.
- Рутина: Якщо абсолютно очевидні наступні кроки, то робота в парі може стати занадто нудною і непотрібною.
- Потрібне розподілення: Якщо є два абсолютно різних завдання, на виконання яких мало часу, то доцільно займатися кожному своєю задачею.
Покращення продуктивності розробки
Парна розробка може бути виснажливою. Досить складно пам'ятати про те, що мозок потребує безлічі речей для ефективної роботи. Ось деякі з них в порядку значимості:
- невеликі перерви кожних 45 хвилин (краще кожних 20)
- вода (більшість головних болів викликана зневодненням)
- глюкоза
- нормальний сон
- кофеїн
Головною проблемою парної розробки є те, що люди (особливо розробники) ігнорують перерви. Досліди показують, що більшість людей може витримати не більше шести годин напруженої розумової діяльності в день. Звісно можна розширити цей ліміт за рахунок занять спортом, здорового харчування, але все рівно працювати не більше восьми годин.
Див. також
Посилання
- Практичні стилі парного програмування [ 28 жовтня 2012 у Wayback Machine.]
- TopCoder [ 14 березня 2022 у Wayback Machine.] (англ.) — змагання зі спортивного програмування
- c2:PairProgramming
- c2:PairProgrammingPattern
- wikiHow: Як програмувати удвох [ 29 жовтня 2012 у Wayback Machine.] Керівництво, що містить загальні відомості про організацію парного програмування.
Програми та плагіни для підтримки віддаленого парного програмування
- Містить Cola, Eclipse плагін
- Saros [ 20 березня 2022 у Wayback Machine.] Eclipse плагін
- VS Anywhere Розширення для Visual Studio 2010/2012
- XPairtise [ 25 серпня 2012 у Wayback Machine.] Eclipse плагін
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Pa rne programuva nnya tehnika rozrobki programnogo zabezpechennya pri yakij uves kod pishetsya parami programistiv yaki pracyuyut za odnim robochim miscem Najchastishe zustrichayetsya pri ekstremalnomu programuvanni Dva robochih miscya programistiv kotri zajmayutsya parnim programuvannyam Sut tehniki polyagaye u nastupnomu odin programist pracyuye nad napisannyam kodu a inshij sidit poryad i sposterigaye za jogo robotoyu dlya viznachennya taktichnih i strategichnih nedolikiv v kodi v tomu chisli pomilok u sintaksisi logici programi pomilok v realizaciyi yaki ne pidhodyat pid isnuyuchij dizajn sistemi Pislya pevnogo chasu programisti minyayutsya rolyami abo zminyuyut pari PerevagiObmin dosvidom Spivpracyuyuchi u pari mozhna diznatisya bagato cikavoyi i korisnoyi informaciyi vid partnera Znannya pro sistemu Postijna zmina par spriyaye poshirennyu znan pro rizni chastini sistemi vseredini komandi Ce daye mozhlivist rozumiti yak sistema rozvivayetsya pokrashuvati dizajn sistemi ne dublyuvati logiku Kolektivne volodinnya kodom Koli vsi programisti zadiyani u napisanni vsih chastin sistemi to ne mozhe jti movi pro personalne volodinnya klasom abo skladannyam Nastavnictvo Kozhen navit pochinayuchij programist znaye shos chogo ne znayut inshi Parne programuvannya bezbolisnij sposib rozpovsyuditi ci znannya Bilshe spilkuvannya Spilkuvannya vseredini komandi dopomagaye vibudovuvati dovirchi vidnosini Parne programuvannya dodaye spilkuvannya v povsyakdennu robotu Standarti koduvannya Sidyachi v pari postijno peredayuchi klaviaturu i minyayuchi pari programisti poshiryuyut znannya pro te yaki standarti koduvannya prijnyati na proekti sho v majbutnomu mozhe skorotiti chas na refaktoring kodu Polipshennya disciplini Programisti pracyuyuchi v pari bilshe chasu provodyat za virishennyam postavlenih zavdan i ridshe vlashtovuyut dovgi perervi i zajmayutsya storonnimi spravami anizh programisti sho pracyuyut poodinci Yakist rezultatu V rezultati parnogo programuvannya kod oderzhuyetsya nabagato yakisnishim i mistit na blizko 60 menshe pomilok NedolikiParne programuvannya mozhe buti nabagato cikavishim i rezultativnishim nizh programuvannya poodinci yaksho organizovane pravilno I navpaki mozhe buti zhahlivim i nudnim u porivnyanni z robotoyu poodinci yaksho nepravilno Za sposterezhennyami lyudi programuyut v pari pravilno duzhe ridko Velika chastina sprob parnogo programuvannya gubitsya odnim z pererahovanih nizhche anti paterniv Sposterigaj za Majstrom Prisutnij koli v pari ye programist dosvidchenij v svoyij oblasti Pitannya mensh dosvidchenogo rozrobnika pro kod yakij generuyetsya Majstrom ne otrimuyut vidpovidi Majster ne pospishaye viddavati klaviaturu naparniku a koli viddaye vtrachaye interes do procesu Diktator Odin z rozrobnikiv u pari zavzhdi zajmaye zhorstku ultimativnu poziciyu z privodu vsih rishen yaki stosuyutsya potochnih zavdan U takij situaciyi ne mozhe jti movi pro vzayemnu dopomogu abo navchannya v pari Shodi za kavoyu Odin z rozrobnikiv samostijno pishe kod i v procesi napisannya vidvolikaye naparnika storonnimi spravami Ce porushuye bazovu ideyu pro vzayemnu zaluchenist programistiv u proces Movchazni partneri Naparniki ne spilkuyutsya odin z odnim ne komentuyut svoyi diyi i rishennya po hodu roboti Pri vidsutnosti zvorotnogo zv yazku sens pari vtrachayetsya Podil zavdan za odnim stolom Programisti v pari paralelno pracyuyut za dvoma komp yuterami nastilnij i noutbuk na odnomu stoli Nezruchno siditi Najchastisha prichina vtomi pri roboti v pari nezruchne polozhennya klaviaturi i monitora dlya togo hto zaraz generuye kod Koli proces napisannya kodu perehodit vid odnogo programista do inshogo ostannij ne peremishayetsya v centr stolu a naginayetsya do klaviaturi tim samim stvoryuyuchi sobi trudnoshi pri roboti Partner zajnyatij svoyimi spravami Pid chas roboti odin z programistiv zajmayetsya storonnimi spravami Svoyi nalashtuvannya otochennya Shorazu pri perehodi upravlinnya vid odnogo programista do inshogo ostannomu potribno perenalashtovuvati otochennya dlya sebe Svij stil Kozhen z partneriv dotrimuyetsya svoyih standartiv koduvannya sho viklikaye burhlivi diskusiyi i zhahlivo vidformatovanij kod Docilno dati zvorotnij zv yazok i vkazati na pomilku pari programistiv yaki pracyuyut za cimi anti paternami Praktika pokazuye sho robotu v pari dosit prosto mozhe nalagoditi storonnij sposterigach Najposhirenishi stili parnogo programuvannya Komandir i Burkun abo dokuchlivij pasazhir yakij radit vodiyu yak treba yihati Cej stil realizaciya na praktici anti paternu Sposterigaj za Majstrom Vzagali kazhuchi vodiyu v procesi rozrobki potribno vikonuvati komandi shturmana Bulo b zhahlivo neefektivnim yakbi shturman napisav vse sam a vodij vchivsya b na jogo prikladi Tomu parna rozrobka v comu stili naspravdi visokoefektivnij shlyah peredachi same cogo tipu neyavnih znan Rali U programuvanni lyudi govoryat pro deyaku zonu abo potik shob opisati stan absolyutnoyi koncentraciyi abo navit transu yakij asociyuyetsya z visokoyu produktivnistyu U rali stili parnogo programuvannya v potik vhodyat dvoye Staye skladnishe yih poturbuvati tomu sho voni govoryat movoyu zrozumiloyu tilki yim i ignoruyut vse okrim kodu na ekrani Yak vodij programist povinen Dumati vgolos Ozvuchuvati ochikuvannya Pitati ochevidne Dilitisya informaciyeyu poperedzhati Yak shturman programist povinen stezhiti za syuzhetnoyu liniyeyu i zupiniti vodiya yaksho vin robit shos sho ne maye sensu aktivno pidtverdzhuvati abo sprostovuvati pripushennya vimagati argumenti yaksho vodij prijmaye neochevidni rishennya shukati optimalne rishennya dumati pro majbutnye Yaksho vodij poperedzhaye pro shos vin mozhe ne pomititi tupika Potribno dumati sho bude cherez kilka sekund i povidomiti pro mozhlivij shlyah dlya rozv yazannya problemi znahoditi vihid persh nizh bude stupor Navit pri nevpevnenosti v tomu sho ruh zajde v tupik vse odno krashe mati na uvazi alternativni shlyahi virishennya Ce v majbutnomu dopomozhe zaoshaditi chas koli dovedetsya povertatisya nazad Ekskursiya Vinikaye koli shturman vtrachaye koncentraciyu i vodij jomu poyasnyuye situaciyu V cij situaciyi vse she mozhna peremknutisya nazad do rali stilyu ale ce vimagaye dodatkovih zusil z oboh storin Potribno perekonatisya v tomu sho obidva programisti rozumiyut ves vikonuvanij proces i pochati ekskursiyu v rezultati chogo cherez deyakij chas voni znovu pracyuvatimut v stili rali Yaksho zh ce ne vidbulosya protyagom maksimum desyati hvilin varto pominyatisya v pari komandir mozhe zaminiti vodiya yakij jmovirno pochne diyati v stili Burkun Komandir Ale v razi koli ne vidbudetsya pozitivnih zmin potribno sprobuvati popracyuvati deyakij chas v pari z inshim chlenom komandi Roz yednana para abo Splyachij shturman Ce realizaciya na praktici anti paternu Movchazni partneri najbilsh chasto vikoristovuvanij ale najmensh korisnij tip parnoyi rozrobki Dvoye rozrobnikiv pochinayut z obgovorennya dizajnu analizu kodu i koli vodij rozumiye napryamok ruhu shturman vimikaye mozok Vodij znaye sho potribno robiti i zavdyaki tomu sho shturman jogo ne vidvolikaye movchit i pracyuye shvidshe Shturman lishe sposterigaye za robotoyu vodiya ne galmuyuchi jogo takim chinom dayuchi bilshe prostoru Mezhi zastosuvannyaNa praktici zastosovuvati parne programuvannya vihodit ne postijno a blizko 20 chasu Zvisno cej vidsotok pribliznij i zalezhit vid proektu ale v cilomu 100 dosyagti ne vdayetsya Zustrichayutsya takozh zavdannya yaki nemaye sensu robiti v pari Doslidnicki zavdannya Yaksho potribno zrobiti doslidzhennya poshukati i pospilkuvatisya z fahivcyami na temu potochnoyi problemi Rutina Yaksho absolyutno ochevidni nastupni kroki to robota v pari mozhe stati zanadto nudnoyu i nepotribnoyu Potribne rozpodilennya Yaksho ye dva absolyutno riznih zavdannya na vikonannya yakih malo chasu to docilno zajmatisya kozhnomu svoyeyu zadacheyu Pokrashennya produktivnosti rozrobkiParna rozrobka mozhe buti visnazhlivoyu Dosit skladno pam yatati pro te sho mozok potrebuye bezlichi rechej dlya efektivnoyi roboti Os deyaki z nih v poryadku znachimosti neveliki perervi kozhnih 45 hvilin krashe kozhnih 20 voda bilshist golovnih boliv viklikana znevodnennyam glyukoza normalnij son kofeyin Golovnoyu problemoyu parnoyi rozrobki ye te sho lyudi osoblivo rozrobniki ignoruyut perervi Doslidi pokazuyut sho bilshist lyudej mozhe vitrimati ne bilshe shesti godin napruzhenoyi rozumovoyi diyalnosti v den Zvisno mozhna rozshiriti cej limit za rahunok zanyat sportom zdorovogo harchuvannya ale vse rivno pracyuvati ne bilshe vosmi godin Div takozhEkstremalne programuvannya Viddalene parne programuvannya AgilePosilannyaPraktichni stili parnogo programuvannya 28 zhovtnya 2012 u Wayback Machine TopCoder 14 bereznya 2022 u Wayback Machine angl zmagannya zi sportivnogo programuvannya c2 PairProgramming c2 PairProgrammingPattern wikiHow Yak programuvati udvoh 29 zhovtnya 2012 u Wayback Machine Kerivnictvo sho mistit zagalni vidomosti pro organizaciyu parnogo programuvannya Programi ta plagini dlya pidtrimki viddalenogo parnogo programuvannya Mistit Cola Eclipse plagin Saros 20 bereznya 2022 u Wayback Machine Eclipse plagin VS Anywhere Rozshirennya dlya Visual Studio 2010 2012 XPairtise 25 serpnya 2012 u Wayback Machine Eclipse plagin