💡 مفهوم، اصول و مزایای Pair Programming چیه؟

💡 مفهوم، اصول و مزایای Pair Programming چیه؟


برنامه‌نویسی دونفره/جفت (معادل فارسی مناسبی برای سراغ ندارم) یعنی دو نفر توسعه‌دهنده، به‌صورت همزمان روی یک تسک یا تیکت با هم کار کنند — معمولاً هم با استفاده از یک صفحه نمایش مشترک (حضوری یا با اشتراک‌گذاری صفحه، یا با امکانات جدیدتر مثل live sharing).


اما این فقط "دو نفر که با هم کدنویسی می‌کنن" نیست. هدف اصلی اینه که با هم فکر کنن، با هم تصمیم بگیرن و از هم یاد بگیرن.


🎯 چرا از Pair Programming استفاده کنیم؟


- آموزش، آنبورد سریع‌تر نیروهای جدید

- انتقال مستمر دانش در تیم (در زمینه‌های متنوع و کدبیس‌های مختلف)

- افزایش کیفیت کد (کاهش باگ، نام‌گذاری بهتر، منطق تمیزتر)

مالکیت مشترک کد — بیش از یک نفر در جریان کد هست

- یادگیری ابزارها، الگوها و تکنیک‌ها در عمل

- شکستن سیلوها و افزایش هماهنگی در تیم (دانش یک بخش از کد در یک نفر متمرکز نمیشه و افراد می‌تونن همدیگه رو پوشش بدن)


✅ کجا از Pair Programming استفاده کنیم؟


- حل باگ‌های پیچیده

- کار روی کد ناآشنا

- آشنایی نیروهای جدید با یک فیچر

- تغییرات حساس یا حیاتی

- طراحی ساختار داده یا الگوریتم

- توسعه با رویکرد TDD یا بهینه‌سازی عملکرد



❌ کجا مفید و مناسب نیست (معمولا)؟


- کارهای تکراری و روتین

- ریفکتورهای ساده یا فرمتینگ

- نوشتن تست برای کدهای شناخته‌شده

- نوشتن مستندات

- وظایف بزرگ و قابل تقسیم هم‌زمان

- نمونه‌سازی آزمایشی سریع


🧑‍💻 نقش‌ها در Pair Programming

- نقش Driver (راننده): کدنویسی می‌کنه، تمرکزش روی منطق فوری و نگارش است.

- نقش Navigator (ناوبر): هم‌زمان کد رو مرور می‌کنه، به ساختار، تست‌ها و موارد خاص فکر می‌کنه.

نکته مهم: نقش‌ها رو هر ۲۰ تا ۳۰ دقیقه جابه‌جا کنید تا ذهن هر دو نفر فعال بمونه، و ناوبر تبدیل به تماشاچی نشه!


🧭 چجوری Pair Programming مؤثری داشته باشیم؟


- هدف مشترک جلسه رو قبل از شروع مشخص کنید: دقیقاً دنبال چی هستید؟

- فرمت همکاری رو مشخص کنید: Driver/Navigator یا نوبتی؟

- مدت جلسه رو محدود کنید: مثلاً ۹۰ دقیقه با استراحت در میانه

- نقش‌ها رو به‌صورت منظم عوض کنید

- حین کار بلند فکر کنید، توضیح بدی، سوال بپرسید، پیشنهاد بدهید

- در پایان یک مرور کنید: چی یاد گرفتیم؟ قدم بعدی چیه؟


🧠 ملاحظات مربوط به ظرفیت تیم


درسته که دو نفر روی یک تیکت کار می‌کنن، ولی این به معنی نصف شدن بهره‌وری نیست. در بسیاری از مواقع، Pair Programming باعث:

- تحویل سریع‌تر در storyهای پیچیده

- راه‌حل‌های با کیفیت‌تر و قابل نگهداری‌تر

- کاهش اصطکاک در بازبینی و افزایش درک مشترک


💡 نکته: اگه قراره چندین تیکت به صورت Pair انجام بشن، ظرفیت تیم رو تنظیم کنید — مثلاً ۱۵–۲۰٪ استوری‌پوینت کمتر در نظر بگیر، یا تیکت‌های دونفره رو جداگانه پیگیری کنید.


همچنین، همه‌ی بخش‌های یک تیکت لازم نیست با Pair انجام بشه:

می‌تونید برای مراحل اکتشافی یا منطق اصلی، انجامش بدید، بعد جداگانه تست‌ها، مستندات یا فاین‌تیون نهایی رو انجام بدید.


✅ نکات و بهترین روش‌ها


- پارتنر مناسب انتخاب کنید: تعادل در تجربه، دامنه دانش، یا تکنولوژی

- صبور باشید: هدف، سرعت نیست — کیفیت و یادگیری مهمه

- بیش از حد کیبورد رو از دست نفر مقابل نگیرید — بگذارید هر دو فعال باشند

- سوال «چرا؟» رو تشویق کنید — یادگیری بخش اصلی کاره

- حتماً استراحت بدید — خستگی ذهنی طبیعی و تأثیرگذاره

- اگه بعد از ۳۰–۴۰ دقیقه حس کردید که کار پیش نمی‌ره، یه قدم عقب برید و برنامه‌ریزی رو بازنگری کنید


💬 تجربه یا نظر شما چیه؟