Програмиране по двойки
Както подсказва самото заглавие на тази статия, ще ви представим идеята за създаване на програмен код по двойки. Една съвсем кратка и ясна дефиниция за програмирането по двойки звучи по следния начин: двама програмисти, работещи рамо до рамо, сътрудничещи си при създаването на един дизайн, алгоритъм, код или тест. Единият програмист е водещ, като има контрол над клавиатурата/мишката и активно въвежда програмата. Другият програмист е наблюдаващ и непрекъснато следи действията на водещия с цел идентификация на тактически (синтактични, спелинг и т.н.) грешки, като същевременно обмисля стратегията за направлението, в което ще продължи работата. Периодично двамата си разменят ролите и по този начин работят на равни начала при разработката на софтуера [1].
В професии като полицейската например отдавна се е наложила практиката за работа по двойки. Този подход съвсем успешно може да се приложи и по отношение на програмирането, въпреки че много мениджъри смятат работата по двойки за излишна загуба на ресурси. Някои от тях дори биха заявили, че е ненужно двама души да вършат работата на един, но дали в действителност е така?
Програмирането по двойки може да бъде разгледано от няколко различни аспекта. На първо място можем да поставим финансовите разходи за наемането на двама души, които привидно вършат работата на един. Според проучване, направено в Университета на Юта [2], разходите за разработка първоначално нарастват с 15 %, което се обяснява с логичното забавяне при конструирането на кода от двама души. За сметка на това създаденият код съдържа много по-малко грешки и разходите по-поддръжката на системата драстично спадат. В практиката отдавна е известно, че стойността за отстраняване на една грешка нараства експоненциално спрямо етапа, на който е била открита. Намаляването на грешките в процеса на работа драстично снижава разходите за контрол на качеството.
Вторият много важен аспект при програмирането по двойки е удовлетвореността на програмистите от свършената работа. Дори чисто от психологическа гледна точка двамата партньори си поделят отговорността за допускане на грешки и придобиват много по-голяма увереност в коректността на кода, който създават. Дискусиите и обменът на информация между двамата им помага много по-лесно да намерят решения в трудни ситуации, както и да споделят радостта от разрешаването на проблема. Всеки от тях придобива увереността, че не е изправен напълно сам пред трудностите и винаги може да получи подкрепа от партньора си. Този факт спомага за намаляването на стреса, свързан с работата.
На трето място можем да поставим качеството на дизайна. Преди написването на кода винаги е необходимо да се премине през проектиране на системата и вземане на множество важни решения, които оказват влияние през целия жизнен цикъл на продукта. Дискусиите по време на проектирането представляват своеобразен брейнсторминг и позволяват разглеждането на проблема от различни гледни точки, което води до избирането на възможно най-добър дизайн.
На четвърто място стои постоянното преглеждане на кода. Във всеки един момент можем да бъдем сигурни, че поне двама души са запознати детайлно със съдържанието на кода. Непрекъснатото преглеждане позволява откриването на много грешки още в ранен етап, непосредствено след тяхната поява.
На пето място са разпространението на знанията в екипа и уеднаквяването на уменията. От векове е известно, че човек се учи най-добре, когато наблюдава как някой друг извършва определена дейност. Когато двама души работят рамо до рамо, те неизбежно предават знания помежду си. По този начин по-неопитните програмисти бързо научават полезни техники, технологии или просто трикове за подобряване на работата. Дори опитните програмисти има какво да научат от по-неопитните, най-вече поради характерното професионално изкривяване от рутината при извършването на една определена дейност в продължение на години. Най-същественото е, че процесът на обучение протича почти незабелязано, паралелно с процеса на работа, което до голяма степен може да замени нуждата от провеждане на семинари или допълнителна квалификация на служителите.
На следващо място можем да поставим ефекта на “team building”. Работейки по двойки, хората започват да общуват много по-интензивно помежду си, опознават се по-добре, започват да разчитат и вярват много повече един на друг. Разбира се, този процес е бавен и невинаги сработва мигновено, но с времето се оформя подходяща социална среда, в която всички се чувстват много по-комфортно. Всичко това значително подобрява ефективността на екипа като цяло.
На последно място, но не и по важност, стои управлението на персонала и проектите. Мениджърите имат значителна полза от постоянното повишаване и уеднаквяване на знанията и уменията в екипа. От друга страна, това спомага за намаляването на риска от загуба на хора с твърде специфични знания и умения. Ако си зададем въпроса “Колко хора трябва да напуснат, за да пропадне един проект?”, то най-лошият отговор е “Само един!”. Колкото този брой е по-голям, толкова по-малък е рискът от провал на проекта, породен от недостиг на човешки ресурси.
Въпреки привидното увеличение на разходите при работата по двойки, не са за подценяване предимствата, до които води този стил на работа. В условията на все по-ожесточена конкуренция качеството на произвежданите продукти е основният коз по пътя към успеха. Бъдете предприемчиви и инвестирайте в своето бъдеще сега!
Информационни източници:
1. Williams, L. What is pair programming? North Carolina State University Computer Science, http://www.pairprogramming.com/.
2. Cockburn, A., L. Williams. The Costs and Benefits of Pair Programming, http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF.
Последни коментари
Няма добавени коментари!Добави коментар
Ако желаете да добавите коментар моля влезте, използвайки формата вляво.Ако не сте регистрирани това може да направите тук!