Өмнөх блогт TDD-г Pair Programming-тай хослуулж хийвэл маш үр дүнтэй гэж дурдсан билээ. Тиймээс Pair Programming (PP)-н талаар бичье гэж бодлоо.
Pair Programming буюу хосоор программчилах нь 2 инженер зэрэгцэж суугаад нэг компьютерыг дундаа хэрэглэн, нэг асуудлыг хамтдаа шийдэх арга юм. Гол санаа нь нэг инженер дангаараа хийхээс илүү чанартай программ гаргаж авах, илүү үр дүнтэй ажиллах, мэдлэг туршлагаа солилцох явдал юм.
Илүү үр дүнтэй, чанартай гэснээс PP-г хэрэгжүүлсэн, хэрэгжүүлээгүй үеийн харьцуулсан судлагаа байдаг юм байна. Wikipedia-д туршилтын болоод мета-анализийн судлагааны үр дүнг танилцуулжээ.
Ютагийн их сургуулийн эдийн засагч Williams ингэж дурджээ:
Хосоор программчласнаар тус тусдаа программчласнаас 15%-р их цаг зарцуулж, алдаа 70%-85%-р буурдаг. Ихэнхи тохиолдолд программыг тестлэх, зүгшрүүлэх (алдаа илрүүлэх) нь программчлахаас илүү цаг зарцуулдаг тул сэтгэл татам үр дүн юм.
Луи ямар хосын үед бүтээмж илүү дээшлэх вэ гэдэг судлагаа хийжээ. Шинэхэн программист хосын бүтээмжийг шинэхэн программист ганцаар ажиллах үеийнхтэй, архаг программист хосын бүтээмжийг архаг програм-мист ганцаар ажиллах үеийнхтэй харьцуулсан байна. Үр дүнд нь шинэхэн программистын хосын үед бүтээмж илүү дээшлэх нь харагджээ. Өөрөөр хэлбэл архаг программист хослох, архаг программист дангаар ажилах 2-н хооронд онцын ялгаа гарахгүй.
Бас нэг судлагаагаар нарийн төвөгтэй системийн хувьд алдаа 48%-р буурсан боловч зарцуулах хугацааны хувьд онцын ялгаа гараагүй байна.
Харин хялбар системийн хувьд 20% бага хугацаа зарцуулсан хэрнээ алдааны нягт (bug rate) бараг өөрчлөгдсөнгүй. Аль ч тохиолдолд бага хугацаа зарцуулж, бага алдаа гаргах гэсэн 2 чанарыг зэрэг хожиж чадаагүй байна. Эсвэл хугацаа хожино, эсвэл алдаа багасна. Гэхдээ л 84%-р бүтээмж дээшилжээ.
Мөн Луи, Чан, Носек нарын судлагаагаар (2008 он) зохиомжлох ажиллагааны үед хослох нь хамгийн өндөр өгөөж өгдөг гэж гарчээ.
Хэрхэн хослох талаар жаал дэлгэрүүлье. PP-д navigator-чиглүүлэгч, driver-жолооч гэсэн 2 янзын үүрэг байдаг. Чиглүүлэгч жолоочийн явах замыг зааж, замаасаа хазайх, төөрөхөөс сэргийлэх, хэдэн километрийн цаана хаашаа эргэх вэ гэх мэтийн дараачийн алхмыг бодож тунгаах үүрэгтэй бол жолооч чиглүүлэгчийн зааснаар программын кодыг оруулна. Үе үе байраа сольж, чиглүүлэгч жолооч болж, жолооч чиглүүлэгч болно. Энэ давтамж янз бүр байх ба голцуу 30-60 мин, эсвэл шинэ test case бичих бүрт, эсвэл тухайн өөрчлөлтийг хэн хамгийн сайн төсөөлж байгаа нь жолооч болох мэтээр ээлжлэн гүйцэтгэнэ.
Remote paring
Газар зүйн хувьд тархан байршсан баг, баг эсвэл багийн гишүүд хоорондоо алслагдсан тохиолдолд яаж гүйцэтгэх вэ? Энэ үед video conference, дэлгэц хувааж эзэмших, алсаас удирдах боломж бүхий программ ашиглаад хослож болдог. Үүнийг Remote pair programming (virtual pair programming, distributed pair programming) буюу зайнаас хослох гэдэг.
Манай компаний хувьд Chatwork гэдэг программ ашигладаг. Япон-Монголын хооронд үргэлж video chat хийх бөгөөд video chat хийх (remote pairing) нь бидний ажлын салшгүй нэг хэсэг юм.
Бидний хувьд remote paring-г дараах маягаар хийдэг.
1. Хамтрагчаа (1 буюу түүнээс дээш) chat list-с сонгоод
видео дуудлага хийнэ.
2. Шийдэх асуудлаа товч танилцуулна.
3. Зөвлөлдсөний эцэст хэн driver болохоо шийднэ.
4. Driver болсон тал дэлгэцээ share хийнэ.
5. Navigator зааварчилж, Driver гүйцэтгэнэ. Driver кодлож байх хооронд
Navigator дараагийн алхмыг бодно. Жишээлбэл: Дараачийн хийх ёстой
засвар, ямар test case дутуу байна? Яаж кодын давхцлыг арилгах уу?
(refactoring) г.м
6. Driver солигдох үед Navigator дэлгэцээ share хийж байраа солино.
Өмнөхтэй адилаар зорилгоо биелтэл дээрх алхмыг давтна.
Remote pairing хийх үед хүртэх, үнэртэх мэдрэхүйг эс тооцвол жирийн pairing-с ялгарах зүйл бараг байхгүй. Заримдаа тог тасрах, интернэт тасалдах явдал бий. Энэ үед нөөц интернэт гарц, ups их хэрэг болдог.
Paring хийхэд бэрх байж болох тохиолдол
- Хамтрагчид зан чанарын хувьд огт таарахгүй, нэгнийгээ хүлээн зөвшөөрөхгүй байх (Ийм тохиолдол ховор болов уу?)
- Туршлага ур чадварын хэт зөрүүтэй байдал: Туршлага ихтэй тал төгс алдаагүй код бичих тул туршлага багатай тал navigator-н ажлыг жинхэнэ утгаар хийх боломж олдохгүй байх, унтаа байдалд орох талтай. Уул нь зөв тийш залуурдаж чадвал туршлагагүй тал их юм сурч мэдэх боломж бий.
- Код бичих арга барилын зөрүү: Үүнийг кодлох стандартаар шийдэж болно.
- Хамтрагч ганцаараа ажиллахыг илүүд үздэг хүн бол
- Туршлагатай чадварлаг тал хослохыг туршлагагүй талын алдааг засаж, зааварлахаас өөрцгүй залхуутай ажил гэж үзэж буй тохиололд
Paring хийхийн давуу тал
- Хөндлөнгийн хяналт, зөвлөмж авсанаар кодлох ажиллагаа чанаржих
- Хөндлөнгийн хяналттай болсоноор coding standard сайн мөрдөгдөх
- Хэн хэнд нь хүлээн зөвшөөрөгдсөн код бий болох тул код хялбар ойлгомжтой болох.
- Бүтээмж дээшилж, алдаа багасах
- Өдөр бүр өөр хүнтэй хослосноор сайн туршлага (хандлага) багийн дотор хурдан дэлгэрэх, багийн гишүүд илүү нөхөрсөг болдог.
- Системийн талаархи мэдлэг өргөсөх
- Бага зардлаар сайн туршлага, арга барилыг бусдад хурдан дамжуулах боломжоор хангагддаг.
Дараагийн удаа хэрхэн яаж хэрэгжүүлэх талаар бодит жишээн дээр тайлбарлана. Энэ удаад ингээд өндөрлөе.
like
返信削除