برمجة زوجية

البرمجة الزوجية هي أحد تقنيات أجيل لتطوير البرمجيات حيث يعمل اثنين من المبرمجين معا في محطة عمل واحدة. يكتب أحدهم الكود المصدري في حين يستعرض الأخر كل سطر من الأكواد كما تمت كتابتها. والشخص الذي يقوم بالكتابة يُسمى المحرك. ويطلق على الشخص الذي يستعرض الكود المراقب (أو الملاح). ويتبادل المبرمجان الأدوار بشكل متكرر.
أثناء الاستعراض، يضع المراقب في اعتباره التوجه الاستراتيجي للعمل، والخروج بأفكار من أجل إدخال تحسينات والمشاكل المحتملة في المستقبل لمعالجتها. وهذا يتيح الفرصة للمحرك في تركيز كل اهتمامه على الجوانب "التكتيكية" لاستكمال المهمة الحالية، وذلك باستخدام المراقب كشبكة أمان ودليل.

التكاليف والفوائد

وجدت بعض الدراسات أن المبرمجين الذين يعملون بشكل زوجي ينتجون برامج أقصر، مع تصميمات أفضل وعدد أخطاء برمجية أقل، من المبرمجين الذين يعملون وحدهم. وقد وجدت الدراسات انخفاض معدلات الخطأ من 15 ٪ إلى 50 ٪، وتتفاوت اعتمادا على خبرة المبرمج وتعقيد المهمة. وعادة ما ينظر الأزواج في بدائل تصميمية أكثر من المبرمجين المنفردين، ويستطيعوا التوصل إلى تصاميم أكثر بساطة وأكثر ثباتا؛ كما يستطيعون اصطياد عيوب التصميم في وقت مبكر. وعادة ما يعمل الأزواج بشكل أسرع من مبرمج واحد مخصص لنفس المهمة. وغالبا ما يجد الأزواج المشاكل التي تبدو "مستحيلة" سهلة أو حتى سريعة الحل، أو على الأقل من الممكن حلها عندما يعملون معا.
ومع ذلك، وفي 2007، استنتج تحليل الميتا أن "البرمجة الزوجية ليست مفيدة بشكل موحد أو فعالة" بسبب أن العديد من العوامل الأخرى بجانب اختيار استخدام البرمجة الزوجية لها آثار كبيرة على نتائج مهمة البرمجة. ووجدت دراسة الميتا أن البرمجة الزوجية تميل إلى تقليل الوقت اللازم للتطوير، وتنتج آثارا إيجابية هامشية على نوعية الكود، ولكن هذه البرمجة الزوجية تتطلب جهد أكبر من المطور، وهذا يعني، أن تكلفتها أكثر بكثير من تكلفة البرمجة المنفردة. ويقترح المؤلفان أن دراسة البرمجة الزوجية تعاني من التحيز في النشر حيث ان الدراسات التي لا تظهر أن البرمجة الزوجية مفيدة، لا تقدم للنشر، أو لا يقبل نشرها. وبالتالي يتم الاستنتاج أنه "لا يمكنك ان تتوقع أسرع وأفضل وأرخص".
على الرغم من اكتمال الترميز بشكل أسرع مما يكون عليه عندما يعمل مبرمج واحد وحده، فإن مجموع وقت المبرمج (عدد المبرمجين × الوقت الممضى) يزداد. ويجب على المدير أن يوازن بين انتهاء العمل بشكل أسرع وتقليل الاختبار ووقت التصحيح ضد ارتفاع تكلفة الترميز. ويمكن للوزن النسبي لهذه العوامل أن تختلف من مشروع إلى آخر ومهمة لأخرى. ان الاستفادة من الاقتران هو أعظم بالنسبة للمهام التي لا يستعبها المبرمجين تماما قبل أن البدء: وهذا يعني، المهام الصعبة التي تدعو إلى الإبداع والتطور.
تمر المعرفة بين المبرمجان وهم يعملون. فهما يتبادلان المعرفة بخصوصيات النظام، ويلتقطان تقنيات البرمجة من بعضهما البعض. يلتقط بسرعة الموظفون الجدد ممارسات الفريق ومعرفة تفاصيل هذا النظام. تنتشر مع " الاقتران المختلط "—كل مبرمج يدور خلال سائر مبرمجين الفريق بدلا من الاقتران بشريك واحد فقط—معرفة النظام في الفريق بأكمله، وبالتالي الحد من مخاطر الإدارة في حالة ترك أحد المبرمجين الفريق.
عادة ما يحسن الاقتران الانضباط وإدارة الوقت. فالمبرمجين أقل عرضة لتخطي اختبارات الوحدة، وقضاء بعض الوقت في تصفح شبكة الإنترنت أو على البريد الإلكتروني الشخصي, أو الالتواء عند العمل مع شريك مقترن. فالشريك المقترن "يبقيهم صادقين". وان الناس يكونوا أكثر ترددا في مقاطعة زوجا مما هو عليه الحال بالنسبة لشخص يعمل وحده.
وبعض الفوائد الإضافية المذكورة تشمل زيادة الروح المعنوية، وزيادة الثقة في صحة الكود.

البرمجة الزوجية عن بعد

البرمجة الزوجية عن بعد، والمعروفة أيضا باسم البرمجة الزوجية الافتراضية أو البرمجة الزوجية الموزعة، هي برمجة زوجية يكون فيها المبرمجين في مواقع مختلفة، يعملون عبر محرر الوقت الحقيقي التعاوني، أو سطح مكتب مشترك، أو برنامج مساعد في بيئة تطوير متكاملة للبرمجة الزوجية عن بعد. تُدخل البرمجة الزوجية عن بعد صعوبات لم تكن موجودة في اقتران الوجه لوجه، مثل تأخير اضافي للتنسيق، وهذا يتوقف على أدوات تتبع المهمة ذات "الوزن الثقيل" بدلا من تلك "الخفيفة" مثل فهرس البطاقات، وفقدان التواصل الغير لفظي مما أدى إلى الارتباك والصراعات على أشياء مثل من "لديه لوحة المفاتيح".
العديد من الأدوات الإضافية مثل مساعدات برنامج إيكليبس متوفرة لدعم الاقتران عن بعد. ولقد جربت بعض الفرق Virtual Network Computing وRealVNC مع كل مبرمج باستخدام الحاسوب الخاص بهم. واستخدام آخرون وضع العرض المتعدد (-x) من خلال شاشة جنو المستندة إلى نص. ولدى شركةأبل ماك أو إس عشرة تطبيق تقاسم الشاشة مدمج.

برمجة بينغ بونغ الزوجية

في برمجة بينغ بونغ الزوجية، يكتب المراقب اختبار وحدة فاشل، يعدل المحرك كود لاجتياز الاختبار. عند هذه النقطة، يقوموا بتبادل الأدوار ويكتب المحرك الأصلي (بصفته المراقب) اختبار فاشل. يُعدل المراقب الأصلي (المحرك الآن) كود لاجتياز الاختبار الجديد، وهلم جرا. وتستمر هذه الحلقة ما دام أحد العضوين قادرا على كتابة اختبار وحدة فاشل للعضو الأخر لتنفيذه. وفي العموم، قد يستغرق هذا النهج مزيدا من الوقت عن الخطة المقدرة.