[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] "Pair Programming"
هي أسلوب برمجة يعتمد على وجود شخصين
يعملان معا على نفس لوحة المفاتيح. الشخص الأول يسمى "القائد" وهو الذي
يقوم بالطباعة على لوحة المفاتيح، والآخر يسمى "المراقب ، المستكشف" وهو
الذي يقوم بمراجعة سطور الشيفرة وهي تكتب، ليستكشف الأخطاء و ليتابع خطوات
بناء الشيفرة و تصميمها.
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]الفوائد المتوقعة: شيفرة مستقرة وقوية، تصميم واضح للشيفرة، وكذلك تقليل
الأخطاء والثغرات البرمجية، وفضلا عن ذلك سيكون هذا الأسلوب أكثر إنتاجية
و سرعة من الطريقة التقليدية، وسيتيح أيضا أن يتشارك الفريق الثنائي
أفكارهم و اقتراحاتهم أثناء بناء البرنامج مما يضفي جو المتعة و الإبداع
أثناء العمل.
الخطوات 1- اختارا مهمة معرفة بشكل جيد قبل أن تجلسا ، يجب أن تكونا قادرين على
إنهاء هذه المهمة خلال ساعة أو ساعتين ، على سبيل المثال " إضافة تاريخ
الصيانة إلى شفرة قاعدة بيانات الشاحنات " .
2- اتفقا على هدف صغير واحد في كل مرة : شيء يمكن إنجازه في دقائق قليلة ،
إن صياغة المشكلة في عبارات مفهومة يساعدك على التركيز و يشجع الطرف
الأخرى على المشاركة ، و هي تضمن أن كلاكما يعرف ماذا يفترض أن تفعلان
الآن .
3- اعتمد على شريكك و قدم له المساعدة: -- إذا كنت أنت القائد، أي الذي
يقوم بالطباعة على لوحة المفاتيح، فأكمل المهمة الصغيرة الحالية بأكبر
سرعة ممكنة ، تجاهل المشاكل الأكبر ، وثق بالمراقب لأن يكون طوق النجاة
بالنسبة لك في حال الخطأ.
-- إذا كنت المراقب ، فقم بقراءة ومتابعة الشيفرة أثناء كتابتها. عملك هو
التدقيق فيما يكتبه القائد ، فيجب أن تبقى متنبها للأخطاء والثغرات
البرمجية المتوقعة في كل قسم من الشيفرة، لا تدع شيئا يفوتك ، فكر في
العلل الممكنة ، و في المشاكل الكبيرة ، و في كيفية تبسيط و تحسين التصميم
، نبه القائد على الأخطاء ، و الشفرات التي تجدها غير قابلة للقراءة ،
وإذا وجدت فكرة لحل المشاكل الكبيرة أو لتحسين التصميم ، انتظر حتى تنتهي
المهمة الصغيرة الحالية ثم اعرض أفكارك ، لا تشتت القائد أثناء أدائه
للمهمة الحالية ، على سبيل المثال إذا رأيت أن الشفرة الحالية ستفشل عند
إدخال معطيات فارغة null ، اكتب في ورقة " أضف وحدة اختبار للمدخلات
الفارغة " .
-- إذا كنت المراقب، ابتعد عن الاهتمام الزائد بالشيفرة ، القائد يجب أن
يفكر في كيفية تحقيق الهدف الحالي فهو ليس مجرد آلة طباعة ، و يجب عليك
كمراقب أن تستغل حقيقة أنك مفرغ من التفاصيل كي تفكر بمستوى أعلى ، فقولك
" هذا يبدو جيدا ، والآن ما رأيك أن تكتب شفرة لمعالجة حالة لما يكون
المؤشر الممرر فارغا ؟ " أفضل من " حسنا ، الآن اكتب if (s == NULL) {
return ... " .
4- تحدث كثيرا ، تحدث عن ماذا تفعلان الآن ، اطلب تنفيذ فكرة ، اطلب طريقة
أحسن لحل المسألة الحالية ، اطرح أفكار بديلة ، أشر إلى مدخلات لا تغطيها
الشفرة الحالية ، اقترح أسماء أوضح للمتغيرات و الدوال ، اقترح طرق لتنفيذ
الشفرة في خطوات أصغر ، اخبر القائد عن الواجهات البرمجية المطلوبة ..
إلخ. طبعا لا بد أن تكون مستمع أيضا ، فعندما يجتمع شخصين بشكل جيد فإنهما
يتشاركان الحديث بدون توقف ، و هذه بعض الأشياء العامة لتقولها في البرمجة
المزدوجة : - هل تعتقد أن هذا الاختبار صحيح ؟ - هل يبدو هذا صحيح لك ؟ -
ما التالي ؟ - ثق بي ( عندما يكون كتابة شفرة صغيرة أسهل من الكلام ) .
5- ابقيا على تزامن قدر المستطاع ، عندما تعملا معا ، ستجد نفسك في بعض
الأحيان غير متزامن مع شريكك: غير واثق ماذا يفعل شريكك أو تصبح المهمة
الحالية غير واضحة بالنسبة لك ، هذا شيء عادي و عندما يحصل زامن نفسك من
جديد مع شريكك ، إن سر نجاح البرمجة المزدوجة هو العودة للتزامن بشكل بشكل
سريع (في غضون ثواني أو دقيقة من ملاحظة أنك غير متزامن مع شريكك ) ، إذا
أمضيت خمسة دقائق أو أكثر بدون تزامن فربما تصبح تكتب الشفرة بشكل منفرد
مما يجعلك تخسر فائدة البرمجة المزدوجة .
- قدر الإمكان قل ماذا تنوي أن تفعل قبل أن تشرع فيه ، و الأفضل أن تسأل
شريكك ، على سبيل المثال " هل نكتب الآن اختبار المؤشرات الفارغة ؟ " ، في
بعض الأحيان تحتاج أن تكتب شفرة كي تفهم أفكارك بشكل أفضل و هذا لا بأس به
، بعد ذلك قل لشريكك " أحتاج أن أكتب هذه كي أرى هل هذه فكرة جيد أم لا "
بهذا يكون لدى شريكك فكرة واضحه عما تفعل ، لا تنسى من الأفضل أن تجعل مثل
هذه الاكتشافات في أقل من دقيقة .
- عندما يسألك شريكك هل توافق على فكل شي مثل " هل نكتب الآن اختبار حالة
المدخلات الفارغة ؟ " أنا أعتقد أنه يمكن حذف هذه الدالة الآن ، هل توافق
على ذلك ؟ " ، أجب بنعم أو لا مباشرة بشكل واضح .
- لا بأس أن تمرر لوحة المفاتيح بين القائد و الملاحظ بشكل متكرر ، على
سبيل المثال كتابة شيء أسهل بكثير من أن تحاول شرحه بالكلمات ، فلذا دع
الملاحظ يأخذ لوحة المفاتيح و يكتب ما يريد ، ثم يرجعها لك أو حتى يصبح هو
القائد و أنت الملاحظ على حسب الظروف .
6- خذا لحظة للاحتفال بعد أكمال المهام أو التغلب على المشاكل ، على سبيل
المثال تبادلا التهاني كل مرة تنجح شفرتكما من اجتياز اختبار .
7- تبادلا الأدوار باستمرار ، على الأقل كل نصف ساعة ، هذا سيساعدكما على
الإندماج و التركيز على مستوى التفاصيل أو الصورة الأكبر ، إن الاستمرار
في دور واحد سينهكك و يقتل التركيز خصوصا إذا كان الدور هو المراقب .
تلميحات * تصرف بشكل مهذب جدا ، فعندما يشير شريكك إلى خطأ ، قل له " شكرا " ، و
عندما تلاحظ خطأ ، نبهه بلطف لتجنب الإساءة إلى كرامته ، الأخطاء و
تصحيحها هي جزء طبيعي من البرمجة ، ولا تمثل أي دليل على ضعف قدرات الشخص
، كمراقب اترك القائد ينهي كتابة السطر ثم أشر إلى الخطأ ، الكثير من
الأشخاص يجدون الإشارة إلى الأخطاء أثناء الكتابة أمرا مزعجا ، و يكونوا
أكثر تساعدا عند تصحيحهم بعد الانتهاء من الكتابة .
* اكتب وحدة الاختبار قبل الشروع في كتابة الشفرة ( إذا كانت الشفرة يمكن
اختبارها) ، وحدة الاختبار تساعد على تعريف الهدف الصغير التالي بطريقة
كلاكما تفهمانها لأنكما تستطيعان رؤية الشفرة ، بعد ذلك سيكون الهدف
التالي هو " اجتياز هذا الاختبار " ، إن تعلم طريقة التطوير المدفوعة
بالاختبارات أمر صعب في البداية ، ولكن العمل مع شخص متعود على هذا النوع
من التطوير بطريقة البرمجة المزدوجة سوف يساعد على اكتساب الخبر بسرعة
جيدة.
* الفرق بين تجربة ناجحة وأخرى فاشلة في البرمجة المزدوجة هو تركيز
الانتباه. انظر إلى الشاشة عندما يكتب القائد شيء ، عندما يتكلم شريكك أصغ
له ، لا تتناول حبوب الإفطار ، لا تتطلع على بريدك ، لا تلقي نظرة على
DIGG ، لا تترك التفاصيل تفوتك ، و عندما تركز انتباهك و تتكلم و تستمع
سوف تندمج في العمل و ستستمتع بأسلوب البرمجة المزدوجة ، ولكن عندما تفشل
أو تفشلا في تركيز انتباهكما فستفقدان ميزة البرمجة المزدوجة و ستجدان
أنفسكما تعملان كلا على انفراد.
* اعملا على طاولة تسهل عملية تبادل لوحة المفاتيح و تبادل الأدوار ، و أفضل شيء هو الطاولة المستطيلة البسيطة.
* إذا كنتما مغرقان في الناحية التقنية ، حاولا استخدام لوحاتا مفاتيح و فأرتان. "التحويل" بين الأدوار سيصبح أسهل بكثير.
* الحواسيب المحمولة هي أقل مناسبة للبرمجة المزدوجة بسبب صغر الحجم و
صعوبة الرؤية من الزاوية ، ولكن في وسعكما استخدمهن ، لتغلب على مسألة
الرؤية يمكن أن يجلس المراقب خلف القائد بدلا عن أن يكون بجانبه .
* لا تتجادلا على المسائل معمارية الشفرة أو المسائل الأقل أهمية مثل كم
يفترض أن يكون الهامش قبل الأقواس ، يجب أن تحدد هذه الأشياء قبل أن
تقترنان .
* يجب على الشخص الذي يملك معرف أقل بالنظام أو اللغة أن يقوم بأغلب أعمال
الكتابة ، حتى يبقى مركزا في المشروع ، الشخص يتعلم أكثر بواسطة أصابعة عن
عيناه.
تحذيرإذا كانت تجربة البرمجة المزدوجة بين شخصين أحدهما خبير و الآخر مبتدئ ،
فلابد من الخبير أن يستعد جيدا لاتخاذ دور المرشد و الموجه لشريكه، وإلا
لن يكون هناك تناغم بينهما خلال العمل.
مما اعجبنى