تجاوز إلى المحتوى
العربية
المستوى 4: اقرأ مع Claude
الدرس 8 · +30 XP

قراءتك الحقيقية الأولى

غطّيتَ الأفكار. حان وقت فعل الشيء.

هذا الدرس يحاكي الدرس 1.10 والدرس 2.8: لا نظرية جديدة، مجرد تطبيق عملي تُستخدَم فيه كل خطوة من المستوى الرابع مرة واحدة على الأقل. افتح terminal حقيقيًا. اكتب الـ commands فعليًا.

اختر codebase

تريد مشروعًا يحوي بضعة ملفات على الأقل وبعض البنية الفعلية. اختر واحدًا من:

  • مشروع تعمل عليه — حتى مشروع جانبي صغير يُحتسَب.
  • مشروع من فريقك — إن كان لديك وصول إلى codebase حقيقي لم تقرأه حقًا من قبل، فهذا مثاليّ.
  • مشروع مفتوح المصدر من GitHub — أفضل حتى للتدريب، لأن لا شيء فيه مألوف. بعض المشاريع الصغيرة الجيدة لاستنساخها: موقع ثابت، أو command line tool، أو سكربت Python استخدمته. اختر شيئًا دون نحو 50 ملفًا لهذا الدرس. (تستطيع تناول الأكبر لاحقًا — Claude يتوسّع أبعد مما سيفعله هذا التمرين.)

إن كنتَ ستذهب مع repo مفتوح المصدر، فاستنسخه إلى مجلد:

cd ~
git clone <some-repo-url> my-practice-repo
cd my-practice-repo

ثم شغّل Claude هناك:

claude

خُذ نفسًا. أنت على وشك أن تتعلّم codebase لم تره قط، في خمسة أسئلة.

الخطوة 1 — التوجّه

السؤال الأول الذي تطرحه دائمًا. لا تُفرِط في التفكير فيه:

ما هذا المشروع؟ اقرأ README.md والملفات في المستوى الأعلى، وأعطني تلخيصًا قصيرًا.
what is this project? Read README.md and the top-level files, and give me a short summary.

راقب الـ turn loop التي تعلّمتها في الدرس 2.4: تفكير ← tool ← خرج ← إجابة. سيقرأ Claude الـ README، ويلقي نظرة على package.json أو ما يعادله، ويخبرك بـ:

  • ما هو المشروع.
  • أي لغة وأي framework يستخدم.
  • كيف تشغّله.
  • شكل بنية المجلدات.

ذلك هو توجّهك. لم تعد تحدّق في غريب.

الخطوة 2 — ملف واحد، مسؤول عنه بحدّة

اختر من الإجابة ملفًا يبدو مثيرًا للاهتمام. الملف الذي ستكون أكثر فضولًا حياله. الآن استخدم الخطوة من الدرس 4.2:

اشرح لي src/<ذلك-الملف> خطوة بخطوة. ماذا يفعل، وكيف بُنِي؟
walk me through src/<that-file>. What does it do, and how is it structured?

أنت تنتقل من رؤية على ارتفاع 30 ألف قدم إلى مبنى واحد على مستوى الأرض. اقرأ إجابة Claude بعناية — ينبغي أن تعرف الآن، في جملة أو جملتين، ما وظيفة ذلك الملف في المشروع.

الخطوة 3 — رمز واحد، بالاسم

في تلك الإجابة، سترى أسماء functions أو components. اختر واحدًا وظيفته غير واضحة. الآن طبّق الدرس 4.3:

اشرح <اسم-الـ function>. ماذا تفعل، وماذا تستدعي؟
explain <function-name>. What does it do, and what does it call?

لم تَعُد بحاجة إلى معرفة مكانها. تعرف اسمها فحسب. لاحظ كم ينحدر الفضول بطبيعية من ملف ← function ← استدعاء.

الخطوة 4 — تتبّع

اختر أكثر استدعاء مثير للاهتمام في إجابة تلك الـ function — «إنها تستدعي processData()» — وتتبّعه. استخدم الدرس 4.4:

من أين تُستدعى processData، ومن أين يأتي دخلها؟ تتبّعها.
where is processData called from, and where does its input come from? Trace it.

الآن أنت تبني خريطة ذهنية حقيقية. ستستردّ شيئًا مثل: «تُستدعى من مكانين، كلاهما في src/pipeline/؛ دخلها يأتي من ملف إعدادات يُحمَّل عند بدء التشغيل».

في أربعة أسئلة، انتقلتَ من «لم أرَ هذا الـ repo قط» إلى «أستطيع رسم تخطيط لكيفية عمل هذه الشريحة منه». كان هذا يستغرق نصف يوم.

الخطوة 5 — تحقّق

الآن تختبر الإجابات تحت الضغط. اختر أكثر ادعاء حامل للأثقال من أي من ردود Claude — «هذه الـ function تُستدعى من pipeline.ts» أو «هذه القيمة تأتي من .env». طبّق الدرس 4.7:

اقتبس السطر الدقيق حيث تُستدعى processData في pipeline.ts.
quote the exact line where processData is called in pipeline.ts.

ثم افتح pipeline.ts (أو نفّذ cat عليه من terminal آخر) وتأكد من أن السطر موجود فعلًا هناك، ويقول ذلك فعلًا.

إن صحّ: تستطيع الوثوق بالصورة الأوسع. إن لم يصحّ: اطلب من Claude أن ينظر مرة أخرى، وأخبره بما وجدت. هذه هي اللحظة التي تتوقف فيها عن كونك شخصًا يقرأ مع Claude وتبدأ بكونك شخصًا يقرأ مع Claude جيدًا.

اختياري — الخطوات الإضافية

لديك وقت. جرّب واحدة من هذه:

اقرأ خطأً. ابحث عن طريقة لجعل المشروع يتعطّل — اكتب command خاطئًا، أو عدّل ملفًا لإدخال خطأ مطبعي، أو شغّل السكربت الخاطئ. أمسك الخطأ الناتج والصقه في Claude (الدرس 4.5). راقبه يترجم.

اقرأ الـ history. اختر أي ملف كنتَ تنظر إليه واسأل (الدرس 4.6):

ما الذي تغيّر في هذا الملف خلال الأشهر القليلة الماضية، ولماذا؟
what has changed in this file in the last few months, and why?

ستحصل على جولة في تطوّر الملف — أحيانًا أكثر كشفًا من الملف نفسه.

حين تنتهي

اخرج من Claude (Ctrl + C مرتين). انظر حولك. المشروع الذي كان غير مألوف قبل 20 دقيقة صار له شكل الآن. لا تستطيع رسمه كله، لكنك تستطيع رسم الشريحة التي بحثتَ فيها — بدقّة، وفيها أسماء ملفات حقيقية وfunctions حقيقية.

ذلك هو الفوز. ليس «أفهم الـ codebase كله». فهذا هدف غير موجود. الهدف الحقيقي هو «أستطيع الإجابة عن أي سؤال محدد حول هذا الـ codebase، بالقراءة مع Claude». وأنت تستطيع.

ما التالي

المستوى الخامس: ابنِ مع Claude. تُنزَع العَجَلات المساعِدة من جديد، وهذه المرة تُنزَع بحقّ — ستُجري أول تغيير حقيقي على codebase. كل ما تعلّمته للتوّ عن القراءة هو الأساس لتغيير الأشياء جيدًا. إن استطعتَ قراءته، تستطيع تغييره. وإن لم تستطع قراءته، فلا تفعل.