
لقد مر عام تقريبًا منذ أن انتقلت للعيش والعمل في يريفان قادمين من موسكو. في هذه القصة ، لن أخبركم بحياتي في هذه المدينة الرائعة (إنها رائعة جدًا هنا) ، ولكن عن أشياء أكثر دنيوية. وهي ، حول الممارسات التي نطبقها عند تطوير منتجاتنا في Vineti.
إذا كنت لا تزال مهتمًا ، فمرحباً بك في Cat.
في Vineti ، نستخدم منهجية
البرمجة المتطرفة ونستخدم بنشاط البرمجة الزوجية. عندما جئت إلى Vineti ، كانت البرمجة المتطرفة شيئًا جديدًا وغير معروف بالنسبة لي ، لكن بعد عام من التطوير في هذا النمط ، يمكنني أن أقول إن كتابة الكود الآن أصبح أمرًا غير مناسب ومثمر للغاية.
عندما يكون هناك شخص بجانبك يراقب ما تكتبه بعناية ، تكون الشفرة قابلة للقراءة للغاية. أيضًا ، أثناء عملية كتابة الكود ، يتم التدريب ونقل المعرفة بين المشاركين في العملية ، وهذا ، من وجهة نظري ، يحدث في أكثر الأشكال فعالية.
يحدث أن أولئك الذين لم يستخدموا هذا النهج من قبل في الممارسة العملية يشعرون بالحرج والانزعاج ، لأنك يجب أن تتواصل باستمرار مع شريك حياتك وأن تكتب الشفرة تحت إشراف دقيق ، لكن بمرور الوقت ، تمر وتفهم أن الشريك موجود هنا ، لمساعدتك ، لا يؤذيك.
فوائد النهج
مزايا البرمجة الزوجية مقارنة بالنهج القياسي عديدة ، ولكن من وجهة نظري ، الأهم هو النقل المستمر للمعرفة حول كود التطبيق بين المشاركين في العملية. يمكنك إنشاء أزواج وتناوب (تغيير المهندسين المشاركين) بحيث يكون لكل مهندس معرفة كاملة بجميع أجزاء التطبيق. هذا مهم بشكل خاص إذا كنت بحاجة إلى الحفاظ على قاعدة رمز كبيرة.
الميزة التالية هي عملية تعليمية فعالة إلى حد ما. يمكنك الاقتران بحيث يتم إقران الأكثر خبرة دائمًا بالمهندسين الأقل خبرة. بالنسبة للمطور الرئيسي ، فإن القاعدة هي "إذا كنت تريد معرفة شيء جيد ، فحاول تعليم آخر". هناك أيضًا فرصة لتشديد مهارات الاتصال لديك ، حيث سيتعين عليك شرح الكثير والكثير من الأحيان.
في Vineti ، نستخدم
TDD في عملية البرمجة الزوجية ، والتي تتيح لنا في البداية تقسيم المهمة الكبيرة والمعقدة إلى أجزاء صغيرة والتفكير في بنية الحل قبل كتابة الكود. أيضًا ، في حل المشكلات المعقدة ، فإن وجود شريك يمكنك من خلاله مناقشة النهج المختار لحل المشكلة وتحليل الأمثلية في عملية العمل دون الحاجة إلى تخطيط اجتماعات إضافية داخل الفريق يساعد كثيرًا.
وأخيرا ، يتم الجمع بين البرمجة الزوجية بشكل جيد مع منهجية
TDD . في Vineti ، عادةً ما يكتب مهندس اختبارات ويحاول وصف أكبر عدد ممكن من المواقف. يكتب المهندس الثاني رمز الميزة ، عندما يخبرك المهندس الأول بكيفية تبسيط التعليمات البرمجية ، وبالتالي تنفيذ دائرة إعادة تشكيل الأحمر والأخضر.
القصور
عيوب هذا النهج ، ربما أرجع تعقيد إعداد العملية نفسها والحاجة إلى الاختيار المناسب للمشاركين في أزواج ، الأمر الذي يتطلب جهودًا إضافية من قائد الفريق وفهمًا شاملاً لمهارات وعادات جميع أعضاء فريقه.
إذا تحدثنا عن العامل البشري ، فمن المهم أن يكون للمهندسين المرتبطين حاليًا لفترة العمل المشترك وضع مشترك للوصول إلى المكتب أو الغداء أو غير ذلك. ليس من السهل القيام بذلك دائمًا ومن الضروري تكوين أزواج مع مراعاة هذه الميزة.
الحفاظ على معيار مشترك
أحد شروط البرمجة الزوجية الفعالة هو وجود نهج صارم وموحد لكتابة التعليمات البرمجية داخل الأوامر. على سبيل المثال ، نستخدم eslint ، أجمل ، rubocop بحيث يكون الكود في نفس النمط في عملية كتابته. كبيئة تطوير نستخدم كود VS ، ومحطة iTerm c zsh. يسمح لك هذا التقييس بتدوير المهندسين بسرعة في أزواج مع تقليل فترة التكيف.
في رأيي ، يجب أن يتم تدوير الأزواج بعد الانتهاء من مهمة واحدة. هذا يوفر أدنى تناوب فعال ممكن. يمكن أن يحدث تغيير الدور في يوم واحد ، ولكن يبقى هذا وفقًا لتقدير مهندس أكثر خبرة في زوج. من المهم عدم الابتعاد ، وليس محاولة حل جميع المشكلات بنفسك ، حيث إن غياب تغيير الدور يمكن أن يؤثر سلبًا على فعالية الزوجين ككل.
البرمجة الزوجية مع سان فرانسيسكو
شخصياً ، كانت لدي خبرة في البرمجة الزوجية عن بُعد مع زميل من مكتب Vineti American ، ولهذا استخدمنا البرنامج المساعد Live Share لـ VS Code. تجربة مثيرة للاهتمام ، ولكن هذا الموقف له العديد من العيوب مقارنة ببرمجة الزوج القياسية. الأول هو الافتقار إلى التواصل الشخصي المباشر. في حالتي ، يعد هذا أيضًا اختلافًا كبيرًا في المناطق الزمنية. اضطررت إلى كتابة التعليمات البرمجية بعد يوم كامل تقريبًا ، والذي كان بالنسبة لي شخصيًا متعبًا للغاية.
كيفية التكيف مع البرمجة الزوجية
حاول استخدام تجربة الشركات الأخرى وفي نهاية المطاف طور نهجك داخل الشركة. الخيار المثالي مناسب ويعمل للجميع ، لسوء الحظ ، لا وجود له.
لست متأكدًا من أن هذه المنهجية مناسبة لجميع الشركات. على سبيل المثال ، إذا كان لديك ثلاثة مطورين فقط في الفريق ، فمن الواضح أنك لن تتمكن من الاستفادة بشكل كبير من تنفيذ البرمجة الزوجية. أو ، إذا كانت لديك ميزة كبيرة للغاية بالنسبة للاعبين في الفريق ، فسيكون من الصعب عليك للغاية بناء أزواج جيدة.