ما تتعلّم من كورس الجافا وما تتخطّى

مقال مجاني 6 دقيقة

مقدمة

الدرس الذي فات وصّلك لكورس الجافا (21 ساعة، مجاناً على قناتي). وهسا السؤال العملي: 21 ساعة كثير — كلها لازمة؟

الجواب الصريح: لأ. كلها مفيدة، لكن مش كلها بنفس الأهمية إلك كمؤتمت.

في أجزاء ستستخدمها بكل ملف تكتبه بباقي الكورس. وفي أجزاء ستشوفها مرة بالسنة. والفرق بينهم يوفّر عليك أسابيع.

هذا الدرس هو الخريطة.

تحذير
لكن تنبيه مهم قبل أن نبدأ: "تتخطّى" هون معناها "مرّ عليها بسرعة"، مش "لا تشوفها." شوف كل الكورس — لكن بسرعتين مختلفتين. الأجزاء الأساسية توقف فيها وتكتب الكود؛ الأجزاء الثانوية تتفرّج عليها بسرعة حتى تعرف إنها موجودة، وبترجعلها عندما تحتاجها.

الأهداف التعليمية

بنهاية هذا الدرس، ستكون قادراً على:

  • تعرف أي أجزاء الجافا أساسية إلك
  • توزّع وقتك على 21 ساعة بذكاء
  • تعرف علامات إنك لا تحتاج تتعمّق أكثر
  • تتجنّب الفخ الأشهر بتعلّم لغة برمجة

المستوى الأول: أساسي — توقّف واكتب

هؤلاء ستستخدمهم بكل سطر بباقي الكورس:

1. الفئات والكائنات (Classes & Objects)

ليش أساسي؟ الـ Page Object Model كله مبني على هذا. كل صفحة بمشروعك ستكون كلاس، وكل صفحة رح تُنشأ ككائن.

public class LoginPage {        // ← كلاس
    private static final By EMAIL = By.id("email");

    public void login(String email, String password) { /* ... */ }
}

LoginPage loginPage = new LoginPage();  // ← كائن

2. البرمجة الكائنية — الوراثة والتغليف

ليش أساسي؟ BasePage و BaseTest هما وراثة بالكامل.

public abstract class BasePage { /* دوال مشتركة */ }

public class CartPage extends BasePage { /* ← وراثة */ }

والتغليف (private مقابل public) هو الذي يجعل الصفحة تخفي محدداتها وتعرض أفعالها بس.

3. بنية البيانات — القوائم والـ Maps

ليش أساسي؟ كل مرة تلاقي عدة عناصر، ستشتغل بـ List. وإدارة الكوكيز والإعدادات بـ Map.

List<WebElement> rows = driver.findElements(By.cssSelector(".item-row"));
Map<String, String> cookies = new HashMap<>();

4. الاستثناءات (Exceptions)

ليش أساسي؟ نص شغل المؤتمت هو التعامل مع أخطاء متوقّعة. StaleElementReferenceException و TimeoutException و NoSuchElementException — ستتعامل معهم كل يوم.

try {
    driver.switchTo().alert().accept();
} catch (NoAlertPresentException ignored) {
  // لا يوجد تنبيه — طبيعي
}

5. الدوال والمعاملات وقيم الرجوع

الأساس المطلق. كل سطر تكتبه هو دالة بتنادي دالة.


المستوى الثاني: مفيد — مرّ عليه بتركيز متوسط

الموضوع متى ستحتاجه
الـ Enums Driver Factory والبيئات — قسم 11 و 14
الـ Records كائنات بيانات الاختبار — قسم 13
الـ Generics الأساسيات List<String> و ThreadLocal<WebDriver>
الـ Streams الأساسيات تحويل قوائم العناصر لنصوص
الواجهات (Interfaces) Browser Managers و Supplier
الـ Lambda WebDriverWait و Supplier
نصيحة
الـ Lambda والواجهات الوظيفية تستاهلوا وقت زيادة — لأنه wait.until(d -> ...) و Supplier<WebDriver> ستشوفهم كثير. لكن لا تحتاج تفهم النظرية العميقة، لكن تعرف تقرا وتكتب lambda بسيطة.

المستوى الثالث: مرّ عليه بسرعة

هؤلاء موجودين بالكورس، وممتازين للفهم العام — لكن لن تستخدمهم كثير:

  • إدارة الذاكرة العميقة (Stack مقابل Heap بالتفصيل) — كويس تعرف الفكرة، لكن لا تحتاج التفاصيل
  • عمليات النصوص المتقدمةStringBuilder وتفاصيل الأداء
  • الـ Streams المعقّدةflatMap و Collectors المتقدمة
  • الـ Threads اليدوية — TestNG يدير التوازي عنك
  • الوراثة المتعدّدة المستويات — بالأتمتة لا تزيد عن مستويين
مهم
لا تتجاهلهم كلياً. افهم إنهم موجودين وماذا يعملوا — وهذا يكفي. لأنه يوم لا تحتاج flatMap، تعرف إنها موجودة وتذهب تدوّر عليها. لكن لا تصرف يومين عليها الآن.

توزيع الوقت المقترح

المستوى من الـ 21 ساعة الطريقة
أساسي (1-5 فوق) ~13 ساعة توقّف، اكتب، كرّر
مفيد ~6 ساعات تركيز متوسط، اكتب المهم
بسرعة ~2 ساعات مشاهدة سريعة

وأضف ضعف الوقت للكتابة الفعلية. يعني 21 ساعة فيديو ≈ 40-45 ساعة شغل حقيقي.

نصيحة
بمعدل ساعتين يومياً، هذا ثلاث أسابيع. وهذا استثمار حقيقي — لكن هو الاستثمار الذي بيفتحلك 32 ساعة الباقية من الكورس.

الفخ الأشهر بتعلّم لغة برمجة

تحذير
الفخ: إنك تحاول تفهم كل شيء 100% قبل لا تكمّل. ستصل لموضوع (غالباً الـ Generics أو الـ Streams) ولا تفهمه تماماً. وتقعد عليه ثلاث أيام. وبتحبط. وتترك. الطريقة الصح: افهم 70% وكمّل. ليش؟ لأنه فهم البرمجة تراكمي ودائري — سترجع للـ Generics بعد لا تشوف ThreadLocal<WebDriver> بمشروع حقيقي، وفجأة بتفهمها. لأنك شفتها بسياق حقيقي مش بمثال مجرّد. الفهم الكامل يأتي من الاستخدام، مش من التكرار.

علامات إنك جاهز ترجع

لا تحتاج تكون خبير. تحتاج تجاوب "أه" على هؤلاء:

  • أستطيع أعمل كلاس فيه متغيرات ودوال، وأنادي عليه من كلاس آخر
  • بفهم extends وماذا يصير عندما كلاس يورث من آخر
  • بفهم الفرق بين private و public وليش
  • أستطيع أعمل List و Map، وأضيف عليهم وأمرّ عليهم بحلقة
  • بفهم try/catch ومتى أستخدمه
  • أستطيع أقرا كود جافا مكتوب من غيري وأفهم ماذا يعمل
  • بفهم ما هي الواجهة (interface) وليش موجودة
  • أستطيع أكتب lambda بسيطة زي x -> x > 5

سبعة من ثمانية؟ ارجع كمّل. أقل؟ راجع الجزء الناقص بس.

مهم
البند السادس هو أهم واحد بالقائمة: "أستطيع أقرا كود مكتوب من غيري." لأنه هذا ما ستعمله بباقي الكورس — تقرأ الكود الذي أنا بكتبه وبتفهمه. والقراءة أسهل من الكتابة، فإذا تستطيع أن تقرا، تستطيع أن تكمّل وتتعلّم الكتابة بالممارسة.

خلاصة الدرس

  1. 21 ساعة كلها مفيدة، لكن مش كلها بنفس الأهمية.

  2. "تتخطّى" معناها "مرّ بسرعة" مش "لا تشوف" — شوف كل شي، بسرعتين مختلفتين.

  3. خمسة أساسيات: الكلاسات، البرمجة الكائنية، بنية البيانات، الاستثناءات، والدوال.

  4. الـ POM كله كلاسات، والـ BasePage كلها وراثة — لهذا السبب هؤلاء أساسيين.

  5. الـ Enums والـ Records والـ Lambda مفيدة — ستشوفهم بأقسام محدّدة.

  6. إدارة الذاكرة العميقة والـ Streams المعقّدة: بسرعة — اعرف إنهم موجودين وبس.

  7. 21 ساعة فيديو ≈ 40-45 ساعة شغل — ثلاث أسابيع بساعتين يومياً.

  8. الفخ الأشهر: محاولة فهم كل شيء 100% قبل الاستمرار.

  9. افهم 70% وكمّل — الفهم الكامل يأتي من الاستخدام مش من التكرار.

  10. أهم علامة جهوزية: تستطيع أن تقرا كود مكتوب من غيرك.


في الدرس الجاي: آخر درس بهاد القسم — الجافا اللي فعلاً بتستخدمها بالأتمتة، بأمثلة من الكود اللي رح نكتبه بباقي الكورس.

يلا، نلتقي بالدرس الجاي!