الدَّين التقني لأصحاب الأعمال

«الدَّين التقني» هو الكلفة المستقبلية للاختصارات التي تُتخذ في البرنامج اليوم. فالإصلاح السريع، أو المقطع المنسوخ من الشيفرة، أو الاختبار المتروك، أو المكتبة المتقادمة، قد يوفّر وقتًا الآن، لكن كل تغيير لاحق في ذلك الجزء من النظام يكلّف أكثر حتى يُسدَّد الاختصار. والقليل من الدَّين قرار تجاري معقول. أما الدَّين غير المُدار فيظهر في مزايا تستغرق وقتًا أطول في كل مرة، وأعطال تعود، ونظام لا يجرؤ أحد على لمسه.
ولا تحتاج إلى قراءة الشيفرة لتديره، بل إلى أن تتعرّف على أعراضه، وتطلب قائمة مكتوبة بالدَّين المعروف، وتخصص وقتًا لسداده.
الجواب المختصر
- ما هو: اختصارات تُدفع كلفتها لاحقًا، مع فائدة، في كل مرة يتغير فيها ذلك الجزء من النظام.
- لماذا يحدث: المواعيد الضاغطة، والمتطلبات غير الواضحة، وتبدّل المطوّرين، وتقادم المكتبات.
- أعراضه: تغييرات أبطأ، وأعطال متكررة، وخوف من التحديثات، ومعرفة يحملها شخص واحد.
- ماذا تفعل: احتفظ بقائمة مكتوبة للدَّين، واطلب تقدير كلفة كل بند، وخصص جزءًا من كل دورة إصدار لسداده.
- متى تعيد البناء: نادرًا، وفقط حين يجعل الدَّين التغيير الآمن مستحيلًا.
من أين جاء المصطلح
جاء التشبيه من وارد كننغهام، وهو مبرمج، في تقرير عام 1992 عن مشروع برمجيات مالية. وكلماته تستحق النقل لأنها كثيرًا ما تُستعاد خطأً؛ فهو يقول ما معناه: إن شحن الشيفرة في صيغتها الأولى أشبه بالاستدانة، والقليل من الدَّين يسرّع التطوير ما دام يُسدَّد سريعًا بإعادة الكتابة… والخطر يقع حين لا يُسدَّد الدَّين، فكل دقيقة تُقضى على شيفرة «ليست صحيحة تمامًا» تُحتسب فائدةً على ذلك الدَّين.
وفي كلامه أمران لافتان: أنه لم يقل إن الدَّين سيئ، بل قال إن قليله يسرّعك؛ وأنه حدّد موضع الخطر بدقة: في عدم السداد.
كيف يبدو من مقعد صاحب العمل
نادرًا ما ستسمع عبارة «الدَّين التقني» من مورّد متعثر، لكنك سترى آثارها:
- كل تغيير يستغرق أطول من سابقه المماثل له في الحجم.
- الأعطال التي أُصلحت تعود، أو إصلاح أحدها يكسر شيئًا آخر.
- التحديثات تُؤجَّل لأنها «قد تكسر أشياء»، فتتأخر المكتبات والخوادم سنوات.
- مطوّر واحد هو الوحيد الذي يفهم جزءًا من النظام.
- التقديرات تأتي بهامش قلِق للأجزاء التي لا يريد أحد لمسها.
- الطلبات البسيطة تقابلها إجابات معقدة، مثل «سنضطر إلى تغييرها في خمسة أماكن».
ولا يثبت أيٌّ من هذه وحده وجود مشكلة، أما اجتماع عدة منها فيكاد يثبتها دائمًا.
من أين يأتي الدَّين
- المواعيد الضاغطة: اختصار يُتخذ لإدراك موعد إطلاق. وهذا معقول إن سُجّل وسُدّد.
- المتطلبات غير الواضحة أو المتغيرة: شيفرة كُتبت لفهمٍ ما للعمل، ثم لُويت لتناسب فهمًا آخر.
- تبدّل المطوّرين: كل شخص جديد يضيف نهجه فوق نهج من سبقه.
- العمر: أطر العمل والمكتبات والخوادم التي كانت حديثة عند الإطلاق تتقادم، ثم يتوقف دعمها، وهذه مشكلة أمنية أيضًا.
- الأسس المتروكة: لا اختبارات آلية، ولا توثيق، ولا بنية متسقة.
اختبار تستطيع تطبيقه دون قراءة الشيفرة
يقدّم عبدالقادر وهيبة، مؤسس «ذوات» ورئيسها التنفيذي، لأصحاب الأعمال اختبارًا بسيطًا:
«اطلب من مورّدك قائمة الدَّين المعروف في نظامك، وكلفة إصلاح كل بند منها. فالفريق الذي يملك قائمة كهذه يدير دَينه، والفريق الذي يقول إنه لا يوجد دَين أصلًا إما لا يعرف، وإما لا يخبرك.» — عبدالقادر وهيبة
فكل نظام حقيقي يحمل شيئًا من الدَّين، والفرق بين نظام سليم ونظام يتهاوى هو هل هذا الدَّين معروف ومكتوب ويُسدَّد.
كيف تديره
احتفظ بقائمة مكتوبة للدَّين
يجب أن يذكر كل بند ما الاختصار، وأي جزء من النظام يمسّ، وما يكلّفك الآن (تغييرات أبطأ، أو مخاطر، أو أعطال متكررة)، وما يتطلبه إصلاحه. فهذا يحوّل مشكلة غير مرئية إلى قائمة تستطيع ترتيب أولوياتها كأي قائمة أخرى.
سدّد في كل دورة
اتفقا على أن جزءًا من كل دورة إصدار يذهب إلى سداد الدَّين لا إلى مزايا جديدة. ونسبة هذا الجزء تقدير يعود إليك وإلى المورّد، لكنها يجب ألا تكون صفرًا أبدًا. فالدَّين الذي لا يُجدول لا يُسدَّد.
أبقِ المكوّنات محدّثة
يجب أن تُحدَّث أطر العمل والمكتبات بانتظام، بخطوات صغيرة، لا مرة كل بضع سنوات في قفزة محفوفة بالمخاطر. ومكان ذلك عقد الصيانة والدعم، لا مشروع منفصل.
اجعل الاختصار صريحًا حين تتخذه
إن كان الموعد مهمًا فعلًا، فقد يكون تحمّل الدَّين الخيار الصحيح. فافعله عن قصد: سجّله في القائمة لحظة اتخاذه، مع موعد لسداده.
احمِ المعرفة
التوثيق، والاختبارات الآلية، وشيفرة يفهمها أكثر من شخص، هي ما يجعل الدَّين قابلًا للسداد. ودونها يصبح كل إصلاح مخاطرة، ويواصل الدَّين نموه.
إعادة الهيكلة أم إعادة البناء؟
حين يثقل الدَّين، تصبح إعادة الكتابة الكاملة مغرية، وهي في الغالب الإجابة الخاطئة. فإعادة الكتابة تستغرق أطول من المتوقع، وتعيد بناء المزايا القديمة بينما تنتظر المنشأة، وكثيرًا ما تعيد المشكلات القديمة في شيفرة جديدة. والطريق الأسلم استبدال النظام على شرائح وهو يعمل، كما يشرح مقال كيف تستبدل نظامًا قديمًا دون إيقاف العمل.
وتكون إعادة البناء مبرّرة حين تكون المنصة نفسها غير مدعومة أو غير آمنة، أو حين يجعل الدَّين التغيير الآمن مستحيلًا عمليًا. وحتى عندئذ، يجب أن تتم جزءًا بعد جزء.
إن ورثت نظامًا
إن تسلّمت نظامًا من مورّد سابق، أو غادر المطوّر، فابدأ بمراجعة مستقلة: حالة الشيفرة، والمكوّنات، والتوثيق، والدَّين. ويتناول مقال كيف تنقذ مشروع برمجيات متعثرًا ما تؤمّنه أولًا.
أسئلة شائعة
هل الدَّين التقني سيئ دائمًا؟ لا. فحين يُتخذ عن قصد، ويُسجَّل، ويُسدَّد، قد يسرّع إطلاقًا مهمًا. ويصبح ضارًا حين يكون غير مرئي ولا يُسدَّد أبدًا، لأن «الفائدة» تكبر مع كل تغيير.
كيف أعرف أن في نظامي دَينًا تقنيًا كبيرًا؟ راقب التغييرات التي تزداد بطئًا، والأعطال التي تعود، والتحديثات المؤجلة، والأجزاء التي لا يفهمها إلا شخص واحد. ثم اطلب من المورّد قائمة مكتوبة بالدَّين المعروف، مع كلفة كل بند.
من يدفع ثمن الدَّين التقني؟ أنت، إما في صورة تغييرات أبطأ وأغلى، وإما في صورة كلفة سداده. والمورّد الجيد يخبرك حين يُتخذ اختصار وما سيكلّفه لاحقًا، ليكون القرار قرارك.
هل نعيد كتابة النظام من الصفر؟ نادرًا. فإعادة الكتابة بطيئة ومحفوفة بالمخاطر، واستبدال النظام على شرائح وهو يعمل أسلم عادةً، إلا إذا كانت المنصة الأساسية غير مدعومة أو غير آمنة.
كم من الوقت يُخصَّص لسداد الدَّين؟ لا يوجد رقم عام؛ فالأمر يتوقف على حجم الدَّين وسرعة تغيّر النظام. والمهم أن يُجدول وقت في كل دورة، وأن تقصر قائمة الدَّين مع الوقت.
المصادر: وارد كننغهام — نظام WyCash لإدارة المحافظ (تقرير تجربة، OOPSLA '92)
قلق على حالة نظام تعتمد عليه؟ تراجع «ذوات» البرمجيات المخصصة وتصونها وتحدّثها، وستخبرك بصراحة هل الأجدى الإصلاح أم الاستبدال. احجز مكالمة.