/ تعلم

الدراسة في FreeCodeCamp

حصلتُ منذ أيام على شهادة مطوّر واجهات أمامية Front End Developer من طرف FreeCodeCamp. سأذكر هنا بعض النقاط المُختصرة عن محاولاتي السابقة في تعلم البرمجة، تجربتي مع المخيم والخطوات التي أنوي استكمالها.

علوم الحاسوب (والبرمجة على وجهٍ خاص) من المجالات التي تستهويني دراستها؛ والعمل والإنجاز في مضمارها منذ ما لا يقل عن عشر سنوات ربّما. رغم ذلك اتجهت دراستي الجامعية إلى هندسة الكهرباء؛ تناسبًا مع المُعدّل الذي حصّلته في الثانوية العامة - هذا من جهة، ومن جهة أخرى ضغط الأهل لعدم اختيار معهد متوسط لدراسة علوم الحاسوب بديلًا عن فرع الهندسة الوحيد المُتاح لي آنذاك، أقصد هندسة الكهرباء.

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

المشكلة الأولى كانت من أين أبدأ؟ وما هو التسلسل الصحيح للخطوات؟

منذ عدّة سنوات (بحدود عام 2012) كنتُ قد تعلّمت أساسيات HTML&CSS من موقع W3School، ما أعطاني القدرة على بناء صفحات شخصية بسيطة و إدخال بعض التعديلات على القوالب الجاهزة لمدوناتي، إلا أنني لم أتابع التعلّم وتوقفت عند هذا الحدّ. قد يعود السبب في ذلك إلى عدم رؤيتي لأفق واضح لدراستي؛ أقصد كيف يمكنني المتابعة وكيف يمكنني الاستفادة وتطبيق ما تعلمته (لم أكن أعرف مصادر أخرى أفضل من W3School!).
نفس السيناريو كان قد تكرّر معي قبل ذلك ببضعة سنوات، عندما قررتُ تعلّم فيجوال بسيك 6، فاشتريت كتابًا بثخانة ألف صفحة، قرأتُ ما يُقارب النصف منه، وأنجزت بعض الأكواد هنا وهناك قبل أن أتوقف مع بداية عام دراسي آخر.

كنتُ وحيدًا في محاولاتي تلك، لديّ وقت جيد للتعلّم، وموارد لا بأس بها، ولكني افتقدت التوجيه وشعرتُ بأنني في جزيرة منعزلة تمامًا، لا أحد آخر في هذا العالم يقوم بما أقوم به من محاولات، قد أكون المجنون الوحيد الذي يُفكر بأن يتعلم البرمجة بشكل ذاتي ومن مصادر مجانية!

أثناء عملي في حسوب قدّمت لي الشركة بعض الدورات المدفوعة - مجانًا في حسابي على Udemy، لكن تصادف ذلك مع ضغط كبير في العمل، بالإضافة إلى أن الدورات كانت من اختياري والذي لم يكن مُمنهجًا بشكل جيّد مرةً أخرى. فالدورات على يودمي متفاوتة الجودة بشكل كبير وتحتاج إلى بحث وتمحيص جيّد قبل شراء الدورة (رغم قيامك بذلك قد تتفاجئ بأن محتوى الدورة جاء مُخيبًا لتوقعاتك، وهذا طبيعي أو مفهوم من طرف مبتدئ قد لا يُجيد الاختيار لنفسه في هذه المرحلة).

شاهدتُ ثلاث دورات على يودمي، درستُ مساق HTML&CSS على Codecademy، اقتنيت كتاب SICP وبدأتُ بقرائته، لكن جميع هذه الخطوات كانت شبه عشوائية، غير مرتبة ضمن سياق متسلسل يدور حول هدف مُحدّد، وأخيرًا غير مدعومة بمشاريع تطبيقية كاملة.

FreeCodeCamp

أثناء تصفحي لتويتر في أحد الأيام صادفتُ هذه التغريدة:

واو! هذه هي الحالة تمامًا التي كنتُ أشعر بها! المصادر التي مررتُ بها كانت تعلمني أشياء بسيطة من قبيل تغيير لون الخلفية في CSS أو إضافة فقرة في HTML بعد ذلك أرى أنني لا زلتُ بعيد تمامًا عن بناء أي موقع حقيقي.

من باب الفضول اطلعتُ على بروفايل صاحب التغريدة Quincy Larson لأجده أستاذًا في موقع يُسمى FreeCodeCamp.org.

يُقدّم FreeCodeCamp ثلاثة مساقات / شهادات (سيتم إعادة ترتيب خطّة الدراسة في الموقع مع بداية العام القادم لتشمل خمسة مساقات /شهادات)، مرتبة بالنحو التالي: تطوير الواجهات الأمامية، إظهار Visualization البيانات، تطوير الواجهات الخلفية. جميع ذلك بالتركيز على مكتبات وتقنيات جافاسكربت، وبشكل مجاني تمامًا. يتطلب كل مساق إتمام عشرة مشاريع تقريبًا (يتم بناءها من الصفر) للحصول على الشهادة.

هنا بعض النقاط حول تجربتي الأولى

  • مساق الواجهات الأمامية مُقسّم إلى ثلاث أقسام مبتدئ، متوسط ومتقدّم.
  • المادة التعليمية بسيطة في الموقع، ولولا دراستي لأساسيات HTML&CSS في مواقع أخرى فلا أتوقع أنني سأكون جاهزًا لإنجاز مشاريع المساق بمجرد قراءة المادة العلمية التي يُقدّمها.
  • دروس جافاسكربت مُرفقة بروابط للاستزادة والتوسع من توثيق موزيلا لجافاسكربت. وهذه من النقاط التي أحببتها للغاية.
    في العموم كنتُ في السابق عندما أريد فهم شيء ما في أية لغة برمجة أبحث عن أية دروس متوفرة على الإنترنت وأهرب من التوثيق الرسمي للغة! بحجة أنه مكتوب للمبرمجين أو أنه يستخدم لغة صعبة الفهم. من خلال FCC أمضيت عشرات الساعات في قراءة توثيق MDN وقد كانت هذه التجربة من أمتع وأفيد النواحي.
  • يتطلب المساق حل 50 مسألة برمجية، يُقدّر الوقت المتوقع لحلها بـ 150 ساعة.
  • للحصول على الشهادة يجب إنجاز عشرة مشاريع، يُشرح فيها المطلوب بالإجمال ويُعطى الطالب الحرية الكاملة في استخدام التقنيات والمكتبات التي يرغب بها.
  • بدأتُ بدراسة المساق الأول في تاريخ 14 حزيران وتحصّلت على شهادته بتاريخ 12 إيلول، وكنتُ متفرغًا معظم الأيام بشكل جيّد للدراسة.
  • التجربة في العموم ممتعة ومفيدة، يزيد من زخمها منتدى نشط للنقاش بين الأعضاء حول مشاريعهم والمشاكل التي يواجهونها، بالإضافة إلى مدونة المخيم على منصة Medium والتي تنشر مقالات ودروس جيّدة.

نقطة القوة في FCC هي التسلسل الممنهج للمفردات الدراسية، أي التنظيم الأكاديمي الذي سيُعطيه لرحلتك في تعلّم البرمجة، بالإضافة إلى المشاريع الحقيقية التي سيُطلب منك كتابتها.

المخيم بحدّ ذاته ليس مكانًا للتعلّم، المادة التعليمية فيه بسيطة وغير كافية، وأي مبتدئ سيشعر بالضياع معها، لذا الوصفة الأفضل في اعتقادي هي تحديد مصادر للتعلّم والسير وفق خطة المخيم لبناء مشاريعه وتحصيل شهاداته.

خلال المساق الأول اعتمدت على المصادر التي سبق وأن ذكرتها هنا؛ دورات في تطوير الويب على يودمي، Codecademy ثم DOM. لكن فيما يتعلق بالمساقين القادمين فقد سجّلت بموقع Treehouse لإعتماده كمصدر تعليمي إلى جانب FCC.

من خلال Treehouse أنوي دراسة مساقهم Full Stack JavaScript إلى جانب بعض التقنيات الأخرى المطلوبة من طرف FCC (مثل sass، D3، React إلخ). اختياري لهذا المصدر جاء بعد قراءة نقاشات مطولة في منتدى FCC وتجربة الموقع إلى جانب مواقع أخرى، كما أن اشتراكه الشهري يأتي بتكلفة معقولة (25$ شهريًا)، في العموم المصادر الجيّدة ليست بالقليلة أو النادرة.

يمكنكم الإطلاع على المشاريع التي أنجزتها خلال مساق تطوير الواجهات الأمامية من خلال هذا الرابط.