غطّيتَ الأفكار. حان وقت فعل الشيء.
هذا الدرس يحاكي الدرس 1.10 والدرس 2.8: لا نظرية جديدة، مجرد تطبيق عملي تُستخدَم فيه كل خطوة من المستوى الثالث مرة واحدة على الأقل. افتح مشروعًا حقيقيًا في Claude على سطح المكتب. اكتب الأسئلة فعليًا.
اختر codebase
تريد مشروعًا يحوي بضعة ملفات على الأقل وبعض البنية الفعلية. اختر واحدًا من:
- مشروع
my-siteالخاص بك — المشروع الجاري في هذه الدورة بأكملها. فيه frontend (index.html، وcontact.html)، وbackend صغير (server/)، وimport graph حقيقي تتتبّعه. سنستخدمه كمثال عملي في الأسفل، فهو أسهل مكان للبدء. - مشروع من فريقك — إن كان لديك وصول إلى codebase حقيقي لم تقرأه حقًا من قبل، فهذا مثاليّ.
- مشروع مفتوح المصدر من GitHub — أفضل حتى للتدريب، لأن لا شيء فيه مألوف. بعض المشاريع الصغيرة الجيدة: موقع ثابت، أو command line tool، أو سكربت Python استخدمته. اختر شيئًا دون نحو 50 ملفًا لهذا الدرس. (تستطيع تناول الأكبر لاحقًا — Claude يتوسّع أبعد مما سيفعله هذا التمرين.)
للعمل على مشروع مفتوح المصدر، ستحتاج إلى نسخة منه على حاسوبك أولًا. لستَ بحاجة إلى حفظ أي أمر تنزيل — فقط اسأل Claude في المحادثة:
clone the GitHub repo <paste-the-repo-url> into a new folder and open it
ثم وجّه Claude إلى أي مجلد اخترته — my-site الخاص بك، أو مشروع فريقك، أو المشروع الذي استنسختَه للتوّ. خُذ نفسًا. أنت على وشك أن ترسم خريطة codebase، من طرف إلى طرف، في خمسة أسئلة.
الخطوة 1 — التوجّه
السؤال الأول الذي تطرحه دائمًا. لا تُفرِط في التفكير فيه:
what is this project? Read README.md and the top-level files, and give me a short summary.
راقب الـ turn loop التي تعلّمتها في الدرس 1.4: تفكير ← قراءة الملفات ← إجابة. سيقرأ Claude الـ README، ويلقي نظرة على package.json أو ما يعادله، ويخبرك بـ:
- ما هو المشروع.
- أي لغة وأي framework يستخدم.
- كيف تشغّله.
- شكل بنية المجلدات.
ذلك هو توجّهك. لم تعد تحدّق في غريب.
الخطوة 2 — ملف واحد، مسؤول عنه بحدّة
اختر من الإجابة ملفًا يبدو مثيرًا للاهتمام. الملف الذي ستكون أكثر فضولًا حياله. (في my-site، ملف الـ backend الذي يقف خلف الـ contact form خيار جيد.) الآن استخدم الخطوة من الدرس 3.2:
walk me through server/index.js. What does it do, and how is it structured?
أنت تنتقل من رؤية على ارتفاع 30 ألف قدم إلى مبنى واحد على مستوى الأرض. اقرأ إجابة Claude بعناية — ينبغي أن تعرف الآن، في جملة أو جملتين، ما وظيفة ذلك الملف في المشروع.
الخطوة 3 — symbol واحد، بالاسم
في تلك الإجابة، سترى أسماء functions. اختر واحدًا وظيفته غير واضحة. (في my-site، handleContact خيار جيد — إنها الـ function التي تصطدم بها الـ contact form.) الآن طبّق الدرس 3.3:
explain handleContact. What does it do, and what does it call?
لم تَعُد بحاجة إلى معرفة مكانه. تعرف اسمه فحسب. لاحظ كم ينحدر الفضول بطبيعية من ملف ← function ← استدعاء.
الخطوة 4 — تتبّع
اختر أكثر استدعاء مثير للاهتمام في إجابة تلك الـ function — في my-site، handleContact يستدعي sendNotification — وتتبّعه. استخدم الدرس 3.4:
where is sendNotification defined, and where is it called from? Trace it both ways.
الآن أنت تبني خريطة ذهنية حقيقية. ستستردّ شيئًا مثل: «مُعرَّفة في server/email.js؛ ومُستدعاة مرة واحدة، بواسطة handleContact في server/index.js، مباشرةً بعد حفظ الرسالة».
في أربعة أسئلة، انتقلتَ من «لم أرَ هذا الـ repo قط» إلى «أستطيع رسم تخطيط لكيفية عمل هذه الشريحة منه». كان هذا يستغرق نصف يوم.
الخطوة 5 — تحقّق
الآن تختبر الإجابات تحت الضغط. اختر أكثر ادعاء حامل للأثقال من أي من ردود Claude — «sendNotification تُستدعى من server/index.js» أو «الرسالة تأتي من req.body». طبّق الدرس 3.7:
quote the exact line where sendNotification is called in server/index.js.
ثم افتح server/index.js — انقر عليه في لوحة الملفات في Claude، أو افتحه في محرّرك — وتأكد من أن السطر موجود فعلًا هناك، ويقول ذلك فعلًا.
إن صحّ: تستطيع الوثوق بالصورة الأوسع. إن لم يصحّ: اطلب من Claude أن ينظر مرة أخرى، وأخبره بما وجدت. هذه هي اللحظة التي تتوقف فيها عن كونك شخصًا يقرأ مع Claude وتبدأ بكونك شخصًا يقرأ مع Claude جيدًا.
اختياري — الخطوات الإضافية
لديك وقت. جرّب واحدة من هذه:
اقرأ خطأً. ابحث عن طريقة لجعل المشروع يتعطّل — اطلب من Claude إدخال خطأ مطبعي صغير، أو شغّل السكربت الخاطئ. أمسك الخطأ الناتج، والصقه في المحادثة (الدرس 3.5)، وراقبه يترجم.
اقرأ الـ history. اختر أي ملف كنتَ تنظر إليه واسأل (الدرس 3.6):
what has changed in this file in the last few months, and why?
ستحصل على جولة في تطوّر الملف — أحيانًا أكثر كشفًا من الملف نفسه.
حين تنتهي
أغلق المشروع وانظر حولك. المشروع الذي كان غير مألوف قبل 20 دقيقة صار له شكل الآن. لا تستطيع رسمه كله، لكنك تستطيع رسم الشريحة التي بحثتَ فيها — بدقّة، وفيها أسماء ملفات حقيقية وfunctions حقيقية.
ذلك هو الفوز. ليس «أفهم الـ codebase كله». فهذا هدف غير موجود. الهدف الحقيقي هو «أستطيع الإجابة عن أي سؤال محدد حول هذا الـ codebase، بالقراءة مع Claude». وأنت تستطيع.
ما التالي
المستوى الرابع: ابنِ مع Claude. تُنزَع العَجَلات المساعِدة من جديد، وهذه المرة تُنزَع بحقّ — ستُجري أول تغيير حقيقي على codebase. كل ما تعلّمته للتوّ عن القراءة هو الأساس لتغيير الأشياء جيدًا. إن استطعتَ قراءته، تستطيع تغييره. وإن لم تستطع قراءته، فلا تفعل.