كيف تجعل الناس يقدرون التجريد والمرونة على "مجرد إنجازه"؟

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

سؤال

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

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

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

كيف تتعامل مع هؤلاء الناس؟

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

المحلول

إقناعهم بأن أخذ اختصارات هو اقتصاد كاذب.

اشرح أن الأولي الترميز الجهد هو أقل من 30 ٪ من جهد التطوير الأولي ، وأقل من 10 ٪ (في تجربتي) من الجهد العام للمشروع (بما في ذلك الصيانة).

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

نصائح أخرى

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

"أسهل" متى؟ الآن ، عندما لا يكون كل شيء في حالة تدفق؟ أو بعد ثلاثة أشهر من الآن عندما تتغير متطلبات العميل ولديهم "حل" لم يعد حلًا؟

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

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

قضيت أسبوعًا من حياتي (7 أيام متتالية) في إعادة كتابة الوحدة النمطية لأنني كنت في وضع "الحصول على ذلك سريعًا". سبعة أيام من الوقت الشاق ، من 10 إلى 12 ساعة في القيام بذلك بالطريقة الصحيحة ، في وقت متأخر من اللعبة ، عندما كان من الممكن أن أشاهد Super Bowl. هذا الستانك. لقد تعلمت درسًا هناك. قد يحتاج "أصدقاؤك" إلى تجربة هذا النوع من الافتتاحية للعين أيضًا.

حظا سعيدا!

أنا في الواقع أكره أن آخذ الرأي المعارض حول هذا الموضوع ، ولكن ...

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

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

يرجى عدم استخدام هذا كرسول - تنطبق قاعدة 80/20 هنا ، بالطبع. في معظم الأوقات ، تريد تمامًا سحق أي اختصارات على طول هذه الخطوط ؛ ولكن احيانا...

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

يمكنك تجربة تشبيه عليهم ....

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

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

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

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

أفضل شيء ربما هو الترويج لهم للإدارة حتى لا يتمكنوا من إلحاق الكثير من الضرر.

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

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

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

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

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

4) قد تكون مخطئًا بالفعل. هل سيكون من المنطقي بالنسبة لـ Microsoft أن تقضي ضعف عدد ساعات المبرمج في جعل MS-PAINT قويًا وقابل للصيانة؟ في بعض الأحيان يكون نظام القبيح القبيح جيدًا بما فيه الكفاية. يواجه معظم المبرمجين الجيدين مشكلة في فهم هذا ، ولكن هذا عادة ما يكون لأنهم مبرمجين جيدون.

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

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

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

أخبرهم أن يقرأوا (وليس أنهم سوف) نظرية التغليف:http://www.edmundkirwan.com/

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