
كيف تتعامل مع الديون التقنية؟
الدين الفني (Technical Debt) كما صاغه وارد كانينغهام هو مصطلح يصف الالتزام الذي تتحمله مؤسسة البرمجيات أو شركة التطوير عندما تختار نهجاً للتصميم أو طريقة تطوير تخدم الغرض منها على المدى القصير، ولكنها تزيد من التعقيد وتكون أكثر تكلفة على المدى الطويل.
غالبًا ما يُستخدم هذا لتحقيق مواعيد تسليم أسرع لمشروع برمجيات بتكلفة أقل، ولكن تمامًا مثل الدين المالي، يمكن لبعض الديون الفنية أن تخدم أغراضاً تجارية قيمة ولكنها قد تكون في نفس الوقت ذات نتائج عكسية.
هناك نوعان أساسيان من الدين الفني:
الدين الفني غير المقصود
هذا الدين الفني هو نتيجة غير استراتيجية لضعف أداء الأعمال.
مثال: يقدم المطور برنامجاً يعمل في البداية، ولكنه يتبين في مرحلة لاحقة أن نهج التصميم عرضة للخطأ أو أن عضواً مبتدئاً في الفريق قد كتب برنامجاً سيئاً.
وفي مثال آخر، يمكن أيضاً تحمل هذا النوع من الديون دون علم. فقد يكون لدى الشركة التي تتعاون معها دين تقني كبير لا يتم اكتشافه إلا بعد الاستحواذ على المنتج البرمجي.
ويمكن أن ينشأ هذا الدين أيضاً عندما يتعثر فريق في جهوده لإعادة كتابة منصة مثقلة بالديون وينشئ عن غير قصد المزيد من الديون.
الدين الفني المقصود
يحدث هذا عادة عندما تتخذ الشركة قراراً واعياً بتحسين الحاضر بدلاً من المستقبل.
"إذا لم نكمل هذا الإصدار في الوقت المحدد، فلن يكون هناك إصدار تالٍ" هي عبارة شائعة وغالباً ما تكون مقنعة. ويؤدي ذلك إلى قرارات مثل، "ليس لدينا الوقت للتوفيق بين قاعدتي البيانات هاتين، لذلك سنكتب بعض التعليمات البرمجية الرابطة (حل سريع) يحافظ على مزامنتهما الآن ثم نجد حلاً أفضل بعد التسليم". أو "لدينا بعض التعليمات البرمجية المكتوبة من قبل مقاول لا تتبع معايير الترميز الخاصة بنا؛ وسنقوم بتنظيفها لاحقاً". أو "لم يكن لدينا الوقت لكتابة جميع اختبارات الوحدة (Unit Tests) لما طورناه في الشهرين الماضيين، وسنقوم بتنفيذ هذه الاختبارات بعد بدء التشغيل الفعلي".
كيف تتعامل مع الدين الفني؟
تجنب تراكم الديون الصغيرة
يتراكم هذا الدين من اتخاذ المئات أو الآلاف من الاختصارات الصغيرة - مثل أسماء المتغيرات العامة، والتعليقات المتناثرة، وإنشاء فئة كود واحدة في حالة يتعين عليك فيها إنشاء فئتين، وعدم اتباع اتفاقيات الترميز، وما إلى ذلك. يشبه هذا النوع من الديون ديون بطاقات الائتمان. من السهل التسامح معها عن غير قصد، وهي تتراكم بشكل أسرع مما تعتقد، ويصعب تتبعها وإدارتها بعد تحملها.
كرائد أعمال، عليك أن تأخذ بعين الاعتبار الدين الفني عند اختيار الفريق الذي سيطور عملك.
قد تبدو لك بعض العروض من المبرمجين المبتدئين أقل بكثير من غيرها، ولكن في النهاية، يمكنك توفير دين كبير على نفسك في المستقبل إذا اخترت فريقاً محترفاً في البداية.
معالجة الديون وتتبعها في برنامجك
من الآثار الهامة للدين الفني هو أنه يجب سداده، مما يعني أنه بمجرد تحمل الدين، ستكون هناك رسوم فوائد.
إذا نما الدين بشكل كافٍ، فسوف تنفق الشركة في النهاية على خدمة ديونها أكثر مما تستثمره في زيادة قيمة أصولها الأخرى. ومن الأمثلة الشائعة على ذلك قاعدة الكود القديمة التي يتم فيها بذل الكثير من الجهد للحفاظ على تشغيل نظام الإنتاج (أي "خدمة الدين") بحيث يتبقى وقت قليل جداً لإضافة إمكانات جديدة إلى النظام.
يمكنك الاحتفاظ بقائمة الديون داخل نظام تتبع الأخطاء (Defect Tracking System).
في كل مرة يتم فيها تحمل دين، يتم إدخال المهام اللازمة لسداد هذا الدين في النظام جنباً إلى جنب مع تقدير الجهد والجدول الزمني.
ثم يتم تتبع الديون المتراكمة، ويتم التعامل مع أي ديون لم يتم تسويتها لأكثر من 90 يوماً، على سبيل المثال، على أنها حرجة.
بالطبع، في النهاية، يشبه الدين الفني الدين المالي. ولدى الشركات فلسفات مختلفة حول فائدة الديون. إذ ترغب بعض الشركات في تجنب تحمل أي ديون على الإطلاق، بينما ترى شركات أخرى الديون كأداة مفيدة وتريد فقط معرفة كيفية استخدامها بحكمة.
