كيف يمكنك تبرير عمل إعادة الهيكلة لرئيسك الذي لا يملك المال؟[مغلق]

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

أخبر رئيسك أنك ستحتاج إلى أسبوع لتنظيف هذه الأشياء.

"تنظيف ما الأمر؟"

"الرمز الخاص بي - إنه حظيرة الخنازير!"

"هل تعني أن هناك المزيد من إصلاح الأخطاء؟"

"ليس حقًا، إنه أشبه بـ.."

"هل ستجعله يعمل بشكل أسرع؟"

"ربما، ولكن هذا ليس كذلك.."

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

لقد قرأت كتاب ماتين فاولر، لكنني لست متأكدًا من أنني أتفق مع نصيحته في هذا الشأن:

  • شجع المراجعات المنتظمة للتعليمات البرمجية، لذلك يتم تشجيع أعمال إعادة الهيكلة كجزء طبيعي من عملية التطوير.
  • فقط لا تقل أنك المطور وهذا جزء من واجبك.

كلتا الطريقتين تتخلصان من الحاجة إلى التواصل مع مديرك.

ماذا تقول لرئيسك؟

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

المحلول

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

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

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

كن صادقًا مع رئيسك في العمل وافهم أن المشروع لا يتم إنجازه حتى يتم إنجازه.

نصائح أخرى

التحدث بلغة يستطيع أن يفهمها.

إعادة البناء هي دفع ديون التصميم.

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

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

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

لول @ الناس أسفل تعديل / بمناسبة الهجوم.

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

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

هذا على افتراض أنك تقوم بإعادة البناء لسبب ما وليس لغرور المبرمج.

إعادة الهيكلة يجب عليك القيام بها في كل وقت....لذلك لا ينبغي عليك تبرير ذلك.

تنظيف الفوضى الكبيرة / إعادة التصميم قد تتضمن إعادة البناء من أجل السيطرة عليها، ولكنها ليست "إعادة بناء"

يجب أن تكون إعادة البناء مسألة لحظات... أو دقائق إذا لم يكن لديك أداة دعم.

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

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

هل يحب رئيسك الميزات؟بالتأكيد، كلهم ​​يفعلون ذلك.إذا قمت بتحسين قابلية صيانة الكود، فستتمكن من تقديم المزيد من الميزات بهذه الميزانية المحدودة.

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

والشيء الآخر الذي يجب أن تخبره لرئيسك هو أنك تقلل التكلفة لإجراء تحسينات مستقبلية.

أموال أقل الآن بالنسبة لي لإعادة البناء ...

أو المزيد من المال لاحقًا لإصلاح أي خطأ يحدث ولإعادة البناء.

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

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

لذلك، حظا سعيدا مع رئيسك.نأمل أن يكون هو أو هي معقولين.

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

لقد أنقذ مؤخرتي بشكل حاد في أكثر من مناسبة.

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

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

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

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

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

قم بتأسيس تلك الثقة أو استبدال الرئيس أو استبدال المطور.

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

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

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

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

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

لا....ما عليك سوى الحصول على وظيفة جديدة في مكان أكثر توافقًا معك.

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