برنامه‌نویسی دونفره

بندانگشتی|برنامه نویسی دو نفره
**برنامه‌نویسی دونفره**  روشی برای برنامه‌نویسی در متد برنامه‌سازی مفرط در دوره و زمان توسعه نرم‌افزاری چابک است. در این روش دو برنامه‌نویس در کنار هم و روی یک ایستگاه کاری کار می‌کنند.

در هر لحظه یکی از این دو کدنویسی کرده و دیگری کد او را بررسی و نقد می‌کند و به فراخور نیاز راهنمایی‌اش می‌نماید. این دو به صورت دوره‌ای جای خود را عوض کرده و کسی که راهنمای ای نقاد بوده دست به کدنویسی برده و کدنویس مرحله قبل کد او را نقد و بررسی می‌کند. نفر دوم که کار کدنویسی را مشاهده می‌کند، مشاهده‌گر (به انگلیسی observer) یا ناوبر (به انگلیسی navigator) می‌نامند. نفر کناری بررسی و نقد کد به استراتژی کلی برنامه و مشکلاتی که در آینده پیش خواهد آمد نیز می‌اندیشد. به‌طور کلی نفر دوم به تاکتیک‌ها توجه بیشتری دارد تا تکنیک‌ها.

## اهداف
مهمترین هدف برنامه‌نویسی دونفره افزایش کیفیت نرم‌افزار است. به این صورت که با بررسیِ برنامه‌نویس دوم از پیاده‌سازی راه‌حل‌های مشکل دار و غلط جلوگیری می‌شود. این روش همچنین سبب تبادل دانش میان دو برنامه‌نویس می‌شود.

## مزایا
برنامه‌نویسی دونفره مقدار پارامتر کار-فرد (میانگین کار انجام شده توسط هر فرد) را در انجام پروژه‌ها افزایش می‌دهد. همچنین این در حالی است که میزان خطا را نیز کاهش می‌دهد. :en:Pair programming طی بررسی‌هایی نشان داده شده‌است که این روش باعث کم شدن خطاهای برنامه‌نویسی تا ۱۵ درصد نسبت به روش‌های متداول برنامه‌نویسی می‌شود. همچنین از لحاظ حجم برنامه‌ها این روش به‌طور میانگین تا ۲۰ درصد کوتاه‌تر می‌شوند.

برتری مهم دیگر این روش تنوع راه حل‌هایی‌ست که برای مسائل متنوع به دست می‌آید. این برتری سه علت دارد که به شرح زیر هستند::en:Pair programming
* برنامه‌نویسان با پیشینهٔ متفاوت و تجربیات مختلفی با یکدیگر فعالیت می‌کنند.
* افراد مختلف اطلاعات را به شیوه‌های متفاوتی ارزیابی می‌کنند.

آن‌ها به واسطهٔ نقش‌های متفاوت در پروژه، مواجهه‌های مختلفی با مسائل خواهد داشت.

## آمار
در یک آمارگیری از برنامه‌نویسان در سال ۲۰۰۰، ۹۶ درصد آن‌ها اظهار داشتند هنگامی که به همراهی شخص دیگری برنامه‌نویسی می‌کنند از کار خود لذت بیشتری می‌برند. همچنین ۹۵ درصد آن‌ها نیز اظهار داشتند که در این شرایط با اعتماد به نفس بیشتری برنامه‌نویسی می‌کنند.http://sunnyday.mit.edu/16.355/williams.pdf

## یادگیری
دانش مدام بین برنامه‌نویسان که با یکدیگر در حال برنامه‌نویسی هستند به اشتراک گذاشته می‌شود. همچنین هر شخص می‌تواند کدهای شخص دیگر را ارزیابی کند و این موقعیت خوبی برای افزایش مهارت تست و عیب‌یابی کدها می‌باشد. همچنین گاهی نیاز است تا شخصی به شخص دیگر موضوعی را آموزش دهد. تقویت مهارت آموزش نیز یکی دیگر از فواید برنامه‌نویسی دونفره است. این مهارت هم به شخص مقابل کمک می‌کند تا مطلب را بیاموزد و هم به فرد آموزش‌دهنده فهم عمیق‌تری نسبت به مطلب می‌دهد. :en:Pair programming#cite note-strengthening-5

## انواع برنامه‌نویسی [[:en:Pair_programming#cite_note-strengthening-5|دونفره]]
* متخصص-متخصص: این حالت بیشترین کارایی را دارد و باکیفیت‌ترین خروجی را تولید می‌کند. در این حالت گاهی به روش‌های جدیدی برای حل مسائل دست پیدا می‌کنند که بسیار ارزشمند است.
* متخصص-تازه‌کار: در این حالت شخص متخصص به نوعی منتور شخص تازه‌کار است و او را در پیاده‌سازی پروژه راهنمایی می‌کند. در مراحل ابتدایی این روش شخص تازه‌کار به صرف مشاهده شخص متخصص سعی در یادگیری کار دارد. سپس با پرسش و پاسخ و تخصیص کارهای کوچک توسط متخصص شروع به کار می‌کند.
* تازه‌کار-تازه‌کار: در این روش به وضوح کارایی بالاتر از حالتی‌ست که شخص تازه‌کار به تنهایی پروژه را انجام دهد. البته این روش چندان توصیه نمی‌شود چون هر دو شخص بدون داشتن الگوی مناسب باید کد بنویسند که منجر به اشتباه یا شکل‌گیری عادت غلط در آن‌ها می‌شود.

## منابع

* 

رده:برنامه‌سازی مفرط
رده:برنامه‌نویسی
رده:توسعه نرم‌افزاری چابک