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

نشرت: 2020-05-26

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

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

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

ما هو الدين الفني؟

What Is Technical Debt

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

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

أنواع الديون الفنية

الديون الفنية على اختلاف أنواعها ، ومنها:

الديون الفنية المخططة

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

الديون الفنية غير المقصودة

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

الديون الفنية التي لا مفر منها

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

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

أسباب الدين الفني

Causes of Technical Debt

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

تسرع

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

الرقابة / الخطأ

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

قلة الوعي بالآثار

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

نيّة

يمكن أن تنشأ الديون الفنية عن قصد من خلال الإجراءات المتعمدة للمبرمج أو المنظمة.

عدم وجود نمطية

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

تقييم الدين الفني

Evaluation of Technical Debt

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

تتمثل إحدى طرق إجراء التقييم في إجراء تحليل ثابت باستخدام بعض الأدوات التي تدعمه. بعض الأدوات التي يمكن استخدامها تشمل Coverity و SonarQube و Check Style و Closure Compiler.

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

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

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

حل الديون الفنية

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

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

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

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

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

تجنب الديون الفنية في المستقبل

Avoiding Technical Debts

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

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

إذن ، كيف تمنع الديون الفنية من الظهور:

إنشاء مشروع Backlog

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

إعطاء الأولوية للجودة على السرعة

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

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

خلق الوعي

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

إدخال ممارسات الترميز الجيدة

بعض ممارسات الترميز تزيد من احتمالية الوقوع في الديون الفنية. وبالتالي ، سيكون من الرائع تجنب الاقتران المحكم واستخدام التجريد وإعادة البناء.

أدخل التكنولوجيا المحدثة

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

استنتاج

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