أحد أكبر التحولات التي نعيشها الآن هو أن البرمجة لم تعد "كتابة كود" بالمعنى القديم، بل أصبحت تصميم المشكلة + التحقق من الحل.
الذكاء الاصطناعي (LLMs) صار قادرًا على تنفيذ "قفزات" كبيرة داخل الكود بسرعة، لكن السر الحقيقي في النتائج الجيدة هو: Verification.
في السابق كان الجزء الأكبر من وقتنا يُصرف في كتابة الكود يدويًا. الآن، كثير من التنفيذ يمكن أن يقوم به الـLLM. لكن جودة المنتج تعتمد على قدرتك على: - تحديد ما معنى "صحيح" (Correctness) - تحويل ذلك إلى معايير نجاح واضحة - بناء اختبارات/تحقق يثبت أن النتيجة صحيحة
بعبارة واحدة: Verification > Vibes.
Karpathy يصف تحولًا سريعًا في أسلوبه (ومن خبرة كثير من الناس): - كنا نكتب غالبًا يدويًا مع autocomplete - ثم أصبحنا نوجّه النموذج بالكلام (English/Arabic) ونقوم بتعديلات محدودة
هذا قد "يجرح الـego" قليلًا، لكنه يمنحك قوة هائلة: القدرة على العمل على البرمجيات عبر code actions كبيرة.
الأخطاء اليوم ليست syntax errors غالبًا، بل أخطاء مثل أخطاء مطوّر مبتدئ متسرّع: - افتراضات خاطئة يمشي عليها النموذج بدون سؤال - تعقيد زائد وبناء abstractions منتفخة - ترك dead code - تعديل أشياء جانبية غير مطلوبة
الحل ليس أن نثق أكثر… بل أن نتحقق أكثر.
هذا تلخيص عملي للطريقة التي نعتمدها عند البرمجة مع LLM (من دليل "How we should write code with LLMs"):
بدل أوامر خطوة بخطوة، اكتب: - الهدف (Goal) - ما لن نفعله (Non-goals) - القيود (Security/Performance) - أمثلة input/output - Success Criteria (checkboxes)
اطلب من النموذج كتابة الاختبارات أولًا، لأن الاختبارات هي "عقد" السلوك.
ابدأ بحل بسيط صحيح، ثم حسّن الأداء مع الحفاظ على نفس السلوك.
اطلب مراجعة ثانية بسياق جديد لتصيد: - افتراضات خاطئة - bugs مفاهيمية - dead code - over-abstraction
ركز أنت على: - الحدود (boundaries) - الـinvariants - أسوأ failure modes - هل يوجد حل أبسط؟
يمكنك استخدام هذا القالب لتوجيه أي نموذج:
Context: ...
Goal: ...
Constraints: ...
Non-goals: ...
Success criteria:
- [ ] ...
Verification:
- [ ] tests/steps ...
Before coding:
- list assumptions
- ask clarifying questions if unclear
كلما زادت سرعة الإنتاج، يصبح الفهم هو عنق الزجاجة. لمقاومة ذلك: - اجعل PRs صغيرة - وثّق "لماذا" (Why/Tradeoffs/Assumptions) - خصص جلسة أسبوعية للتنظيف: حذف dead code وتبسيط التعقيد
البرمجة الحديثة بالذكاء الاصطناعي ليست "تفويض الكتابة" فقط. هي انتقال لدور جديد: مصمم مواصفات + مهندس تحقق + مراجع جودة.
إذا تريد، سأكتب المقال القادم كـ "مسار تعلم" من 4 مقالات: 1) Prompts عمليًا 2) أدوات (Tools) تساعدك تبني سير عمل 3) Tutorials تطبيقية (RAG / Agents) 4) News: كيف تتابع بدون ضجيج