في مارس 2017 تقريبًا ، طُلب مني إجراء مراجعة برمجية للمنتج قبل الإطلاق. واجهت هذه الشركة مشاكل مع تسرب الذاكرة ، والأعطال التلقائية ، والتحميل البطيء ، والارتفاعات في استهلاك وحدة المعالجة المركزية ، وتم التخطيط لإصدارها في غضون أسابيع قليلة. ربما سمعت بالفعل هذه القصة - ليس مني وليس عن هذه الشركة. إنها نموذجية بشكل مدهش.
اجتمعنا في عطلة نهاية الأسبوع وبدأنا في النظر في الرمز معًا. بعد حوالي نصف يوم ، تم اكتشاف مصدر مشاكل معروفة ، واستغرق نصف يوم آخر لكتابة مستند إصلاح للمطورين. كان الإطلاق ناجحًا ، لكن القصة جعلتني أفكر: كيف وصل المنتج إلى مثل هذه الحالة.
عندما تحدثت إلى المطورين ، بدوا أشخاصًا أذكياء. كانت المشكلة الواضحة الوحيدة قلة الخبرة. لقد صادفت هذا من قبل. هذه ظاهرة شائعة وطبيعية تمامًا. ولكن في هذه الحالة ، لوحظ خلل شنيع: الخبرة لم تكن كافية
لجميع المطورين.
تم إنشاء قسم التطوير مؤخرًا ، وتم تعيين فريق في غياب مدير فني. حتى التقني يضغط بشدة لاختبار مبرمج آخر - لا أستطيع حتى تخيل اختبار بدون معرفة تقنية. قاموا بتوظيف المطور الأول ، وراجع المطور الثاني - وهكذا ، حتى تم تشكيل فريق.
إذا كنت محظوظًا وكان المطور الأول لديه خبرة كبيرة ورغبة في التدريب ، فأنت في السيدات. ولكن إذا كنت محظوظًا - وفرص ذلك عالية جدًا - فستحصل على فريق سريع الحركة ينشئ برنامجًا هشًا للغاية.
يقولون "تصرف بسرعة وكسر كل شيء". لكن هذه فكرة سيئة جدًا إذا كان العمل يعتمد على عدد صغير من العملاء الكبار. عادة ما تخيفها المنتجات المكسورة ، والتي بدورها تضرب عملك. يمكنك وصف الاستراتيجية الفعالة بطرق مختلفة ، ولكن من الواضح أن عبارة "التحرك ببطء وثبات نحو الهدف" ليست مثيرة للإعجاب.
في الواقع ، هناك توازن بين الحركة السريعة والبطيئة. من الصعب العثور على هذا التوازن ، لأن كل منتج له رصيده الخاص. أفترض أن الحدس قائم على الخبرة ، وهذه إجابة رهيبة للمبتدئين.
ماذا تفعل للمطور الجديد؟
يبدو من الطبيعي البحث عن إجابة على الإنترنت. اتضح أنه
فعال بشكل لا يصدق .
ولكنه أيضًا
خطير للغاية .
لقد تعاونت مع تلك الشركة بعد إطلاق المنتج. لقد بحثت في كمية كبيرة من التعليمات البرمجية ، وساعدت في تدريب المطورين وإنشاء مشاريع جديدة لهم. كل شيء سار بسلاسة.
بمجرد أن جذب انتباهي قطعة واحدة من التعليمات البرمجية. كنت قد أقسمت أني رأيته من قبل. بالطبع ، من خلال البحث في السطر ، وجدت نسخة طبق الأصل من الرمز في مشاركة مدونة واحدة. بطبيعة الحال ، قرأت المقالة بأكملها - وصولا إلى الفقرة التي تقول:
"لا تفعل ذلك في الإنتاج" .
لكن هذه الخطوط تنظر إلي مباشرة من قاعدة الكود في الإنتاج.
لم يستغرق الأمر وقتًا طويلاً للعثور على العديد من أجزاء التعليمات البرمجية من مقالات مماثلة. تمت كتابة إخلاء المسؤولية في كل مكان تقريبًا ، أو من الواضح أنه لم يكن كافيًا. حلوا جميعًا جزءًا صغيرًا من المشكلة ، لكنهم سمحوا بالكثير من الحريات لتسهيل قراءة الشفرة. يمكن فهم ذلك. معظم القراء يقدرون الإيجاز عند تعلم المفهوم.
ينتشر الرمز من إدخالات المدونة هذه من خلال قاعدة التعليمات البرمجية كعدوى ، مما يتسبب في حدوث مشاكل هنا وهناك دون أي سبب أو نمط. ولم يكن هناك علاج واضح بخلاف قراءة جميع التعليمات البرمجية على التوالي وإصلاح المشكلات يدويًا واحدًا تلو الآخر. بدون اختبارات الوحدة والنشر التلقائي ، استغرق الأمر
ما يقرب من عام . أنا متأكد تمامًا من أن تكلفة إصلاح الرمز تجاوزت تكلفة كتابته.
ولكن ما الخيار الذي كان لدى هؤلاء المطورين؟ لقد احتاجوا إلى إصدار شيء ما ، ولم يسبق لهم إطلاق تطبيق في الإنتاج. لذلك ، فعلوا ما سيحاول أي شخص عاقل القيام به - وتعلم على طول الطريق.
فشل أنظمة الإنتاج في عدد لا يصدق من الطرق. بدون خبرة أو معرفة نظرية بهذه الإخفاقات ، من الصعب أن نفهم بديهية كيفية منع أو حل مثل هذه المشاكل. من الصعب أن تطلب فريقًا جديدًا لتحقيق نتيجة مثالية ، خاصة بدون نوع من القيادة.
قبل المتابعة ، أود أن أشير إلى أن كل شخص له يد في هذه الفوضى لديه نوايا حسنة. أراد المطورون إنشاء منتج جيد وتطويره. أراد المديرون نفس الشيء. أراد مؤلفو المدونة مشاركة حلول مفيدة. حاول الجميع مساعدة بعضهم البعض ، ومن المهم تذكر ذلك.
المشكلة ليست في الناس.أتعاطف بشدة مع المطورين الذين هم في هذا الموقف. لديهم معلومات أكثر مما سيحتاجون إليه ، لكنها غير منظمة تمامًا. هذا مشابه لمحاولة تجميع أحجية من عشر قطع ، ما عليك سوى العثور عليها في كومة من 10،000،000 قطعة ، حيث جميع القطع مربعة ، والنتيجة النهائية غير معروفة. حظ موفق.
إذا قرأت هنا أملاً في الحصول على إجابة ، فأنا آسف: ليس لدي إجابة بسيطة. من الصعب حل هذه المشكلة. الحل كبير جدًا بالنسبة لمقالة واحدة ، فهو يتغير كل يوم ويختلف في الفروق الدقيقة لكل مشروع.
دفعتني هذه المشكلة لبدء مدونة. لقد كنت محظوظًا بما يكفي للتعلم من الموجهين والكتاب والزملاء الموهوبين بشكل لا يصدق لما يقرب من عشرين عامًا. بدون نصيحة هؤلاء الناس ، ما زلت أكتب تعليمات
GOTO
في QBasic (brrr). حان الوقت لأخذ الكرة والهجوم.
لتلخيص.
هذه المدونة مخصصة لجميع جوانب تطوير التطبيقات الجاهزة: من أتمتة البنية التحتية إلى الاختبار والتصميم وتصحيح الأخطاء والتوثيق وعملية التطوير والأمن. كل مقال مستقل ومناسب للاستخدام في العالم الحقيقي -
مناسب للاستخدام في الإنتاج .