اقرأ في هذا المقال
- مفهوم البرمجة الزوجية
- مزايا البرمجة الزوجية
- لماذا البرمجة الزوجية أفضل من مراجعات الكود؟
- تحديات البرمجة الزوجية
مفهوم البرمجة الزوجية:
كما يوحي الاسم، فإن البرمجة الزوجية هي المكان الذي يعمل فيه مطوران باستخدام جهاز واحد فقط، كل واحد لديه لوحة مفاتيح والماوس. يعمل أحد المبرمجين كـ “سائق” يقوم بكتابة الكود، بينما يعمل الآخر كـ “مراقب” يقوم بفحص الكود الذي يتم كتابته ومراجعته وتدقيقه إملائياً، ويقوم المراقب أيضاً بمعرفة إلى أين يتجهوا بعد ذلك، ويمكن تبديل هذه الأدوار في أي وقت، أي أن يصبح السائق بعد ذلك المراقب والعكس صحيح. يُطلق على البرمجة الزوجية أيضًا اسم “الاقتران” و “البرمجة في أزواج” و “البرمجة المزدوجة”.
مزايا البرمجة الزوجية:
هناك العديد من الأسباب المقنعة التي يجب أن النظر فيها لاستخدام البرمجة الزوجية:
- شخصين أفضل من واحد: إذا واجه السائق عقبة في الكود، فسيكون هناك اثنان منهم سيحلان المشكلة.
- أكثر كفاءة: التفكير الشائع هو أن البرمجة الزوجية تبطئ وقت الانتهاء من المشروع؛ لأنه يتعين على اثنين من المبرمجين تطوير برنامج واحد، بدلاً من جعلهما يعملان بشكل مستقل في برنامجين مختلفين. لكن الدراسات أظهرت أن اثنين من المبرمجين اللذين يعملان على نفس البرنامج أبطأ بنسبة (15٪) فقط مما كان عليه الحال عندما يعمل هؤلاء المبرمجون بشكل مستقل، بدلاً من الافتراض المسبق بنسبة (50٪).
- أخطاء أقل في الكتابة الكود: نظرًا لوجود مبرمج آخر يتفحص عملك، ويقوم بمراجعات مستمرة للكود، فإنه يظهر عدد أقل من الأخطاء في الكود الخاصة بك، بتالي ينتج عنه كود أفضل، في الواقع، أظهرت دراسة سابقة أن البرمجة الزوجية تؤدي إلى أخطاء برمجية أقل بنسبة (15٪) من الكود المكتوب بواسطة مبرمجين فرديين. بالإضافة إلى ذلك، فإنه يسمح للسائق بالبقاء مركزاً على الكود المكتوب بينما يُحضّر الآخر للأمور الخارجية.
- طريقة فعالة لمشاركة المعرفة: إن مساعدة المبرمجين على التعلم من أقرانهم سيسمح للمبرمجين بالحصول على تعليمات فورية وجهاً لوجه، وهو أفضل بكثير من البرامج التعليمية عبر الإنترنت وأسرع من البحث عن الموارد على الإنترنت، بالإضافة إلى ذلك، يمكنك تعلم الأشياء بشكل أفضل من شريكك، خاصة في المواضيع التي قد تكون غير مألوفة لك، ويمكن للمطورين أيضًا اختيار أفضل الممارسات والتقنيات الأفضل من المبرمجين الأكثر تقدمًا، ويمكن أن تُسهل أيضًا علاقات التوجيه بين اثنين من المبرمجين.
- يطور مهارات التعامل مع الآخرين لموظفيك: يساعد التعاون في مشروع واحد فريقك على تقدير قيمة التواصل والعمل الجماعي.
لماذا البرمجة الزوجية أفضل من مراجعات الكود؟
مراجعات الكود هي عملية يقوم فيها مبرمج آخر بإلقاء نظرة على الكود الخاصة بك للعثور على شيء يحتاج إلى تحسين أو العثور على عيوب فيه، فهو يجمع بين الاختبار ومراقبة الجودة للتأكد من أن كل شيء في الكود الخاص بك جيد، يساعدك هذا على ضمان تحسين الكود الخاصة بك.
ومع ذلك، من الصعب العثور على شخص ما لمراجعة الكود الخاصة بك؛ لأن الأشخاص قد لا يرغبون في إلقاء نظرة على كود آخر وفهمه فقط من أجل التحقق من جودته. في معظم الأحيان، تحدث مراجعات الكود عندما يحاول شخص آخر إضافة بعض الوظائف إلى الكود الخاص بك أو يصلح الأخطاء، ولكن بحلول ذلك الوقت، بصفتك المبرمج الأصلي، قد لا تكون موجودًا حتى تُقدّر مراجعة الكود.
مع البرمجة الزوجية، يشبه الأمر قيام شخص ما بمراجعة كودك على الفور وبشكل منتظم، إنه شكل أفضل من مراجعات الكود، يجب أن يكون هناك شخصان يفهمان البرنامج الذي تتم كتابته، وإذا رأى أحدهم مشاكل في كود الآخر، فيمكن تصحيحه على الفور. لديك أيضًا فرص أقل لوجود أخطاء مكتوبة في الكود الخاصة بك، مراجعات الكود ليست استباقية فيجب عليك الانتظار حتى تكمل كتابة الكود والأخطاء وكلها، قبل أن يتمكن أي شخص من إلقاء نظرة عليها وتصحيحها.
تحديات البرمجة الزوجية:
تتضمن المشكلات الشائعة التي لوحظت عندما يتعلق الأمر بالبرمجة الزوجية ما يلي:
- يجب أن يشارك المبرمجان بشكل متساوٍ، وأن يكونا مشاركين طوال مدة المهمة. خلاف ذلك، لن تكون هناك فوائد.
- قد يعتقد الأشخاص الذين لم يجربوها أنها ستضاعف التكلفة؛ لأنك تضع اثنين من المبرمجين في مشروع واحد. ومع ذلك، فهذه فكرة خاطئة تحتاج إلى توضيح. علاوة على حقيقة أن البرمجة الزوجية، إذا تمت بشكل صحيح لن تؤدي إلا إلى تباطؤ بنسبة (15٪) من حيث الإنتاج الفردي، فهو في الواقع يسرع عملية الكتابة الكود وتضمن جودة أكواد أفضل، مما يقلل من فرص إعادة البرنامج.
- يجب أن تكون البرمجة الزوجية أيضًا عملية برمجة بصوت عالٍ، حيث يشرح السائق لفظيًا ما يفعله.
- إنه ليس شيئًا يمكنك إجبار فريقك على فعله، إنها اجتماعية وتفاعلية للغاية، لذا يجب أن تكون قادرًا على اكتشاف الأزواج الذين قد يواجهون مشاكل مع بعضهم البعض، مثل تضارب الشخصيات أو حتى مشاكل النظافة الشخصية.