Pair Programming (برنامهنویسی دونفره) به حالتی گفته میشود که ۲ برنامهنویس به طور مشترک و همزمان بر روی یک پروژه کار میکنند؛ هر چند این روش پس از گذشت سالها به عنوان روشی مورد قبول و رایج درآمده، اما بسیاری از توسعهدهندگان هنوز چنین روشی را شخصاً امتحان نکردهاند. در برنامهنویسی دونفره، یکی از برنامهنویسها به اصطلاح سکاندار بوده و عملاً کد میزند و برنامهنویس دوم هدایتگر است. به عبارت دیگر، او کار سکاندار را تحت نظر داشته و از هر لحاظ کنترل مینماید. پس از مقدار زمان مشخصی، نقش دو برنامهنویس جابهجا شده و در طی کار گفتگوهایی بین سکاندار و هدایتگر صورت میگیرد که به اصطلاح بیشتر با یکدیگر تنظیم فرمان شوند. لازم به ذکر است که امروزه با ابزارهای آنلاینی که در دسترس قرار دارد، برنامهنویسی دو نفره از راه دور نیز امکانپذیر شده است.
با وجود این که در ابتدا به نظر میرسد این روش سبب افزایش هزینهها از نظر نفر/ساعت خواهد شد، اما بررسیها نشان داده است که کدنویسی دونفره نسبت به حالت عادی فقط 15٪ زمان بیشتری نیاز دارد و از سوی دیگر سبب کاهش 15٪ باگها و نقایص میشود. اکثر شرکتهایی که از برنامهنویسی دونفره بهره میبرند، به این نتیجه رسیدهاند که منافع این روش بیشتر از هزینههای آن است.
علاوه بر استفاده در محل کار، از این روش میتوان به عنوان ابزاری برای آموزش برنامهنویسی نیز استفاده کرد زیرا در این روش شنیدن، دیدن، عمل کردن و بازخورد گرفتن بلافاصله انجام میشود و تجربهٔ یادگیری همه جانبهای را برای فرد امکانپذیر میکند. برنامهنویسی دونفره به دو حالت کلی میتواند انجام شود:
دو برنامهنویس با سطح مهارت متفاوت
وقتی یک برنامهنویس ماهر با یک برنامهنویس تازهکار همگروه میشوند، برنامهنویس تازهکار در بهترین موقعیت برای یادگیری و رشد سریع قرار میگیرد. هنگامی که برنامهنویس ماهر نقش سکاندار را بر عهده میگیرد، برنامهنویس تازهکار نه تنها میبیند که چه کدهایی نوشته میشود بلکه با چگونگی نوشتن کدها نیز آشنا میشود.
این فرآیند بینش برنامهنویس تازهکار را نسبت به نحوۀ حل مسئله، میانبرها و روش برنامهنویسی تقویت مینماید و تفاوتش با حالت عادی درست مثل این است که از نزدیک شاهد کار یک آشپز ماهر باشید یا این که فقط دستور پخت غذا را خوانده باشید. هنگامی که برنامهنویس ماهر در حین کدنویسی توضیحاتی ارائه میدهد، شخص تازهکار امکان مطرح کردن سؤالات خود و بحث در مورد کدها را نیز خواهد داشت.
وقتی نوبت به برنامهنویس تازهکار میرسد تا سکاندار پروژه شود، یک راهنمای باتجربه در کنار او نشسته است و او میتواند بدون ترس و نگرانی اشتباه کند و از اشتباهات خود درس بگیرد که مزایای این روش برای برنامهنویس تازهکار بدیهی است.
در عین حال، کدنویسی دونفره برای شخص ماهر نیز ممکن است مزایایی داشته باشد؛ از جمله این که در معرض ایدهها و افکار جدید قرار گرفته و برای توضیح در مورد انتخابها و تصمیمات خود، وادار به تفکر انتقادی میشود. علاوه بر این، دیگر به صرف زمان طولانی صرفاً به منظور آموزش نیازی نخواهد بود و در حین انجام یک کار واقعی، تدریس و یادگیری نیز صورت میگیرد (به خاطر داشته باشیم که Critical Thinking یا تفکر انتقادی اصلاً ربطی به نقد/انتقاد کردن ندارد بلکه بدان معنا است که ما به قضایا از زوایای مختلفی نگاه کنیم).
دو برنامهنویس با سطح مهارت تقریباً یکسان
هنگامی که دو برنامهنویس با سطح مهارتی تا حدودی یکسان وارد برنامهنویسی دونفره میشوند، باز هم مزایایی وجود دارد؛ مثلاً این تکنیک میتواند به منظور تسریع رشد و پیشرفت برنامهنویسان مورد استفاده قرار گیرد. در این حالت هر چند سطح مهارتی دو عضو گروه تقریباً یکسان است اما ممکن است یکی از آنها دانش بالاتری داشته باشد که میتواند در حین کار دانش خود را به عضو دیگر منتقل کند.
اگر دو برنامهنویس با سطح مهارت و دانش یکسان همگروه شوند، باز هم فرآیند آموزش و یادگیری ادامه یافته و محصول نهایی نسبت به حالت برنامهنویسی به صورت یکنفره، از کیفیت بالاتری برخواردار خواهد بود. وقتی برنامهنویسی به تنهایی کار میکند، ممکن است به راحتی در مسائل جنبی و جزئیات کار سردرگم شود.
در واقع، برنامهنویسی که نقش هدایتگر را به عهده دارد میتواند نمای بزرگتری از کلیت کار را در نظر گرفته، ایدههای کاربردی احتمالی را مطرح نموده و به حل مسئله کمک کند. در برنامهنویسی دونفره شخص هدایتگر اشتباهات احتمالی سکاندار را برطرف مینماید و این کار گروهی فرصتی را فراهم میآورد تا دو عضو گروه دانش خود را با هم به اشتراک بگذارند.
سخن پایانی
هر جایی که هستید و هر شغلی که دارید، همیشه افرادی در اطراف شما هستند که چیزهایی میدانند که شما نمیدانید؛ در عین حال، شما هم چیزهایی میدانید که دیگران نمیدانند. بنابراین حتی برای افراد ماهر نیز همکاری با دیگران میتواند فرصتی باشد برای به اشتراک گذاشتن تجربیات، تکنیکها و ایدهها و برنامهنویسی نیز از این قاعده مستثنی نیست.
برنامهنویسی دونفره و به طور کلی کار گروهی، میتواند باعث گسترش روابط اجتماعی شما شده و درک و شناخت شما را نسبت به همکارانتان افزایش دهد؛ شما را با تواناییها، ضعفها، ایدهها و افکار آنها آشنا نموده و دید جدید و تازهای برای شما پدید آورد.
توصیه میکنیم اگر امکان آن برای شما فراهم است، روش برنامهنویسی دونفره را امتحان کنید و از مزایای آن بهرهمند شوید. به ویژه اگر تازهکار هستید، هیچ فرصتی را برای ارتقاء سطح دانش و مهارت خود از دست ندهید. مثلاً ممکن است افرادی را بشناسید که مهارت بالایی در برنامهنویسی دارند؛ فرصت را غنیمت شمرده و در صورت امکان، دورهای را به عنوان کارآموز در کنار این افراد سپری کنید.
نظر شما در مورد مزایا و معایب این روش چیست؟ آیا تا به حال تجربۀ برنامهنویسی دونفره را داشتهاید؟ نظرات و تجربیات خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.