ماذا تفعل مع المطور الذي لا يختبر الكود الخاص به؟[مغلق]

StackOverflow https://stackoverflow.com/questions/139228

سؤال

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

إلى جانب التخلص من المطور، كيف يمكنني حل هذه المشكلة؟

يحرر

لقد تحدثت معه عن ذلك عدة مرات، بل وأعطيته تحذيرًا كتابيًا

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

المحلول

إذا كنت تؤدي بشكل منهجي مراجعات الكود قبل السماح للمطور بتنفيذ التعليمات البرمجية، حسنًا، تم حل مشكلتك في الغالب.ولكن يبدو أن هذا ليس هو حالك، لذلك أوصي بهذا:

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

نصائح أخرى

إذا كان بإمكانك إجراء مراجعات للأكواد، فهذا هو المكان المثالي للحصول عليها.

نحن نطلب مراجعات قبل الدمج في صندوق التكرار، لذلك عادةً ما يتم اكتشاف كل شيء بعد ذلك.

طقوس الضرب!لكل حشرة، سوط واحد من السوط!

(نكتة لمن لم يفهمها)

باعتباري مطورًا نادرًا ما يختبر الكود الخاص به، يمكنني أن أخبرك بالشيء الوحيد الذي جعلني أغير سلوكي ببطء...

الرؤية

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

تشجعك مراجعات التعليمات البرمجية والتعاون على العمل على صنع منتج عالي الجودة أكثر بكثير مما لو كنت تقدم "Widget X" بينما يعمل زملائك في العمل على "Widget Y" و"Widget Z".

كلما كان عملك أكثر وضوحًا، زاد احتمال اهتمامك بمدى نجاحه.

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

دعهم يسلطون الضوء ويتحمسون لشرح ما فعلوه.اطلب منهم إحضار نسخ من الكود حتى يتمكن المطورون الآخرون من رؤية ما يتحدثون عنه.

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

إذا لم يدفع ذلك مطورك إلى كتابة تعليمات برمجية عالية الجودة، فمن المحتمل أنه ليس مناسبًا لفريقك.

اجعله جزءًا من أهداف المراجعة السنوية.وإذا لم يحقق ذلك فلا زيادة في الراتب.

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

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

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

لماذا لا تتحدث معه فقط؟ربما لن يعضك بالفعل.

  • اجعله "يرعى" المبنى ويصبح مدير البناء.سيمنحه هذا وقتًا أقل لتطوير التعليمات البرمجية (وبالتالي زيادة أداء الجميع) وسيعلمه سبب ضرورة البناء الجيد.

  • فرض حالات الاختبار - لا يمكن إرسال الكود بدون حالات اختبار الوحدة.قم بتعديل نظام البناء بحيث إذا لم يتم تجميع حالات الاختبار وتشغيلها بشكل صحيح، أو لم تكن موجودة، فسيتم رفض تسجيل الوصول للمهمة بالكامل.

-آدم

نشر الإحصائيات حول تغطية كود الاختبار لكل مطور، وذلك بعد التحدث معه.

وهنا بعض الأفكار من أكواخ البحر.

Intro
   What shall we do with a drunken sailor, (3×)
   Early in the morning?
Chorus
   Wey–hey and up she rises, (3×)
   Early in the morning!
Verses
   Stick him in a bag and beat him senseless, (3×)
   Early in the morning!
   Put him in the longboat till he’s sober, (3×)
   Early in the morning!

إلخ.استبدل عبارة "بحار مخمور" بكلمة "مطور قذر".

اعتمادًا على نوع نظام التحكم في الإصدار الذي تستخدمه، يمكنك إعداد سياسات تسجيل الوصول التي تجبر الكود على اجتياز متطلبات معينة قبل السماح له بتسجيل الوصول.إذا كنت تستخدم نظامًا مثل Team Foundation Server، فإنه يمنحك القدرة على تحديد تغطية التعليمات البرمجية ومتطلبات اختبار الوحدة لعمليات تسجيل الوصول.

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

وقد يركزون بشكل مفرط على السرعة بدلاً من الجودة.

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

لتصحيح هذا التوازن:

  1. قم بتعيين عنصرين فقط في المرة الواحدة في نظام تتبع المشكلات لديك،
  2. مراجعة الكود واختبار أي شيء "أكملوه" في أقرب وقت ممكن حتى يتم الرجوع إليهم على الفور في حالة وجود أي مشاكل
  3. تحدث معهم عن توقعاتك بشأن المدة التي سيستغرقها تنفيذ أحد العناصر بشكل صحيح

برمجة الأقران هي احتمال آخر.إذا كان مع مطور ماهر آخر في الفريق والذي يفي بمعايير الجودة ويعرف الإجراء، فإن هذا له بعض الفوائد:

  1. مع وجود مطور ذو خبرة تحت كتفه، سوف يتعلم ما هو متوقع منه ويرى الفرق بين الكود الخاص به والرمز الذي يلبي التوقعات
  2. يمكن للمطور الآخر فرض سياسة الاختبار أولاً:عدم السماح بكتابة التعليمات البرمجية حتى تتم كتابة الاختبارات لها
  3. وبالمثل، يمكن للمطور الآخر التحقق من أن الكود يتوافق مع المعايير قبل تسجيله مما يقلل عدد عمليات تسجيل الوصول السيئة

كل هذا يتطلب بالطبع أن تكون الشركة والمطورون متقبلين لهذه العملية، وهو ما قد لا يكونون كذلك.

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

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

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

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

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

يحرر

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

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

يبدو الأمر بسيطًا جدًا.اجعله مطلبًا، وإذا لم يتمكن من ذلك، استبدله.لماذا ستحتفظ به؟

أنا عادة لا أؤيد هذا إلا إذا فشل كل شيء آخر ...

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

جرب الجزرة، اجعلها لعبة ممتعة.
على سبيل المثال، البرنامج المساعد للعبة التكامل المستمر لهدسون
http://wiki.hudson-ci.org/display/HUDSON/The+Continious+Integration+Game+plugin

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

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

يمكنك إعداد تقرير بالأخطاء الموجودة في الكود مع اسم المبرمج المسؤول عن هذا الجزء من البرنامج.

إذا كان شخصًا عاقلًا، ناقش معه التقرير.

إذا كان يهتم بـ "سمعته" قم بنشر التقرير بانتظام وإتاحته لجميع أقرانه.

إذا كان يستمع فقط إلى "السلطة"، قم بالإبلاغ وتصعيد الأمر إلى مديره.

على أية حال، لقد رأيت في كثير من الأحيان أنه عندما يتم إعلام الناس بمدى سوء مظهرهم من الخارج، فإنهم يغيرون سلوكهم.

مهلا هذا يذكرني شيء قرأته على xkcd :)

هل تشير إلى كتابة اختبار الوحدة الآلي أو اختبار الوحدة يدويًا قبل تسجيل الوصول؟

إذا كان متجرك لا يكتب اختبارات آلية، فإن التحقق من الكود الذي لا يعمل يعد أمرًا متهورًا.هل يؤثر على الفريق؟هل لديك قسم رسمي لضمان الجودة؟

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

سؤالك واسع إلى حد ما ولكن آمل أن أكون قد قدمت بعض التوجيه.

أتفق مع فيل في أن الخطوة الأولى هي التحدث معه بشكل فردي وشرح أهمية الجودة.يمكن ربط الجودة الرديئة في كثير من الأحيان بثقافة الفريق والقسم والشركة.

اجعل حالات الاختبار المنفذة واحدة من التسليمات قبل اعتبار شيء ما "منجزًا".

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

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

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

لكن هذا أنا فقط...

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

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

قد تجد بعض الإجابات المفيدة هنا: كيفية جعل المبرمجين المبتدئين يكتبون الاختبارات؟

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