- PVSM.RU - https://www.pvsm.ru -
Парное программирование является одной из практик XP [2]. Эта практика воплощает экстремальную (преувеличенную) идею Code Review. Если ревью позволяет улучшить качество кода, то давайте делать его постоянно, во время рефакторинга и написания нового кода.
Проблема проведения обычного Code Review заключается в том, что программисты дают очень поверхностную обратную связь, когда просто смотрят на ваш код. Но как только они начинаются с ним работать, вот тогда прилетает настоящая обратная связь по всем тонким местам и недочетам.
При парном программировании два человека сидят плечом к плечу за одним компьютером. Один из них является «водителем», у него в руках клавиатура и мышка. Второй делает постоянный ревью кода первого, чтобы определить тактические и стратегические недостатки в коде, в том числе ошибки в синтаксисе, логике программы, опечатки и реализации, которые не подходят под существующий дизайн системы. После определенного времени программисты меняются ролями, либо меняют пары.
Самый большой скепсис вызывает вопрос: Не будет ли разработка идти медленней, когда два программиста занимаются одной задачей?
Исследования показывают, что работа в паре делает либо с такой же скоростью, как и по одиночке, либо немного (15%) медленнее. Зато код получается намного качественней, содержит меньше ошибок (60%) и технических долгов [3].
Результаты исследований, приведенных ниже, очень схожи с моими наблюдениями в повседневной работе. К тому же я, как преподаватель в ЮУрГУ, начал давать парное программирование с самого начала своего курса. Мои результаты будут в конце учебного года, а пока подборка публичных исследований на тему:
Бонусы от парного программирования
Парное программирование может быть гораздо более интересным и увлекательным, чем программирование в одиночку, если делается правильно. И наоборот, может быть ужасным и скучным по сравнению с работой в одиночку, если делается неправильно.
По моим наблюдениями люди программируют в паре правильно очень редко. Большая часть попыток парного программирования губится одним из перечисленных ниже анти-паттернов.
Если вы заметили пару программистов, которые работают по этим анти-паттернам, то дайте им обратную связь и укажите на ошибку. Практика показывает, что работу в паре довольно просто может наладить сторонний наблюдатель.
В реальной практике применять парное программирование получается около 20% времени, а не постоянно, как может показаться из-за духа XP. Конечно, этот процент примерный и зависит от проекта, но в целом до 100% не доходит. Все-таки иногда хочется просто откинутся на спинку кресла и помедитировать на код, подумать о прекрасном и родить идею, как бы этот код сделать еще лучше.
Дело еще в том, что встречаются задачи, которые нет смысла делать в паре:
Надо понимать, что парное программирование дает выигрыш при марафоне и является почти убийственным, если мы делаем короткие проекты.
Правильно воспринимать парное программирование, как инструмент, а не панацею от всех проблем. Пробуйте эту практику, чтобы понимать в каких ситуациях она полезна, а в каких можно обойтись и без нее.
ExtremeProgramming.org: Pair Programming [18]
Pair Programming vs. Code Reviews [19]
Pair Programming Benefits [20]
Код ревью спасет вашу душу [21]
All I Really Need to Know about Pair Programming I Learned In Kindergarten [22]
Pair Programming Benefits: Two Heads Are Better than One [23]
Pair Programming: The disadvantages of 100% pairing [24]
Автор: AlexanderByndyu
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/agile/15202
Ссылки в тексте:
[1] Image: http://2.bp.blogspot.com/-SXOaxjMYz9E/UFWIssBM-4I/AAAAAAAAAqo/UXdLN7EptIo/s1600/1343904753_211429.jpg
[2] XP: http://en.wikipedia.org/wiki/Extreme_programming
[3] технических долгов: http://blog.byndyu.ru/2008/12/blog-post.html
[4] The Effects of Pair-Programming on Performance in an Introductory Programming Course: http://dsc.ufcg.edu.br/~jacques/cursos/map/recursos/sigcse2002.pdf
[5] The Impact of Pair Programming on Student Performance, Perception and Persistence: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.92.4853&rep=rep1&type=pdf
[6] In Support of Pair Programming in the Introductory Computer Science Course: http://collaboration.csc.ncsu.edu/laurie/Papers/PP%20in%20Introductory_CSED.pdf
[7] The Effects of Neuroticism on Pair Programming: An Empirical Study in the Higher Education Context: http://www.ict.swin.edu.au/personal/jgrundy/papers/esem2010.pdf
[8] Improving the CS1 Experience with Pair Programming: http://www.cs.uni.edu/~wallingf/teaching/agile/homework/support/pair-prog-in-cs1.pdf
[9] Pair Programming Improves Student Retention, Confidence, and Program Quality: http://users.soe.ucsc.edu/~charlie/pubs/cacm.pdf
[10] A Systematic Review of Pair Programming Research – Initial Results: http://nzcsrsc08.canterbury.ac.nz/site/proceedings/Individual_Papers/pg151_A_Systematic_Review_of_Pair_Programming_Research_-_Initial_Results.pdf
[11] The Social Dynamics of Pair Programming: http://www.ipd.uka.de/Tichy/uploads/folien/134/chongSocialDynamicsofPairProgrammingICSE07.pdf
[12] A Multiple Case Study on the Impact of Pair Programming on Product Quality: http://agile.vtt.fi/docs/publications/2005/2005_multiple_case_study_pair_programming.pdf
[13] Adoption of Pair Programming in the Academic Environment with Different Degree of Complexity in Students Perspective– An Empirical Study: http://www.ijest.info/docs/IJEST10-02-09-158.pdf
[14] The Costs and Benefits of Pair Programming: http://reference.kfupm.edu.sa/content/c/o/the_costs_and_benefits_of_pair_programmi_114178.pdf
[15] The Effects of Pair Programming in an Introductory Programming Course in Thailand: http://www.apsce.net:8080/icce2011/program/proceedings/pdf/C6_S9_73S.pdf
[16] состояния потока: http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%82%D0%BE%D0%BA_(%D0%BF%D1%81%D0%B8%D1%85%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F)
[17] почитать в Google: http://blog.byndyu.ru/2010/12/blog-post.html
[18] ExtremeProgramming.org: Pair Programming: http://www.extremeprogramming.org/rules/pair.html
[19] Pair Programming vs. Code Reviews: http://www.codinghorror.com/blog/2007/11/pair-programming-vs-code-reviews.html
[20] Pair Programming Benefits: http://c2.com/cgi/wiki?PairProgrammingBenefits
[21] Код ревью спасет вашу душу: http://pechorin.me/articles/code-review-story
[22] All I Really Need to Know about Pair Programming I Learned In Kindergarten: http://www2.yk.psu.edu/~sg3/cmpbd205/assign/week01/ACMarticlePairProgramming.pdf
[23] Pair Programming Benefits: Two Heads Are Better than One: http://pragprog.com/magazines/2011-07/pair-programming-benefits
[24] Pair Programming: The disadvantages of 100% pairing: http://agile.dzone.com/articles/pair-programming-disadvantages
Нажмите здесь для печати.