لقد قمت بمراجعة الكود الذي أنتجه الذكاء الاصطناعي لفريقي. إليكم ما وجدناه.

استخدم فريقي الذكاء الاصطناعي لبناء الكود بسرعة قياسية. لقد أطلقنا الميزات في ثلث الوقت المعتاد. بدت سرعة إنجازنا رائعة، ووصلت نسبة تغطية الاختبارات لدينا إلى 91%.

ثم اصطدمنا بحائط مسدود.

واجهنا أخطاءً في بيئة الإنتاج (production bugs) كان من الصعب إصلاحها. استغرقت عملية إعادة هيكلة (refactor) بسيطة أربعة أسابيع بدلاً من أربعة أيام. أخبرني موظف جديد أن الكود كان نظيفاً ولكن من المستحيل فهمه.

قضينا ثلاثة أسابيع في مراجعة قاعدة الكود (codebase). وجدنا ديوناً تقنية (technical debt) لم يتمكن أي ماسح ضوئي من اكتشافها. كانت هذه الديون معمارية، وسلوكية.

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

والنتيجة هي كود صحيح محلياً ولكنه هش عالمياً.

وجدنا أربعة أنماط محددة:

  1. حالات الحواف الخفية (Hidden Edge Cases) يكتب الذكاء الاصطناعي كوداً يجتاز الاختبارات التي تقدمها له. لكنه ليس جيداً في كتابة اختبارات لأخطائه الخاصة.
  • الحل: يجب على المهندس شرح الكود لزميل له دون النظر إليه. إذا لم يتمكن من شرحه، فلا يمكنه دمجه (merge).
  1. مسرحية تغطية الاختبارات (Test Coverage Theater) يولد الذكاء الاصطناعي اختبارات تغطي الكود الموجود بالفعل. لكنه لا يكتب اختبارات لكيفية السلوك الفعلي الذي يجب أن يعمل به النظام.
  • الحل: يجب أن تجتاز كل مجموعة اختبارات ناتجة عن الذكاء الاصطناعي مراجعة عدائية (adversarial review). يجب على مهندس ثانٍ محاولة كسر الكود.
  1. الاقتران غير المرئي (Invisible Coupling) يضيف الذكاء الاصطناعي تبعيات (dependencies) لحل الطلب بسرعة. قد يدمج منطق الإشعارات في وحدات الفوترة أو المستخدم الخاصة بك، مما يجعل من المستحيل فصل الخدمات لاحقاً.
  • الحل: يجب على مهندس خبير (senior engineer) الموافقة على أي تبعية جديدة يقدمها الذكاء الاصطناعي.
  1. معالجة سطحية للأخطاء (Shallow Error Handling) غالباً ما يكتب الذكاء الاصطناعي كتل أخطاء (error blocks) تبدو كاملة ولكنها تفشل في التعامل مع أعطال النظام الحقيقية.
  • الحل: نستخدم اختبار التغيير (change test). نقيس عدد الملفات التي تتعطل عند إجراء تغيير صغير واحد. التأثير العالي يعني اقتراناً عالياً.

الذكاء الاصطناعي ليس العدو. يجب عليك معاملة الذكاء الاصطناعي كمهندس مبتدئ (junior engineer). يجب عليك تقديم التوجيه، ووضع التوقعات، واستخدام حكمك الخاص لتجاوز المخرجات.

الأدوات ممتازة في أداء المهام، لكنها ليست ممتازة في أداء الوظيفة.

المصدر: https://dev.to/emilywoodsnyc/i-spent-3-weeks-auditing-my-teams-ai-generated-code-here-is-what-we-found-1kj5

مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi