Pair Programming (برنامهنویسی دونفره) یکی از روشهای کدنویسی است که در آن دو نفر به صورت همزمان و با استفاده از تنها یک کیبورد در کنار یکدیگر کد میزنند! یکی از این دو نفر که تایپ کدها را انجام میدهد اصطلاحاً Driver (سکاندار) و دیگری که بر خطبهخط کدهای نوشته شده توسط سکاندار نظارت میکند، ارورها را بررسی نموده و در مورد طرح کلی برنامه فکر میکند Observer (ناظر) نامیده میشود.
پیش از این، در مقالهای تحت عنوان آیا میدانستید که برنامهنویسی دونفره میتواند شما را به برنامهنویس ماهرتری تبدیل کند؟ به بررسی مزایای این سبک برنامهنویسی پرداختیم که روی هم رفته برخی از مزایای این روش عبارتند از:
- ارتقاء کیفیت کدها (طراحی سادهتر و قویتر و باگهای کمتر)
- روحیۀ تیمی بالاتر
- به اشتراک گذاشتن دانش با سایر اعضای تیم
- مدیریت زمان
- و افزایش بهرهوری
حال در ادامه نگاهی خواهیم داشت به نکاتی در Pair Programming که رعایت آنها به منظور افزایش بهرهوری ضروری است.
قبل از اینکه پشت میز بنشینید، برنامۀ کاری خود را تعیین کنید
کار و یا تمرینی که میخواهید انجام دهید باید طوری برنامهریزی شده باشد که در بازۀ زمانی ۱ تا ۲ ساعت قابل انجام باشد. داشتن برنامۀ قبلی میتواند به پیشبرد اهداف شما کمک کند که در غیر این صورت، برنامهنویسی دونفره بیش از آنکه مفید باشد، به تلف شدن وقت طرفین خواهد انجامید!
هدف خود را به بخشهای کوچک تقسیم کنید
برای هر بازۀ چند دقیقهای، هدف کوچکی در نظر گرفته و با همتیمی خود بر سر انجام هر یک از این اهداف کوچک به توافق برسید چرا که این کار باعث میشود هر کدام از طرفین بدانند که هر لحظه قرار است چه کاری انجام دهند.
به همتیمی خود تکیه نموده و متقابلاً از او حمایت کنید
وقتی در نقش سکاندار هستید، سعی کنید در کوتاهترین زمان ممکن هدف کوچک مورد نظر را به اتمام برسانید و مسائل بزرگتر را در آن دخیل نکنید و کنترل کدهای نوشته شده و بررسی جایگاه آن در طرح کلی را به ناظر سپرده و به او اعتماد کنید. هنگامی هم که نقش ناظر را بازی میکنید، همزمان که همتیمی شما در حال کد زدن است، کدها را بخوانید. کار شما کنترل کدها است؛ بنابراین حواس خود را کاملاً جمع کنید و اجازه ندهید که چیزی از چشم شما دور بماند.
همزمان در مورد باگهای احتمالی، راههای سادهسازی کدها، ارتقاء طراحی و ... هم فکر کنید. خطاها و ناخواناییهایی که در کدها میبینید را به ذهن سپرده و یا یادداشت نموده و صبر کنید تا همتیمی شما کار خود را به پایان برساند و سپس نظرات و ایدههای خود را مطرح کنید (توجه داشته باشید که هنگام نظارت بر کدها، دائماً به همتیمی خود نگویید که چه بنویسد و چگونه بنویسد! بلکه اجازه دهید که خود او به طور خلاقانه به حل مسئله بپردازد، نه اینکه در تمام مدت مشغول تایپ کردن دستورات شما باشد.)
زیاد گوش کنید
پس از اینکه کار سکاندار در دستیابی به یکی از اهداف کوچک تعیین شده به اتمام رسید، ایدههای خود را مطرح کنید، در مورد روشهای جایگزین برای حل مسئله تبادل نظر نموده و چیزهایی که احتمال میدهید در کد نوشته شده پوشش داده نمیشوند را به بحث بگذارید (مثلاً در صورت امکان، نامهای بهتر و مناسبتری برای متغیرها، متدها، کلاسها و ... پیشنهاد دهید.)
همچنین، دانش خود را در اختیار همتیمی خود قرار دهید و همواره سعی کنید شنوندۀ خوبی باشید و به حرفهای همتیمی خود کاملاً گوش کنید. قطعاً وی نیز حرفها و ایدههایی برای مطرح کردن دارا است که معمولاً در این گفتگوها طرح سوالاتی از این دست میتواند به پیشبرد اهداف شما کمک کند:
- فکر میکنی این کد معتبره؟
- به نظرت درسته؟
- بعدش چه کار کنیم؟
- اجازه بده من درستش کنم (گاهیاوقات بهتر است به جای اینکه ایدۀ خود را با کلمات توضیح دهید، کدی را که در ذهن دارید مستقیماً تایپ نمایید.)
سعی کنید لحظهبهلحظه با همتیمی خود همگام شوید
چه سکاندار باشید و چه ناظر، لازم است بدانید که همتیمی شما از انجام یک کار خاص چه هدفی را دنبال میکند. اگر متوجه شدید که با طرف مقابل همگام نیستید و یکی از شما هدف تَسک مورد نظر را نمیداند، سعی کنید هرچه سریعتر با یکدیگر هماهنگ، همگام و بهاصطلاح تنظیم فرمان شوید.
اگر امکان آن وجود دارد، قبل از شروع هر بخش از کار با همتیمی خود در مورد آن گفتگو کنید. حتی گاهی بهتر است برای توجیه کردن او نسبت هدف، سؤالی را مطرح نمایید (مثلاً بپرسید به نظرت همینجا باید تست رو بنویسم؟) و گاهی هم نیازی به گفتگو نیست و همین که کد را بنویسید، هدف شما خودبهخود آشکار میشود. سعی کنید در حین کدنویسی، به اشارات کوتاه بسنده نموده و از گفتگوهای طولانیتر از ۱ دقیقه خودداری کنید.
اگر همتیمی شما نظرتان را در مورد موضوعی جویا شد، مثلاً پرسید «فکر کنم این متد باید حذف شه، موافقی؟»، به سرعت و با کلمات بلی/خیر به سؤالش پاسخ دهید اما توضیحات اضافی را به بعد از تکمیل کد موکول کنید. همچنین مشکلی نیست اگر گاهی کیبورد را در اختیار ناظر قرار دهید تا به جای ارائهٔ توضیحات طولانی، قطعه کد مورد نظر خود را تایپ نموده و سپس به نقش نظارتی خود برگردد. در واقع، میتوانید در یک لحظه نقش سکاندار/ناظر را جابهجا نموده و اجازه دهید همتیمی شما این بخش از مسئله را حل کند.
روحیۀ خود را حفظ کنید
پس از تکمیل موفقیتآمیز هر بخش از هدف کلی، لحظاتی را با هم به رفع خستگی بگذرانید و برای بخش بعدی خود را آماده کنید. هر بار که کدی را تست کرده و با شکست مواجه میشوید نیز لحظاتی را به روحیه دادن به یکدیگر و همفکری بپردازید تا دچار دلسردی و ناامیدی نشوید.
حداقل هر ۳۰ دقیقه نقش خود را عوض کنید
عوض کردن نقشها باعث میشود تا هر دو عضو تیم هم به جزئیات و هم به طرح کلی برنامه دقت کرده و بر آن اشراف پیدا کنند. هم کد زدن طولانی مدت و هم ناظر بودن بیش از ۳۰ دقیقه میتواند سبب خستگی و کاهش تمرکز شود. عوض کردن نقشها حالوهوای شما را تغییر داده و نیرویی تازهای به شما میبخشد.
در این مقاله، 7 نکتۀ مهم در مورد روش Pair Programming مطرح شد که رعایت آنها میتواند به اجرای هرچه بهتر این رویکرد کدنویسی کمک کند و نتیجۀ آن نیز پیشرفت هرچه سریعتر مهارتهای هر دو عضو تیم خواهد بود. نظر شما چیست؟ آیا تاکنون از روش کدنویسی دونفره استفاده نمودهاید و آیا توصیههای دیگری دارید که بتواند کارایی این روش برنامهنویسی را افزایش دهد؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.