الرئيسية/اسألني/إزاي أوازن بين Technical Debtو Features الجديدة؟

إزاي أوازن بين Technical Debtو Features الجديدة؟

سؤال من قارئ مجهولسُئل في ٤ أكتوبر ٢٠٢٦نُشر في ٦ أكتوبر ٢٠٢٦

الموازنة بين Technical Debt والـ Features الجديدة من اكتر التحديات اللي بتواجه اي فريق تقني. المشكلة مش انك تختار واحدة على حساب التانية المشكلة انك تبني نظام مستمر يخليك تاخد القرار الصح في الوقت الصح.

١- افهم ان Technical Debt مش كله وحش

مش كل Technical Debt لازم يتصلح فورا. زي الدين المالي، فيه دين "استراتيجي" انت اخدته بوعي عشان توصل للسوق بسرعة، وفيه دين "عشوائي" اتراكم من غير ما حد ياخد باله. الخطوة الاولى هي انك تفرق بين الاتنين.

الدين الاستراتيجي ممكن يكون قرار ذكي، مثلا لما تطلق MVP بكود مش مثالي عشان تختبر السوق بسرعة. لكن الدين العشوائي، زي كود متكرر، معمارية قديمة، واختبارات ناقصة، ده اللي بيبطئك مع الوقت ولازم تتعامل معاه.

٢- اعمل جرد وتصنيف للدين التقني

قبل ما تاخد اي قرار، لازم تعرف حجم الدين اللي عندك. اعمل Tech Debt Registry، قايمة بكل عناصر الدين التقني المعروفة، وصنفها حسب:

  1. الاثر على السرعة: هل الدين ده بيبطئ الفريق فعلا

  2. الخطورة: هل ممكن يسبب مشاكل في الـ Production؟

  3. تكلفة الاصلاح: محتاج يوم ولا شهر؟

  4. الترابط مع شغل جديد: هل فيه Feature جاية هتتاثر لو ما صلحناش الدين ده؟

٣- استخدم قاعدة النسبة الثابتة

واحدة من اكتر الطرق العملية هي تخصيص نسبة ثابتة من كل Sprint او Cycle للدين التقني. النسب الشايعة:

  1. 20/80: 20% للدين التقني و 80% للـ Features، ده الشايع في الفرق اللي عندها دين متراكم متوسط.

  2. 30/70: لما الدين كبير وبدا يأثر على سرعة التسليم بشكل ملحوظ.

  3. 10/90: لما الكود في حالة كويسة ومحتاج صيانة بسيطة بس.

المهم ان النسبة دي تكون متفق عليها مع الـ Stakeholders ومش بتتغير كل Sprint حسب الضغط.

٤- ادمج الدين التقني مع الـ Features لما تقدر

مش لازم يكون فيه فصل حاد بين "Sprint للدين" و "Sprint للـ Features". الطريقة الاذكى هي انك تربط اصلاح الدين بالشغل الجديد. مثال: لو هتبني Feature جديدة في جزء معين من الكود، استغل الفرصة وحسن الكود الموجود في نفس المنطقة. كده انت بتصلح الدين وبتبني الجديد في نفس الوقت، وده بيخلي التحسين جزء طبيعي من الشغل مش عبء اضافي.

٥- اتكلم بلغة البيزنس مش لغة الكود

واحدة من اكبر الاخطاء هي انك تروح للـ Stakeholders تقولهم "محتاجين نعمل Refactoring". ده مش بيوصل. بدل كده، اتكلم بلغتهم:

بدل "عندنا Technical Debt في الـ Authentication Module" : "الفريق بياخد ضعف الوقت المتوقع في اي Feature متعلقة بتسجيل الدخول بسبب تعقيد في الكود القديم".

بدل "محتاجين نعمل Refactoring" : "لو استثمرنا اسبوعين دلوقتي، هنوفر اسبوع في كل Feature جاية في الجزئية دي".

بدل "الكود مش نضيف" : "معدل الـ Bugs في الجزء ده ثلاث اضعاف المعدل الطبيعي، وده بيأثر على تجربة المستخدم".

لما تربط الدين التقني بالارقام (وقت التسليم، معدل الاخطاء، تكلفة الصيانة) القرار بيبقى اسهل على الكل.

٦- استخدم اشارات الخطر

مش لازم تستنى لحد ما الدين يوقف الشغل. فيه اشارات بتقولك ان الدين بدا ياثر ولازم تاخد اجراء:

  1. بطء ملحوظ في التسليم: الفريق بياخد وقت اطول في حاجات كانت بتتعمل بسرعة.

  2. زيادة الـ Bugs: نفس المناطق في الكود بتطلع مشاكل متكررة.

  3. صعوبة الـ Onboarding: المطورين الجدد بياخدوا وقت طويل عشان يفهموا الكود.

  4. الخوف من التغيير: الفريق بيتجنب يعدل في اجزاء معينة عشان خايفين يكسروا حاجة.

لما تشوف اتنين او اكتر من الاشارات دي، ده وقت انك تزود نسبة الدين التقني في الـ Cycle الجاية.

٧- ماتعملشي "Big Bang Rewrite"

من اكبر الاخطاء هي انك توقف كل حاجة وتقول "هنعيد كتابة النظام من الاول". ده في الغالب بيفشل لانه بياخد وقت اطول من المتوقع، بيوقف تسليم القيمة للمستخدمين، وبيحبط الفريق. بدل كده، استخدم Strangler Fig Pattern، حسن النظام جزء جزء مع كل تسليم جديد. كده الدين بيقل تدريجيا من غير ما توقف الانتاج.

٨- خلي الفريق جزء من القرار

المطورين هم اكتر ناس فاهمين فين الدين التقني واي جزء فيه اخطر. اشركهم في تحديد الاولويات. ممكن تعمل "Tech Debt Voting" كل Quarter، كل مطور يرشح اكتر ثلاث حاجات محتاجة تتصلح ويشرح ليه. ده بيعمل حاجتين: بيطلع مشاكل انت ممكن ماكنتش شايفها، وبيخلي الفريق حاسس ان صوته مسموع.

٩- قيس وتابع

اللي مش بتقيسه مش بتقدر تحسنه. تابع مقاييس زي:

  1. Cycle Time: الوقت من بداية الشغل على Task لحد ما توصل للـ Production.

  2. Bug Rate: عدد الـ Bugs لكل Feature او لكل منطقة في الكود.

  3. Developer Experience Surveys: اسال الفريق كل Quarter عن رايهم في صحة الكود.

لو المقاييس دي بتتحسن مع الوقت، يبقى انت ماشي صح. لو بتسوء، يبقى محتاج تزود استثمارك في الدين التقني.

الموازنة بين Technical Debt والـ Features الجديدة مش قرار بتاخده مرة واحدة، ده عملية مستمرة. النجاح فيها بيعتمد على ثلاث حاجات: نظام تصنيف واضح للدين، نسبة ثابتة متفق عليها للصيانة، وتواصل مستمر مع الـ Stakeholders بلغة البيزنس مش لغة الكود. لما تعمل الثلاث حاجات دي، الفريق هيفضل سريع ومنتج من غير ما الكود يتحول لكابوس صيانة.

أسئلة ذات صلة

إزاي أقول "لأ" لمديري بحيث ماعملشي مشكلة؟

الفكرة مش انك تقول لأ وخلاص لما مديرك يطلب منك حاجة فهو عنده شغل محتاج يخلص لو قلت لأ وسكت يبقى سبته في نفس المشكلة من غير حل لكن لو رفضت ووضحت السبب واقترحت بديل هيشوفك بتساعده مش بتتهرب تعلمل كدة ازاي بقي: ١- ارفض الطلب مش الشخص يعني وضح بانك فاهم…

١٣ أكتوبر ٢٠٢٦
إزاي أتعامل مع Stakeholders لما يكون عندهم توقعات عكس بعض؟

التعامل مع أصحاب المصلحة (Stakeholders) اللي عندهم توقعات متعارضة هو واحد من أكتر التحديات اللي بتواجه أي حد في دور قيادي أو إداري سواء كنت Product Manager أو Project Manager أو حتى مؤسس شركة. الموضوع مش بس إنك "ترضي الكل"، لأن ده في الغالب مستحيل. ا…

٤ أكتوبر ٢٠٢٦
ازاي امسك فريق فيه اشخاص عندهم خبرة اكتر مني؟

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

٦ أكتوبر ٢٠٢٦

لم تجد إجابة على سؤالك؟

اطرح سؤالك وسأجيبك شخصيًا خلال ٤٨ ساعة

اسأل سؤالك الآن