سؤال

لدينا فريق مكون من حوالي 7 مهندسين، وأشرف عليهم.ليس لدينا مكتب رسمي حيث نعمل جميعا.وبدلاً من ذلك، يوجد عدد قليل منا خارج مدينتنا، بينما ينتشر الباقون في جميع أنحاء منطقة الخليج.

في كثير من الأحيان، أجد نفسي أحاول تدريس مفاهيم مثل TDD أو إعادة البناء لبعض المطورين المبتدئين (أو غيرهم).أفضل أسلوب أعرفه هو البرمجة الزوجية، حيث تجلسان على نفس الكمبيوتر وتعملان معًا على حل المشكلة.نظرًا لأننا لسنا في نفس المكان معظم الوقت، فإن الخيار الوحيد هو استخدام نوع ما من مشاركة الشاشة وSkype لجعل أحدنا "يقود السيارة" بينما يتشاور الآخر، ثم يقوم بالتبديل.

سؤالي هو هل جرب أي شخص هذه البرمجة الزوجية "الافتراضية"، وهل وجدتها مفيدة على الإطلاق؟

هل كانت مفيدة؟

المحلول

لقد قمت بالكثير من البرمجة الزوجية ليس فقط عبر المواقع ولكن عبر المنطقة الزمنية.أعيش في إسرائيل وأعمل مع الناس في الساحل الغربي طوال الوقت.أفضل طريقة وجدتها هي استخدام جلسة VNC المشتركة وسكايب.أنت بحاجة إلى بعض "السلوك الجيد" للتأكد من أن واحدًا فقط منا يكتب في وقت معين.يمنحنا خادم VNC الذي نستخدمه مؤشرين مختلفين حتى نتمكن من تحريك الماوس الخاص بنا دون أن يعيق الطريق، طالما أننا لا ننقر فعليًا.
تكمن المشكلة الرئيسية في أن الحافظة مشتركة، لذا إذا قام شخص ما بتحديد شيء ما، فسيتم نسخه تلقائيًا إلى حافظة الشخص الآخر.
كقاعدة عامة، البرمجة الثنائية عبر المواقع، على الرغم من أنها ليست مثالية، إلا أنها بالتأكيد قابلة للتطبيق، ومفيدة بالتأكيد.

نصائح أخرى

أعلم أن Netbeans لديه مكون إضافي لـ "Developer Collaboration" (عرض فلاش) ، والتي تشبه في الأساس البرمجة متعددة اللاعبين.يتم نسخ أي تغييرات تجريها في ملفك المحلي على الفور تقريبًا إلى الطرف الآخر.إنه أمر رائع جدًا، ولكن لقد مر وقت طويل منذ أن لعبت به، ولم أستخدمه مطلقًا في مشروع حقيقي.هناك نافذة للدردشة ولكن من الأفضل أن تستمر في التحدث على الهاتف أو استخدام سكايب.

نعم، يمكنك تمامًا إقران البرنامج عن بُعد، وقد قمت بذلك بنجاح لفترات طويلة من الوقت.لقد كانت لدينا دردشة صوتية عبر Skype مفتوحة تقريبًا طوال اليوم ومستخدمة برنامج TeamViewer لتعكس الشاشة.عملت بشكل رائع.

إذا كنت أتذكر بشكل صحيح، فهي تحتوي على أداة قلم/رسم تسمح للملاح بإظهار ما يتحدث عنه للسائق على الشاشة.

ربما لن تكون محاولة إقران البرنامج عن بعد مفيدة مثل القيام بذلك شخصيًا، ولكن يمكنك بالطبع القيام بذلك باستخدام المحررين التعاونيين مثل تحرير SubEtha في نظام التشغيل العاشر.

هناك قائمة جيدة جدًا من المحررين الذين يتمتعون بميزات تعاونية في الوقت الفعلي على ويكيبيديا:http://en.wikipedia.org/wiki/Collaborative_real-time_editor#List_of_current_editors

أنا شخصيا حاولت اثيرباد والتي استحوذت عليها Google لاحقًا وتم دمجها جزئيًا في إرسال "البريد" في الوقت الفعلي لـ Google Wave، وهي مجموعة ميزات من المفترض أنها موجودة الآن في مستندات Google.هناك حل آخر لطيف للغاية يعتمد على الويب وهو Mozilla كود السحابة معروف سابقا ب بيسبين.لقد دخلت Adobe أيضًا في هذا الأمر باستخدام BuzzWords، على الرغم من عدم استخدامها للتشفير، وبالتالي لا يوجد تسليط الضوء على بناء الجملة، وعلى حد سواء، فهي تعمل مع جلسات القفل لمحرر واحد فقط ليتولى التحكم.لم يحالفني الحظ مع إطار عمل Eclipse COLA (ECF) لكن المشروع بدا واعدًا عندما نظرت إليه آخر مرة.يستخدم بعض الأشخاص مستندات Google ببساطة

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

بخلاف بعض التقارير التي تظهر هنا، لم أواجه مطلقًا مشكلات تتعلق بالتأخير عبر المحيط الأطلسي وقمت بإجراء جلسات ترميز أطول/مكثفة.هناك قدر لا بأس به من الأبحاث حول تأثير عدم الاستقرار والتأخير على التحرير التعاوني، حيث يُنظر إلى عدم الاستقرار في كثير من الأحيان على أنه أكثر إزعاجًا بكثير، ويبدو أن التأخير المستمر، على قدم المساواة في جميع الأدوات المستخدمة، كشيء يمكن للمستخدمين اعتماده من أجل:http://scholar.google.com/scholar?q=Jitter+and+Delay+real+time+collab

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

في رأيي، لا ينبغي التعامل مع البرمجة التعاونية بنفس طريقة البرمجة الزوجية، حيث يجب عليك الاستفادة من القدرة على التحرير بشكل متزامن.تصبح برمجة بينج بونج أكثر تفاعلية عندما تتم كتابة الاختبارات باستمرار، ويختار كل مطور حسب رغبته ما إذا كان سيشاهد الآخر مباشرة أو ينتظر ويفهم الاختبار النهائي بدلاً من ذلك.فهو يسمح بإجراء تحويلات صغيرة لكتابة نفس النهج بطريقة برمجة A/B دون الحاجة إلى الانتظار حتى يتم تنفيذهما ومناقشتهما بشكل تسلسلي، وبدلاً من ذلك يمكن كتابتهما جنبًا إلى جنب.

مع أطيب التحيات Granit

لقد استخدمنا webex لهذا.على الرغم من أنها ليست بالضرورة مثالية لهذا النوع من الأشياء، إلا أنها تحتوي على بعض الميزات للتوسط في من يتحكم في الكمبيوتر ومتى.

أردت فقط إضافة بعض المكونات الإضافية الرائعة لـ Eclipse IDE - يطلق عليه ساروس وهو OSS.لديه بعض الميزات الجميلة حقا!
يحتوي على بعض الميزات الرائعة (تسليط الضوء على المصدر، وVoIP المدمج (تجريبي)، والدردشة وغيرها من الميزات القادمة مثل مشاركة الشاشة وميزات السبورة البيضاء)...

تعرف على ذلك في ساروس-project.org

لقد كنا نستخدم ميزات ECF الجديدة في Eclipse 3.4 (Ganymede) وقد أعجبتنا.نحن لسنا بعيدين عن بعضنا البعض فعليًا إلا عندما يعمل أحدنا في المنزل ولكن ECF يتيح لك تحرير نفس الملف ولديه أيضًا نافذة مراسلة فورية للدردشة.إذا كنت تستخدم Skype، فهذا أفضل بكثير.

هناك جيدة سكرينكست على فيميو لمشاركة الشاشة التي جعلتنا متحمسين لها حقًا.

في وظيفتي الحالية، عملت مع مطور آخر كان في موقع آخر.بينما كنا نتشاور في كثير من الأحيان مع بعضنا البعض من خلال المكالمات الهاتفية (تعتبر سماعات الرأس ميزة إضافية كبيرة!) ومشاركة الشاشة، فإن "العمل الجماعي" الحقيقي (بما في ذلك بعض البرامج الثنائية الحقيقية) كان أكثر فعالية عندما زرت موقعه (فعلت ذلك مرتين لمدة أسبوع كامل، وكانت هذه الأسابيع جداً شديد).

المشكلة الرئيسية في مشاركة الشاشة هي أنك لا تعرف أبدًا من الذي سيحرك الماوس،...(على سبيل المثال للإشارة إلى شيء ما على الشاشة).

في هذا المشروع، انتهينا من تقسيم العمل إلى مشروعين فرعيين، واجتمعنا معًا (يعني:السفر) لتوصيلهما معًا.

في OSX، استخدمت vim وجلسة شاشة GNU متعددة المستخدمين - وهذا يوفر استجابة أفضل بكثير من VNC، ومشاركة الشاشة، وما إلى ذلك.أستخدم هذا الإعداد مع Skype وسماعة الرأس للاتصال الصوتي.

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

نعم - لقد قمت بالاقتران عن بعد.

استخدمنا مكبر صوت قديم الطراز وVNC.لقد اقترننا بين سياتل وبورنموث، إنجلترا. أدى الفارق الزمني عبر المحيط الأطلسي إلى جعل استخدام VNC أمرًا صعبًا للغاية - فمن الصعب عدم مقاطعة شخص آخر يستخدم الماوس مع التأخر العشوائي في الشبكة.

أنت بحاجة إلى الكثير من الصبر وتتناوب بعض الاتفاقيات في "قيادة" لوحة المفاتيح والماوس.

لقد قمنا فقط بالاقتران عن بعد من أجل التطوير لفترات قصيرة من الوقت - على سبيل المثال 30 دقيقة أو نحو ذلك لأن معظم الأشخاص يصابون بالصداع بسرعة كبيرة. لقد كان الأمر مؤلمًا جدًا مع تأخر الشبكة.لقد واصلنا فقط حل المشكلات حيث وصل الأشخاص إلى نقطة أصبح من الأسهل فيها الشرح عن طريق العرض التوضيحي بدلاً من قراءة النص على موقع wiki.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top